zoukankan      html  css  js  c++  java
  • Mysql备份恢复方案解析

    1.全量备份和增量备份

    1.1全量备份

    就是对现有的数据进行全部备份,之前做的备份均可舍弃,以最新的全备为基点。

    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参数:刷新binlog

    -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这个时间段的数据。

  • 相关阅读:
    BZOJ1229 USACO2008 Nov toy 玩具 【三分+贪心】*
    BZOJ1304 CQOI2009 叶子的染色 【树形DP】
    BZOJ1131 POI2008 Sta 【树形DP】
    BZOJ1096 ZJOI2007 仓库建设 【斜率优化DP】
    BZOJ4540 Hnoi2016 序列 【莫队+RMQ+单调栈预处理】*
    Codeforces 1012C Hills【DP】*
    POJ1741 Tree + BZOJ1468 Tree 【点分治】
    BZOJ2152 聪聪可可 【点分治】
    HDU1693 Eat the Trees 【插头DP】*
    RUAL1519 Formula 1 【插头DP】
  • 原文地址:https://www.cnblogs.com/guipeng/p/12005444.html
Copyright © 2011-2022 走看看