[mysql]-centos7使用percona-xtrabackup-8备份恢复mysql8

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;

[mysql]-centos7使用percona-xtrabackup-8备份恢复mysql8_第1张图片

[mysql]-centos7使用percona-xtrabackup-8备份恢复mysql8_第2张图片

将配置文件替换成自己需要的/etc/my.cnf并去除skip-grant-tables

重启mysql: service mysqld restart

 

比对数据

[mysql]-centos7使用percona-xtrabackup-8备份恢复mysql8_第3张图片

 

[mysql]-centos7使用percona-xtrabackup-8备份恢复mysql8_第4张图片

 

 

 

附上一个备份脚本

#!/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

你可能感兴趣的:(mysql)