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,也就是二进制日志功能,到时可以用二进制按时间节点对文件进行恢复,使数据恢复更加准确。

        cbe0e680684da089a663e3058fa758e9.png

        步骤2、下载与安装Xtrabackup软件

        官网下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/

        Xtrabackup提供的是rpm包,所以下载好后直接用yum安装即可

        

c6afe20820798122d3a2ec52fb53fc6d.png


        步骤3、备份数据库

        在安装Xtrabackup时最好是关闭数据库,安装好后就可以启动了。

        

03ae9061d4d3f6885e5144a61d5abe81.png

        开始备份数据:

        

27b29b86e13aba99091285ce6d4a4e8e.png


        932c67272328c98eda99db266185805f.png

4ca327300116064084620b667e35984d.png


        在看见了completed OK!之后才能确认备份是成功的,否则备份是失败的。

        步骤4、查看数据库备份情况

        

832d82c6273785bdbc09d1170dd91d1d.png

    Xtrabackup恢复数据

        步骤1、在确认了数据库备份成功后,删除数据库里的所有数据

        4db625687421f687cacabe63c8e3881b.png

        步骤2、关闭数据库

        命令:service mysqld stop

        一定要关闭数据库,因为之后的操作如果数据库是开着的,那操作都会失败。

        步骤3、准备

        命令:innobackupex --apply-log /PATH

        这一步很重要,他可以将没做完的事务全部回滚。保证数据库的准确性。

        ea316664eac7b7f367f28d42850ff6a7.png

        d2caf264da95099fdb9569240f359be1.png

        步骤4、恢复数据

        命令:innobackupex --copy-back
        

e9589d26e0731b58542c166ec84274d8.png

        同样的,最后看见completed OK就是恢复成功,PS:并不是上图的completed OK

        步骤5、查看恢复的数据

        1ad115231d14c08fa07130b0aece2b28.png

        步骤6、修改权限或者所有者

        5ff85c3c9e525b3766ea359d51165bb8.png

        步骤7、启动数据库,查看数据

        af79e9ee73960bfd69d7fef88940b39b.png

        数据恢复完成。