MySQL之mysqldump的使用
2021-10-11 本文已影响0人
君子愁
1.备份指定库
mysqldump -uroot -p123456 test >/opt/mysql_bak.sql # 这种直接备份oldboy库下的所有表,不会有创建oldboy库的语句
mysqldump -uroot -p123456 -B test>/opt/mysql_bak.sql # 这种直接备份oldboy库下的所有表,会有创建oldboy库的语句,恢复的时候,不用指定库进行恢复
mysql -uroot -p123456 test </opt/mysql_bak.sql #指定库进行数据恢复
mysql -uroot -p123456 </opt/mysql_bak.sql #不指定库进行数据恢复
mysqldump -uroot -p123456 -B oldboy|gzip >/opt/mysql_bak.sql.gz #将备份内容进行压缩备份
mysqldump -uroot -p123456 -B oldboy oldboy2 >/opt/mysql_bak.sql #同时备份多个库
{dir}_flag的区别
2.备份指定表
mysqldump -uroot -p123456 oldboy test|gzip >/opt/mysql_bak.sql.gz #备份oldboy库里的test表
mysqldump -uroot -p123456 oldboy test test2|gzip >/opt/mysql_bak.sql.gz #备份oldboy库里的test表和test2表
3.备份表结构和表内容
mysqldump -uroot -p123456 -d oldboy test |gzip >/opt/mysql_bak.sql.gz #备份oldboy库里的test表结构
mysqldump -uroot -p123456 -t oldboy test |gzip >/opt/mysql_bak.sql.gz #备份oldboy库里的test表数据,创表语句不会备份
4.完整备份
mysqldump -uroot -p123456 -A -B -F --events --master-data=1|gzip >/opt/mysql_bak.sql.gz #备份所有库
-A是所有库
-B指定备份哪个库,带有创建库的语句
-F是刷新binlog文件,创建新的binlog文件
--master-data=1记录备份是备份到哪个文件哪个位置
--master-data:mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从master端复制binlog。默认情况下这个值是1
当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个语句是被注释的状态。(就是记录导出的数据的binlog文件的位置)
mysqldump -uroot -p123456 --single-transaction -A -B -F --events --master-data=1|gzip >/opt/mysql_bak.sql.gz
--single-transaction 用于innodb引擎,保证mysqldump数据的时候,数据的一致性,一定加
--events #==》转储事件,把events警告事件取消显示,就是把warning事件忽略
--flush-privileges #==》刷新数据库更新
--triggers 触发器
--routines 存储过程
6.适合InnoDB引擎的备份语句
mysqldump -uroot -p'123456' --all-databases --flush-privileges --single-transaction \
--master-data=1 --flush-logs --triggers --routines --events \
--hex-blob > /opt/mysql_bak.sql
7.gtid模式下备份
1.备份所有库
/usr/local/mysql/bin/mysqldump -uroot -p123456 --single-transaction --master-data=2 --set-gtid-purged=OFF -A --flush-logs --triggers --routines --events --flush-privileges > /root/1.sql
#加了--set-gtid-purged=OFF时,会记录binlog日志,如果不加,不记录binlog日志,所以在我们做主从用了gtid时,用mysqldump备份时就要加--set-gtid-purged=OFF,否则你在主上导入恢复了数据,主没有了binlog日志,同步则不会被同步。
恢复语句如下
/usr/local/mysql/bin/mysql -uroot -p123456 </root/1.sql
2.备份一个库
#备份一个mysql这个数据库,但是这个恢复的时候需要主要以,需要指定mysql这个数据库。因为这样备份的备份数据,是没有创建mysql这个数据库的语句的
/usr/local/mysql/bin/mysqldump -uroot -p123456 --single-transaction --master-data=2 --set-gtid-purged=OFF mysql > /root/1.sql
恢复语句如下:
/usr/local/mysql/bin/mysql -uroot -p123456 mysql </root/1.sql
如果想恢复的时候不需要指定数据库,可以加上-B参数,备份的时候(加上-B,恢复的时候,如果没mysql这个数据库,会自动创建这个数据库)
/usr/local/mysql/bin/mysqldump -uroot -p123456 --single-transaction --master-data=2 --set-gtid-purged=OFF -B mysql > /root/1.sql
/usr/local/mysql/bin/mysqldump -uroot -p123456 --single-transaction --master-data=2 --set-gtid-purged=OFF --databases mysql > /root/1.sql
#--databases 作用跟 -B一样
恢复语句如下
/usr/local/mysql/bin/mysql -uroot -p123456 </root/1.sql
3.备份一个表
#备份mysql这个库的user表
/usr/local/mysql/bin/mysqldump -uroot -p123456 --single-transaction --master-data=2 --set-gtid-purged=OFF mysql user> /root/1.sql
恢复语句如下,需要指定库
/usr/local/mysql/bin/mysql -uroot -p123456 mysql </root/1.sql