xtrabackup

引言

案例代码可以从https://github.com/WeiXiao-Hyy/k8s_example获取,欢迎Star!

环境准备

创建数据文件夹和备份文件夹

mkdir -p ~/GitCode/xtrabackup/mysql/data
mkdir -p ~/GitCode/xtrabackup/mysql/backup

制作MySQL:5.7运行环境

cd mysql-5.7

docker build -t mysqld-prod:5.7 .

制作xtrabackup-2.4.20运行环境

cd xtrabackup-2.4.20

docker build -t centos7.8_xtrabackup:v1 .

运行MySQL

docker run -d \
--name mysqld-prod \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3307:3306 \
-v ~/GitCode/xtrabackup/mysql/data:/var/lib/mysql \
mysqld-prod:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

运行xtrabackup

docker run -it -d \
--name centos7.8_xtrabackup \
--restart=always \
-e TZ=Asia/Shanghai \
-v ~/GitCode/xtrabackup/mysql/data:/data \
-v ~/GitCode/xtrabackup/mysql/backup:/backup \
centos7.8_xtrabackup:v1

查看MySQL容器的IpAddress以及执行创建数据库插入/删除操作

执行插入或删除操作才能让MySQL生成bin-log文件

docker inspect mysqld-prod # 查看IPAddress

全量备份

启动xtrabackup备份

# 172.17.0.2 为上一步查看的MySQL容器IPAddress

innobackupex \
--user=root \
--password=123456 \
--port=3306 \
--host=172.17.0.2 \
--socket=/data/mysql.sock \
--datadir=/data /backup

执行prepare操作

xtrabackup --prepare --target-dir=/backup/2024-03-07_21-32-37

用于恢复MySQL

rsync -avrP /backup/2024-03-07_21-32-37 /var/lib/mysql/

修改MySQL文件夹的权限

chown -R mysql:mysql /var/lib/mysql

参考资料

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐