CentOS 7 percona-xtrabackup8.0.31安装,并备份部署在docker里的mysql容器

  1. 打开官方地址:https://www.percona.com/downloads,选择对应数据版本

mysql 5.7以下版本,可以采用percona xtrabackup 2.4以下版本

mysql 8.0以上版本,可以采用percona-xtrabackup-8.0以上版本

注意:8.0以上只有向下兼容,无法向上兼容,只能安装与mysql相同版本号,或者大于mysql版本的percona-xtrabackup-8.0版本

CentOS 7 percona-xtrabackup8.0.31安装,并备份部署在docker里的mysql容器_第1张图片

  1. 放到服务器上,自己决定目录,我是放在home目录下

cd /home

yum -y install libev

yum -y install perl-Digest-MD5

yum install perl-DBD-MySQL -y

#如果长时间安装失败,切换国内镜像源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

rpm -ivh percona-xtrabackup-80-8.0.31-24.1.el7.x86_64.rpm
  1. 查xtrabackup 是否安装成功

执行 xtrabackup --version

  1. 建立备份目录文件夹

mkdir -p /home/backup
  1. 运行在docker数据库需要操作

mkdir -p /home/bengbu-project/data/mysql_conf  自己指定目录
#把容器内的文件拷出来(注意:禁止放到mysql映射出来的mysql的目录下)
docker cp mysql:/etc/mysql/my.cnf /home/bengbu-project/data/mysql_conf/
docker cp mysql:/etc/mysql/conf.d /home/bengbu-project/data/mysql_conf/
docker cp mysql:/var/run/mysqld/ /home/bengbu-project/data/mysql_conf/
CentOS 7 percona-xtrabackup8.0.31安装,并备份部署在docker里的mysql容器_第2张图片

1. pid-file,socket调整到刚刚复制出来的/home/bengbu-project/data/mysql_conf/mysqld/下,datadir改为/var/lib/mysql映射出来的目录;
2. 添加log_bin参数,注释#log-bin=mysql-bin
log-bin=/home/bengbu-project/data/mysql-data/mysql-bin
log-bin-index=/home/bengbu-project/data/mysql-data/mysql-bin.index
 
/home/bengbu-project/data/mysql-data/ 为/var/lib/mysql映射出来的目录 mysql-bin和mysql-bin.index不要改
3. includedir调整到刚刚复制出来的/home/bengbu-project/data/mysql_conf/conf.d下
 
此项调整无需映射,只为解决docker部署的mysql的数据目录与宿主机不一致的问题
  1. 执行全量备份命令测试

Xtrabackup --defaults-file=/home/bengbu-project/data/mysql_conf/my.cnf --backup --datadir=/var/lib/mysql --target-dir=/home/backup --user=root --password=数据库密码 --port=端口 --host=ip --no-server-version-check

--backup:备份
--datadir:mysql文件目录
--target-dir:要备份到的目录
--user:数据库帐号
--password:数据库密码
--port:端口
--host:IP
--no-server-version-check:不检查mysql与percona-xtrabackup版本差别
--defaults-file:指定上一步复制出来的my.cnf文件(安装在var/lib/mysql的可不加该参数)

显示OK备份成功,查看目录下是否有

CentOS 7 percona-xtrabackup8.0.31安装,并备份部署在docker里的mysql容器_第3张图片

注意:还原过了的增量备份文件已经无法再次使用,所以需要删除,否则后续增量会报错,且有可能恢复失败导致数据库起不来/数据丢失等问题

CentOS 7 percona-xtrabackup8.0.31安装,并备份部署在docker里的mysql容器_第4张图片

恢复完表没了

此时执行全量还原即可

xtrabackup --prepare --target-dir=${backupDir} #预备数据  
xtrabackup --copy-back --datadir=${mysqlDir} --target-dir=${backupDir} #执行还原

${mysqlDir} :mysql数据目录
${backupDir}:备份目录

原因:是执行完还原后,全量备份的xtrabackup_checkpoints会与差异备份的last_lsn 一致,导致会以为没有准备好,还原失败

CentOS 7 percona-xtrabackup8.0.31安装,并备份部署在docker里的mysql容器_第5张图片

你可能感兴趣的:(mysql)