前言
公司的数据库每次在推送公众消息时,DB会承受很大压力,目前是一主三从,实际是一主两从,另外一从主要是用于备份的,同步有5个小时的延迟,一直想着如何在不停mysql服务的情况下增加几台从库,由于公司没有直接用云数据库,直接在ECS上搭的本地数据库,加从库就有些费事,增加从库的最快法就是通过xtrabackup备份主库数据,增加从库,那么首先遇到问问题如何用xtrabackup在不停服务的情况快速备份主库
一、xtrabackup是什么?
Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。
Xtrabackup优点
1)备份速度快,物理备份可靠
2)备份过程不会打断正在执行的事务(无需锁表)
3)能够基于压缩等功能节约磁盘空间和流量
4)自动备份校验
5)还原速度快
6)可以流传将备份传输到另外一台机器上
7)在不增加服务器负载的情况备份数据
Xtrabackup备份原理
备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制结束后,将执行flush tables with readlock,然后复制.frm MYI MYD等文件,最后执行unlock tables,最终停止xtrabackup_log。
二、xtrabackup下载
1.xtrabackup下载地址
建议不要直接yum,我最初用的yum的方法安装xtrabackup,安装成功后不支持我的mysq5.7.20
https://www.percona.com/downloads/
由于我们服务器的mysql版本是5.7.20把以就下载xtrabackup2.4版
复制rpm链接 在服务器上下载安装文件
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.26/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm
yum -y localinstall ./percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm
安装成功后运行命令查看安装的版本
trabackup --version
xtrabackup: recognized server arguments:
xtrabackup version 2.4.26 based on MySQL server 5.7.35 Linux (x86_64) (revision id: 19de43b)
开始备份数据库
innobackupex --defaults-file=/usr/localmysql/my.cnf --user root --host 127.0.0.1 --password xxxxxxxxxxxxxx --no-timestamp /data/bak/backup >>/data/bak/backup/backup.log &
命令成功后开始备份数据库…
经过漫长的等备把数据库备份完就可以进行下一步的操作,把备份的数据复制到另一台服务器,执行恢复操作
总结
xtrabackup是不错的mysql数据库备份利器,有时间大家可以多了解一下,以备不时之需。