因数据量庞大,所以我们采用物理方式对mysql数据库进行备份。 使用xtrabackup工具包对mysql数据库进行物理备份: 特点: 备份过程快速、可靠; 备份过程不会打断正在执行的事务; 能够基于压缩等功能节约磁盘空间和流量; 自动实现备份检验; 还原速度快;
原理:
备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现redo中有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中。之后复制innodb的数据文件和系统表空间文件ibdata1,待复制结束后,执行flush tables with read lock操作,复制.frm,MYI,MYD,等文件(执行flush tableswith read lock的目的是为了防止数据表发生DDL操作,并且在这一时刻获得binlog的位置)最后会发出unlock tables,把表设置为可读可写状态,最终停止xtrabackup_log。 步骤: 1、 执行备份命令 innobackupex --user=backup --password=*** --socket=/tmp/mysqld.sock --defaults-file=/etc/my.cnf /data/backup/ 2、检查备份文件完整性 1)、查看以下文件是否存在 backup-my.cnf、 xtrabackup_binary、xtrabackup_binlog_info 、xtrabackup_checkpoints xtrabackup_logfile xtrabackup_info 2)、检查文件 xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
backup-my.cnf —— 备份命令用到的配置选项信息;
xtrabackup_info ——记录备份的基本信息,uuid、备份命令、备份时间、binlog、LSN、以及其他加密压缩等信息。
原理:
这一阶段会启动xtrabackup内嵌的innodb实例,回放xtrabackup日志xtrabackup_log,将提交的事务信息变更应用到innodb数据/表空间,同时回滚未提交的事务(这一过程类似innodb的实例恢复)。 步骤: 要先关闭mysql数据库,重命名或者删除原数据文件目录都可以,再创建一个新的数据文件目录,将备份数据复制到新的数据文件目录下,赋权,修改权限,启动数据库 1、/etc/init.d/mysqld stop 2、mv /data/mysql /data/mysql_bak 3、mkdir /data/mysql 4、innobackupex --apply-log /data/backup/2018-05-21_10-05-04/ 5、innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/2018-05-21_10-05-04/ 6、chown -R mysql.mysql /data/mysql 7、/etc/init.d/mysqld start