MySQL 备份与恢复mysqldump

2014-11-24 17:40:23 · 作者: · 浏览: 0

备份:
备份一个数据库(shell中执行,下同):
mysqldump -uusername -ppassword -hhostname --databases db_name > /path/db_name.sql


备份多个数据库
mysqldump -uusername -hhostname -ppassword --databases db1_name db2_name db3_name >/path/multidb_name.sql


备份所有数据库
mysqldump -uusername -hhostname -ppassword --all-databases >/path/alldb_name.sql


仅仅备份数据结构


mysqldump -uusername -hhostname -ppassword --no-data db_name >/path/db_name.sql


基于事务的备份

mysqldump -uuser -hhostname -ppassword --opt --single-transaction --default-character-set=utf8 --triggers db_name >/path/db_name.sql


在线备份
1 mysqldump -uuser -ppassword -hhostname --opt --single-transaction --default-character-set=utf8 --master-data=1 --flust-logs db_name > /path/db_name.sql


压缩备份
mysqldump -uusername -hhostname -ppassword db_name |gzip -9 >/path/db_name.gz


常用选项:
--databases db_name
--all-databases
--single-transaction(适用事务表)
--master-data(热备份)
--trigers(同时导出触发器,该选项默认启用,用--skip-trigers禁用他)
--routines,-R(导出存储过程以及自定义函数)
--opt(这只是一个快捷选项,等同于同时添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset
选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。注意,如果运行 mysqldump 没有指定 --quick 或 --opt 选项
,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。)
--no-data,-d(不导出任何数据,只导出数据库表结构)
--no-create-info,-t(只导出数据,而不添加CREATE TABLE语句)
--lock-tables(它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single
-transaction 选项。)
--hex-blob(使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB。)
--extended-insert = true|false(默认情况下,mysqldump 开启 --complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。)


MySQL还原:
普通备份还原


mysql db_name

压缩备份还原


gunzip

MySQL中还原
source /root/data.back


将数据库转移到新服务器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename


例子
恢复数据库必须指定一个已经存在的数据库 db2
[root@stu188 bin]# mysql -u root -p123 db2 < all.sql
mysql> source /root/db1.sql;(在mysql中进行恢复)


#备份db1里的t7表
[root@stu12 mysql]# mysqldump -u root -p123 db1 t7 > t7.sql
#恢复db1里的t7表
[root@stu12 mysql]# mysqldump -u root -p123 db1 t7 < t7.sql
#备份所有库
[root@stu12 mysql]# mysqldump -uroot -p123 --all-database > all.sql
#恢复所有库
[root@stu12 mysql]# mysqldump -uroot -p123 < all.sql
#备份db1里面的tb1和tb2的表
[root@stu12 mysql]# mysqldump db1 tb1 tb2 -u root -p123 > biao.sql


相关阅读: