rger 发表于 2017-11-13 13:35:37

Mysql数据库备份与恢复--Xtrabackup

Mysql数据库备份与恢复
    背景:
    作为一个运维工程师,经常会遇到硬件故障(冗余)、软件故障(bug)、自然灾害、黑客攻击、误操作等对数据库破坏的问题,所以一定要做好备份工作,在做好备份后还一定要会恢复,这两项工作都是很重要的,备份要知道如何备份才能有效的保护数据,同时恢复数据也是很繁忙的工作,有时可能需要一个团队来完成。这里介绍下Xtrabackup对Mysql数据库的简单备份和恢复。
    这里的实验是在Centos6.9上做的,如果是7版本,可能命令有所不同。

    备份注意事项:
    1、能容忍最多丢失多少数据;
    2、恢复数据需要在多长时间内完成;
    3、需要恢复哪些数据;      
    4、做恢复演练:
      测试备份的可用性;
      增强恢复操作效率;
    5、备份需要考虑因素:
            锁定资源多长时间?
            备份过程的时长?
            备份时的服务器负载?
            恢复过程的时长?   
      备份策略:
            全量+差异 + binlogs
            全量+增量 + binlogs            
            备份手段:物理、逻辑
    备份类型:
    备份的数据集的范围:
      完全备份:整个数据集;
      部分备份:数据集的一部分,比如部分表;      
    全量备份、增量备份、差异备份:
      完全备份
      增量备份:仅备份自上一次完全备份或 增量备份以来变量的那部数据;
      差异备份:仅备份自上一次完全备份以来变量的那部数据;   
    物理备份、逻辑备份:
      物理备份:复制数据文件进行的备份;
      逻辑备份:从数据库导出数据另存在一个或多个文件中;   
    根据数据服务是否在线:
      热备:读写操作均可进行的状态下所做的备份;(MyISAM不支持热备,InnoDB支持)
      温备:可读但不可写状态下进行的备份;
      冷备:读写操作均不可进行的状态下所做的备份;
    备份什么?
      1、数据
      2、二进制日志、InnoDB的事务日志;
      3、代码(存储过程、存储函数、触发器、事件调度器)
      4、服务器的配置文件(用于系统环境的恢复)
    Xtrabackup备份数据
      Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。   

    完全备份:
      完全+binlog(总结):
      备份:innobackupex --user --password= --host= /PATH/TO/BACKUP_DIR
      准备:innobackupex --apply-log/PATH/TO/BACKUP_DIR
      恢复:innobackupex --copy-back
      注意:--copy-back需要在mysqld主机本地进行,mysqld服务不能启动;
            innodb_log_file_size可能要重新设定;
      步骤1、在使用Mysql数据库时,最好开启binlog,也就是二进制日志功能,到时可以用二进制按时间节点对文件进行恢复,使数据恢复更加准确。
      
      步骤2、下载与安装Xtrabackup软件
      官网下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/
      Xtrabackup提供的是rpm包,所以下载好后直接用yum安装即可

      

      步骤3、备份数据库
      在安装Xtrabackup时最好是关闭数据库,安装好后就可以启动了。
      
      开始备份数据:
      


      


      在看见了completed OK!之后才能确认备份是成功的,否则备份是失败的。
      步骤4、查看数据库备份情况
      
    Xtrabackup恢复数据
步骤1、在确认了数据库备份成功后,删除数据库里的所有数据
      
      步骤2、关闭数据库
      命令:service mysqld stop
      一定要关闭数据库,因为之后的操作如果数据库是开着的,那操作都会失败。

      步骤3、准备
      命令:innobackupex --apply-log /PATH

      这一步很重要,他可以将没做完的事务全部回滚。保证数据库的准确性。
      
      
      步骤4、恢复数据
      命令:innobackupex --copy-back
      
      同样的,最后看见completed OK就是恢复成功,PS:并不是上图的completed OK
      步骤5、查看恢复的数据
      https://s4.51cto.com/oss/201711/12/1ad115231d14c08fa07130b0aece2b28.png
      步骤6、修改权限或者所有者
      
      步骤7、启动数据库,查看数据
      
      数据恢复完成。
页: [1]
查看完整版本: Mysql数据库备份与恢复--Xtrabackup