一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

MySQL中数据库的备份和恢复命令总结

时间:2013-02-28 编辑:简简单单 来源:一聚教程网

 先来讲述一下利用mysqldump备份


SQL 来备份 MyISAM 表:

 代码如下 复制代码

/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false


--triggers -R --hex-blob -x db_name > db_name.sql

使用以下 SQL 来备份 Innodb 表:

 代码如下 复制代码

/usr/local/mysql/bin/mysqldump -uyejr -pyejr --default-character-set=utf8 --opt --extended-insert=false


--triggers -R --hex-blob --single-transaction db_name > db_name.sql


接着再讲mysqldump还原备份的数据


mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。

•直接用 mysql 客户端
例如:

 代码如下 复制代码

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

•用 SOURCE 语法
其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如:

 代码如下 复制代码

SOURCE /tmp/db_name.sql;

这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。


可能大家还会知道一个命令mysqlhotcopy下面我也简单讲述一下

mysqlhotcopy 支持一次性拷贝多个数据库,同时还支持正则表达。以下是几个例子:

 代码如下 复制代码
root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name /tmp

(把数据库目录 db_name

拷贝到 /tmp 下)

 代码如下 复制代码
root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name_1 ... db_name_n /tmp
root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr db_name./regex/ /tmp

更详细的使用方法请查看手册,或者调用下面的命令来查看 mysqlhotcopy 的帮助:

 代码如下 复制代码
perldoc /usr/local/mysql/bin/mysqlhotcopy

注意,想要使用 mysqlhotcopy,必须要有 SELECT、RELOAD(要执行 FLUSH TABLES) 权限,并且还必须要能够有读取

datadir/db_name 目录的权限。

mysqlhotcopy还原

mysqlhotcopy 备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld 指定的 datadir (在这里是

/usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例:

 代码如下 复制代码
root#cp -rf db_name /usr/local/mysql/data/
root#chown -R nobody:nobody /usr/local/mysql/data/

 (将 db_name 目录的属主改成 mysqld )

好了其它的像sql语句的这里就不讲述了,大家可百度搜索。


利用linux中的shell命令

 代码如下 复制代码
shell> mysqldump --quick db_name | gzip > db_name.contents.gz

(该例子中创建的文件是压缩格式)。

 恢复/转移到另一台的命令如下:

 代码如下 复制代码
shell> gunzip < db_name.contents.gz | mysql db_name

以上命令,适用于*nix 操作系统的机器

热门栏目