Centos7使用percona-xtrabackup-8备份恢复mysql8
wget http://repo.percona.com/experimental/7/RPMS/x86_64/percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm
yum -y localinstall percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm libenv
如果报错使用rpm –ivh percona-xtrabackup-80-8.0.1-2.alpha2.el7.x86_64.rpm
如有报错根据报错安装依赖
再或者
yum install https://repo.percona.com/centos/7/RPMS/noarch/percona-release-0.1-8.noarch.rpm
sudo percona-release enable tools testing
yum install percona-xtrabackup
安装完成之后执行
xtrabackup --user=用户名 --password=数据库密码 --databases=数据库名称 --backup --target-dir=备份文件路径
将备份文件backup-12-5压缩成backup.tar.gz
tar zcvf 名称.tar.gz 文件夹名
将文件夹复制到恢复的新的机子上 并安装相同版本的mysql
(大版本的也是可以的 测试过8.0.13和8.0.12的sys和mysql库是可以通用的)
创建一个新的文件夹 (确保data文件夹为空 否则恢复会报错)
mkdir –p /usr/local/mysql/data
下载阿里云上用于恢复的脚本
wget http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh
bash rds_backup_extract.sh -f backup.tar.gz -C /usr/local/mysql/data
#这边的用户和密码是新装的mysql8的账号和密码
datadir 数据库存放数据的位置
target-dir 用于恢复的备份出来的数据
xtrabackup --user=root --password=数据库密码 --datadir=/usr/local/mysql8/data/ --copy-back --target-dir=/usr/local/mysql/data/backup-12-5
备份/etc/my.cnf然后将/usr/local/mysql/data/backup-12-5 的backup-my.cnf复制到/etc下面覆盖原有的文件 并修改成免密登录如下,因为恢复会导致数据库用户信息异常
[mysqld]
skip-grant-tables
port=3306
执行service mysqld restart 重启mysql
或者cd /usr/local/mysql8/bin/
执行mysqld_safe
启动mysql之后 登录mysql
命令行输入use mysql;
进行查询: select host,user,authentication_string,plugin from user;
清空密码字段或者更新密码: update user set authentication_string='' where user='root';
执行刷新flush privileges;
将配置文件替换成自己需要的/etc/my.cnf并去除skip-grant-tables
重启mysql: service mysqld restart
比对数据
附上一个备份脚本
#!/bin/sh
# Author:jiaminxu
# Email:[email protected]
# Description: percona-xtrabackup备份mysql8数据库
# create date:2018-12-06
#####以下参数可以根据需求自行修改
backup_dir=/abc/backup_data_mysql/
log_dir=/abc/backup_data_mysql/log/
data_dir=/abc/backup_data_mysql/data/
use_memory=4G
user_name=abc
user_password=Abc@Yumc123
start_time=$(date +%s)
#时间年月日小时分钟 Now=$(date +'%Y-%m-%d-%H-%M') echo $Now
target_dir=$data_dir/$Now echo $target_dir
file=$data_dir/backup-$Now.tar.gz
log=$log_dir/log-$Now.log
echo $log echo $file
test -d $backup_dir && echo "备份文件夹已经存在" || mkdir -p $backup_dir test -d $log_dir && echo "日志文件夹已经存在" || mkdir -p $log_dir test -d $data_dir && echo "数据文件夹已经存在" || mkdir -p $data_dir
cd $backup_dir echo `pwd` echo “You are In Backup Directory”
#输出即将执行的命令 echo "xtrabackup --user=$user_name --password=$user_password --backup --target-dir=$target_dir --use-memory=$use_memory --no-lock" xtrabackup --user=$user_name --password=$user_password --backup --target-dir=$target_dir --use-memory=$use_memory --no-lock > $log 2>&1 if [ $? -ne 0 ];then echo "备份失败" else echo "备份成功" fi
#sleep 5 end_time=$(date +%s) echo $end_time
cost_time=$((end_time - start_time)) echo 备份总共耗时:$cost_time
|
建议使用新版本的8.0.4 正式版的xtrabackup 测试版本在增量恢复大文件,使用--apply-log-only的时候 会遇到log文件错误的情况。换成正式版 就不会有这个问题。
参考https://blog.csdn.net/vkingnew/article/details/83753179