Mysql备份恢复方案解析

1.全量备份和增量备份node

1.1全量备份mysql

就是对现有的数据进行所有备份,以前作的备份都可舍弃,以最新的全备为基点。sql

a.全备全部数据库数据库

Innodb引擎:服务器

[root@leader mysql]#mysqldump -uroot -proot -F -A -B --events --single-transaction --master-data=1|gzip>/data/backup/mysql_backup_$(date +%F).sql.gz并发

Myisam引擎:日志

[root@leader mysql]#mysqldump -uroot -proot -F -A -B --events --lock-all-tables --master-data=1|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz事件

参数说明:事务

-F参数:刷新binlogip

-A参数:备份全部库

-B参数:备份数据的时候添加建库建表等语句

--events参数至关于-E:在输出中包含转储数据库的事件调度器事件

--master-data参数:若是参数值等于1,在备份文件中添加change master语句在主从同步change master的时候就不用制定binlog日志文件以及更新的位置,若是等于2则不会添加change master语句。

--single-transaction参数:用于Inode引擎的备份

--lock-all-tables参数:锁表,它针对于MyIsam引擎的备份。在这种状况下日志之刷新一次由于全部的表的都是锁着的(容许并发插入数据)。若是想让你的转储和日志刷新发生在同一时刻,应该将--lock-all-tables参数、--master-data参数和flush-logs(即-F参数)一块儿使用,对于Innode这样的事务表,单事务表市更好的选择,觉得它根本不用锁表。

b.备份指定数据库

Innodb引擎:
[root@leader mysql]mysqldump -uroot -proot -F -B --events --single-transaction --master-data=1 test|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz

Myisam引擎:
[root@leader mysql]mysqldump -uroot -proot -F -B --events --lock-all-tables --master-data=1 test|gzip >/data/backup/mysql_backup_$(date +%F).sql.gz

1.2 增量备份
增量备份的数据是从上次全量备份以后更新的数据,对mysql来讲binlog日志文件存储着增量备份的数据。增量备份能够按天备份,次日作全备了,理论上前一天的备份就没用了。通常咱们主服务器的binlog日志文件保持七天(受my.cnf配置文件中expire_logs_days控制),备份服务器上增量备份通常保持180天。全量被份和增量备份分为两种状况,第一种状况就是按天备份一天作一次全量备份,天天零点以前作增量备份,零点以后作全量备份;第二种状况就是按天全备也能够按周全备,一周作一次全备天天作一次增量备份。

按天全备的优势:恢复时间短、维护成本低

缺点:占用空间多,占用系统资源多,常常锁表影响用户体验。

按周全备的优势:占用空间少,占用系统资源少用户体验好一些。

缺点:恢复麻烦维护正本高,时间长。

企业场景全备和增量的频率是怎么作的呢?

(1)中小公司,全量通常是天天一次,业务流量低谷执行全备,执行前须要锁表。

(2)单台数据库没有作主从同步,如何增量?用rsync(配合定时任务频率大点,或者inotify和主从复制)把全部binlog备份到远程服务器,尽可能作主从复制。

rsync –avz /data/3306/mysql-bin.000* rsync_backup@192.168.1.116::backup –-password-file=/etc/rsync.password

(3)大公司周备,每周六00点一次全量,下周日-下周六00点前都是增量。

优势:节省备份时间,减少备份压力,缺点:增量的binlog文件副本太多,还原会很麻烦。

(4)一主多从,会有一个从库作备份,延迟同步。

Mysql的mysqldump备份何时派上用场?

(1)迁移或者升级数据库时。

(2)增长从库的时候,由于硬件或特殊异常状况,主库或从库宕机,主从能够切换,无需备份。把其中一个同步最快的切换为主库便可。

(3)人为的DDL、DML语句,主从库没办法了,全部库都会执行,此时须要备份。

(4)跨机房灾备,需备份拷贝走数据。

2.MySQL增量恢复必备条件
主库和从库开启binlog

[root@leader mysql]# egrep "\[mysqld]|log-bin" /etc/my.cnf
[mysqld]
log-bin = /var/log/mysql/mysql-bin.log
小结:增量恢复的条件:

存在一份全备数据和全备以后的某一时刻到出问题时刻的全部增量binlog文件备份。

3.全备即增量备份数据恢复思想

恢复思想就是先找到发生故障的缘由,谁在何时作了什么操做,检查是否是这个操做致使数据库故障。以后尽可能中止数据库对外访问,先备份0:00到十点更新的数据binlog日志文件,刷新binlog。第一步先恢复全备,第二步增量恢复0:00到10:00这个时间段的数据。

相关文章
相关标签/搜索