mysqldump总结

  1. 原理
  2. 参数
  3. 优缺点
  4. 备份时间
  5. 问题

原理

操作

打开general log,在一个基本没有数据,没有连接的测试库里面执行
(方便查看)

  mysql> set global general_log=on;

  mysql> show variables like '%general_log_file%';

查看 general log

备份原理

  1. flush tables (如果有大表ddl,慢查询,大update会导致失败,超时。本部操作是为了避免较长的事务操作造成FLUSH TABLES WITH READ LOCK操作迟迟得不到锁,但同时又阻塞了其它客户端操作。)
  2. flush tables with read lock
  3. 设置 session 隔离级别 RR
  4. begin transaction (开启一个一致性快照读)
  5. show @@global gtid_executed (得到gtid信息)
  6. show master status (得到binlog 位置信息)
  7. 解锁 unlocktables
  8. show databases
  9. save point
  10. 备份数据(show create table test 备份表结构,select * from test备份数据(生成insert 语句),默认会备份触发器,存储过程和函数等)
  11. 回到 save point
  12. 下一个表
  13. 释放资源

参考资料

参数

–master-data={0,1,2}:
0不添加change master to语句
1添加
2以注释形式添加

–single-transaction 得到一个一致性备份

–dump-slave
已有master slave1 需要在master上再添加一个从库slave2
但是master负载很大,不能再master上备份数据库
而我们有需要一个master的备份(来change master to 到这个master上)
这样我们就需要在slave1上备份数据
添加 dump-slave来得到 master的change master 语句

优缺点

优点:
1.恢复简单,可以使用管道将他们输入到mysql
2.与存储引擎无关,因为是从MySQL服务器中提取数据而生成的,所以消除了底层数据存储的不同
3.有助于避免数据损坏。若磁盘驱动器有故障而要复制原始文件时,此时将得到一个损坏的备份
4.文件小,只备份逻辑没有备份索引
缺点:
1.必须有数据库服务器完成逻辑工作,需要更多地cpu周期
2.逻辑备份还原速度慢:需要MySQL加载和解释语句、转化存储格式、重建引擎
参考

备份时间

当我们备份一个数据库,比如 5点开始备份,到5:30结束,那么我们得到的是几点的一致性备份呢?
我们得到的是 5点的备份(flush tables /flush tables with read lock都顺利执行)
从原理我们可以得知begin transaction 之后我们备份的是这个一致性快照的数据(mvcc原理)

问题

1.flush tables 遇到大表ddl,查询等会等待
一个慢查询堵塞数据库备份进程,备份进程堵塞了后续的查询SQL,最后导致后续的大面积SQL等待。
FLUSH TABLES的效果是:关闭所有打开的表,同时清空query cache的内容。
先执行一个FLUSH TABLES操作,而FLUSH TABLES会关闭所有已经打开的表,所以会等待之前的请求执行结束,于是一个慢查询就这么堵塞了mysqldump进程

参考:慢查询导致备份阻塞

2.使用flush logs参数 遇到大事物,刷不动
flush logs 使用一个新的binlog文件,事物不能跨binlog,就会等待这个大事物完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值