MySQL 备份与恢复mysqldump


备份:
备份一个数据库(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 </path/db_name.sql  #此时的数据库必须事先手动创建好,然后在恢复

压缩备份还原

gunzip </path/db_name.gz | mysql -uusername -ppassword -hhostname db_name

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

Linux下通过mysqldump备份MySQL数据库成sql文件

Linux中使用mysqldump对MySQL数据库进行定时备份

mysqldump缺失-q参数导致MySQL被oom干掉

mysqldump和LVM逻辑卷快照

MySQL备份方案-->(利用mysqldump以及binlog二进制日志)

[MySQL] 用mysqldump制作文本备份 

相关内容