1. 全量备份
简单的说就是将所有数据库或一个库全部备份
2. 增量备份
从上一次全量备份之后到下一次全量备份之前都叫做增量备份
对于 mysql,binlong 日志就是 mysql 数据, 对 binlong 的备份就是对 mysql 的备份
备份的时候要锁表, 影响用户体验, 所以备份的频率各有优缺点
mysql 的 mysqldump 备份什么时候派上用场?
迁移或者升级数据库时,
增加从库的时候
人为的 DDLDML 语句, 主库没有办法了, 所有库都会执行, 恢复备份
跨机房灾备, 需要备份到异地
mysql 数据恢复的必要条件
1. 开启 binlog, 存在一份全备之后的时候到出问题时刻的所有增量的 binlog 文件备份
全部备份的命令:
[root@localhost ~]# mysqldump -uroot -p123456 -F --single-transaction -A -B | gzip > test.sql.gz
备份数据和恢复数据的时候, 一定要将表锁住
模拟一下:
先对一个库进行全量备份:
#mysqldump -uroot -p123456 -B --master-data=1 -F xpg | gzip > xpg_$(date +%F).sql.gz
2. 然后使用 insert 给 xpg 这个库插入两条数据
3. 使用 drop database dbname; 删除这个库, 等等
4. 就是沟通谁进行的什么操作并结合 binlog 日志
5. 下来就是重点: 恢复, 首先将表锁住, 或者停止 web 服务禁止向 mysql 里面写数据
6. 先将全量备份的数据进行恢复, 由于使用选项 - F 指定过, 所以接下来的操作会写入到新的 binlog 日志文件中, 将下来的文件中的 sql 语句提取出来, 当然不要 drop 命令, 然后执行一下 sql 命令就好了
*需要注意的是, 如果不是 drop, 而是 update 破坏数据, 解决起来就复杂, 为了防止 update 的错误操作: 在登陆 mysql 的时候使用选项
-U: 作用就是在执行 update 的时候如果不使用 where 条件判断就会报错可以将 mysql -U添加到别名里面;
另一种方法指定开赴位置和结束位置
选项:--start-position --stop-position
来源: http://www.bubuko.com/infodetail-2506715.html