MYSQL备份工具 Percona

Mysql备份工具 percona
安装percona-xtrabackup
yum -y localinstall percona-xtrabackup-24-2.4.12-1.el6.x86_64.rpm
percona xtrabackup 是基于innodb的物理拷贝,工作原理,先拷贝,拷贝的同时有一个线关注log线程的变化,有变化就拷贝,拷贝完毕后有一个应用日志的操作,最后给出一个唯一的日志点

备份
innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock /tmp
可选参数 --parallel 例:–parallel=5 开启5个进程
此参数用于开启多个子进程并发备份多个数据文件(注意,一个数据文件只会有一个进程完成备份)。可以加快备份速度。但是在服务器资源不足时,谨慎使用。
第一次增量备份
innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock --incremental /tmp --incremental-basedir=/tmp/2018-12-07_11-46-45/
注:–incremental /tmp 备份的路径
–incremental-basedir=/tmp/2018-12-07_11-46-45/ 上一次备份的路径 会读取里面的位置点然后做增量备份 备份后存储到/tmp路径下
第二次增量备份
命令没有变化 --incremental-basedir 读取路径必须要是上一次增量备份保存的路径
在执行过增量备份之后再一次进行增量备份时,其–incremental-basedir应该指向上一次的增量备份所在的目录

备份文件预处理
把备份数据发送给从节点
在从节点预处理 (主库也可以操作 然后把处理后的文件scp给从库)
innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock --apply-log --use-memory=1G /tmp/2018-12-07_11-46-45/
注:-use-memory=1G 是用内存处理 尽量给的大

如果有增量备份的情况 生产环境应用如下操作
第一步 处理全量备份
innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock --apply-log --use-memory=1G --redo-only /tmp/2018-12-07_11-46-45/
第二步 处理增量备份
innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock --apply-log --use-memory=1G --redo-only /tmp/2018-12-07_11-46-45/ --incremental-dir=/tmp/2018-12-08_11-46-45/ #第一次增量备份的路径 然后依次类推恢复增量

注:备份和处理数据的时候–incremental是不同的
增量备份 --incremental-basedir
处理增量备份 --incremental-dir

恢复备份
预处理后恢复数据 首先要关闭从库mysql服务
清空mysql的data目录下文件,包括ibdata、各个数据库文件,注意,若binlog目录在data目录下,不能删除binlog!
删除data数据是因为move-back时不会覆盖原来的数据。
处理完全备和所有增量备份后 恢复数据时只需要恢复全备的路径 因为处理增量备份的时候会把增量的数据合并入全备

innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxx --socket=/tmp/mysql.sock --move-back /tmp/2018-12-07_11-46-45/
其实–move-back就是将备份拷贝回到datadir下 datadir路径必须在my.cof存在 比copy-back快 或直接把/tmp/2018-12-07_11-46-45/中文件直接拷贝到datadir也可以
注:恢复后的数据的权限可能会有问题因为我是用root账号操作的 把文件权限恢复为mysql chown -R mysql.mysql /usr/local/mysql/data/

错误总结:
Error: datadir must be specified. # 报错信息显示,在默认配置文件 /etc/my.cnf 中,没有找到 datadir 配置项 datadir = /usr/local/mysql/data
如果恢复备份后mysql无法启动 查看/usr/local/mysql/data中文件权限如果不是mysql更改所属主所属组 chown -R mysql.mysql /usr/local/mysql/data/

复制环境全量备份
生产环境都是主从模式,主提供服务,从提供备份,在从服务器上进行全备

innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock --slave-info --safe-slave-backup /tmp
–slave-info:该选项表示对slave进行备份的时候使用,打印出master的名字和binlogpos,同样将这些信息以change master的命令写入xtrabackup_slave_info文件。可以通过基于这份备份新启动一个从库
–safe-slave-backup:该选项表示为保证一致性复制状态

复制环境增量备份
innobackupex --defaults-file="/etc/my.cnf" --user=root --password=xxxx --socket=/tmp/mysql.sock --slave-info --safe-slave-backup --incremental /tmp --incremental-basedir=/tmp/2018-12-07_11-46-45/

做主从查看位置点
cat /usr/local/mysql/data/xtrabckup_binlog_pos_innodb

猜你喜欢

转载自blog.csdn.net/bjgaocp/article/details/88197144