MySQL-物理备份恢复
标签(空格分隔): work
Author:WeiLei
恢复
全量恢复
停止mysql服务
/etc/init.d/mysql stop
删除mysql数据目录文件
- 首先删除mysql数据目录下的所有文件,保证安全可以移走备份。
- 注意:如果是用备份数据来恢复发生故障的成员,且故障成员的主机未宕机,则建议将故障成员的datadir下的auto.cnf和mysqld-auto.cnf文件先拷贝出来,稍后使用备份数据恢复完成之后,再拷贝回原目录(auto.cnf中记录着源实例的UUID,使用该UUID来对实例进行恢复时,可确保故障实例可以以原来的身份重新加入组,而不是重新生成一个UUID以新的身份加入组;mysqld-auto.cnf记录了Server本地的一些系统变量的临时持久化设置),拷贝命令类似如下
cp -ar /data/mysql-8.0.16/data/auto.cnf /root/
rm -rf /data/mysql-8.0.16/data/*
执行恢复语句
对备份数据执行redo log恢复 (应用在执行备份过程中生成的redo日志,这些redo 日志是xtrabackup工具自己拷贝的且是存放在xtrabackup_logfile文件中的,而不是存放在InnoDB存储引擎层自己的redo log文件里,另外,xtrabackup备份工具执行备份时,也不会备份存储引擎层的redo log文件,需要执行该步骤来生成全新的redo log文件)
# 停止mysql
/etc/init.d/mysql stop
# 删除datadir下的所有文件
rm -rf /data/mysql-8.0.16/data/*
# 全备份准备
xtrabackup --prepare --target-dir=/data/backup/2020-52/full/
# 拷回数据
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/2020-52/full/
# 修改数据目录权限
chown mysql:mysql /data/mysql-8.0.16/data/* -R
# 启动mysql服务
/etc/init.d/mysql start
增量恢复
# 停止mysql
/etc/init.d/mysql stop
# 删除datadir下的所有文件
rm -rf /data/mysql-8.0.16/data/*
# 准备全备份的日志:
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/2021-01/full
# 准备增量备份的日志
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/2021-01/full incremental-dir=/data/backup/inc_backup/2021-01/2021-01-06
# 全备份准备
xtrabackup --prepare --target-dir=/data/backup/2021-01/full
# 拷回数据
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/backup/2021-01/full/
# 修改数据目录权限
chown mysql:mysql /data/mysql-8.0.16/data/* -R
# 启动mysql服务
/etc/init.d/mysql start