一、MySQL数据备份方式(物理备份、逻辑备份)

对于数据库的备份重要性不必多言,为了防止数据以各种方式丢失、损坏,所以必须对数据库进行定期备份。

首先,应考虑数据备份时对数据库业务的影响情况,选择相应备份场景:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

热备:读写操作均可正常进行的状态下进行备份(多数情形下都是场景);

温备:可读但不可写状态下进行的备份;

冷备:读写操作均不可进行的状态下所做的备份。

其次,如果定期进行备份,每次都进行全量备份,显然一部分数据是重复,而且浪费大量磁盘空间,选择合适备份方式:

完全备份:每次备份数据库中全量数据;

差异备份:仅备份自上一次完全备份以来变化的那部分数据,是按完全备份那一刻的备份数据为起点,进行备份;

增量备份:仅备份自上一次完全备份或增量备份以来变化的那部分数据,是按上一次备份那一刻的备份数据为起点,进行备份。

备份数据两种方法:

物理备份:复制数据文件进行备份,即通过cp或scp等shell命令,或第三方软件,如:xtrabackup,cp或scp等shell命令将数据存储目录下:ibdata1、ib_logfile0、ib_logfile1文件拷贝,此方法效率比较低,对数据库运行影响低一些;

逻辑备份:从数据库中导出数据到文件中,可选择需要备份的数据库,备份粒度更精细,此备份方法会存在数据差异。

                  逻辑备份使用mysql自带的命令:mysqldump进行逻辑备份,例:mysqldump  -uroot  -p  -B db1  db2  >  /tmp/mysql/dump.sql

二、物理备份方法:xtrabackup工具,对 Innodb引擎的表可进行热备,增量备份,但对MyISAM引擎就不支持这些特性了

1、安装xtrabackup工具,安装成功后使用:innobackupex命令

https://www.percona.com/software/mysql-database/percona-xtrabackup   下载官网

#yum install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm       #yum安装rpm包

#rpm -qa |grep percona-xtrabackup                       #查看安装是否成功

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第1张

2、先通过innobackupex命令进行全量备份,

 mysql> grant  reload,lock  tables,replication  client  on  *.*  to  'cxq'@'localhost'  identified  by '123456';    #授权用户、密码进行数据备份

mysql> flush privileges;(可选操作)

1)数据备份操作:

#innobackupex --defaults-file=/etc/my.cnf --user=cxq --password="123456"  --backup  /tmp/mysql/backup/    #执行备份操作,报以下错误,提示是缺少PROCESS权限

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第2张

mysql> grant  process on  *.*  to  'cxq'@'localhost';                                                                                    #赋予权限后再执行,问题解决

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第3张

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第4张

2)apply-log参数生成应用日志:

#innobackupex  --apply-log  /tmp/mysql/backup/2019-04-18_16-46-25/                      #使相关数据性文件保持一致性状态

3)测试,登录数据库,执行删除操作:

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第5张

3、数据恢复, 使用--copy-back参数:

1)将前面备份的数据导入到数据库指定存储目录,注:此时数据库存储目录必须为空方可执行数据恢复工作:

#innobackupex  --defaults-file=/etc/my.cnf  --copy-back  /tmp/mysql/backup/2019-04-18_16-46-25/

#chown  -R  mysql.mysql  /usr/local/mysql/data/                       #记得修改mysql数据库所有者、所属组为mysql用户

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第6张使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第7张

清空数据库存储目录,再执行数据恢复动作,成功:

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第8张

数据恢复完成后,必须重启数据库服务,否则无法显示已恢复的数据:

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第9张

2)重启mysql数据服务:

/etc/init.d/mysqld  restart

3)再查询表数据,数据成功恢复。

使用xtrabackup对MySQL热备份、增量备份(仅支持:innodb引擎表) 随笔 第10张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄