Percona XtraBackup是MySQL数据库的一款备份工具,它通过热备份的方式,在不停止MySQL服务器的情况下对InnoDB和XtraDB表进行备份。本文将详细介绍使用XtraBackup进行备份与恢复的过程,包括备份的类型、常用选项以及备份与恢复的步骤。
XtraBackup主要包含两个工具:xtrabackup
和innobackupex
。
--host
: 指定主机--user
: 指定用户名--password
: 指定密码--port
: 指定端口--databases
: 指定数据库--incremental
: 创建增量备份--incremental-basedir
: 指定包含完全备份的目录--incremental-dir
: 指定包含增量备份的目录--apply-log
: 对备份进行预处理操作,确保数据文件处于一致性状态--redo-only
: 不回滚未提交事务--copy-back
: 恢复备份目录在备份之前,需要调整ulimit最大文件打开数,以确保备份过程中不会受到限制。
# 临时生效
ulimit -n 65535
# 永久生效(重启后生效)
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
执行全库备份,并记录备份相关信息:
innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --host=localhost --user=root --password=123456 --port=3306 /home/backups/
# 备份类型:全库备份
# 备份方式:xtrabackup
# 备份开始时间:2023年12月18日19:47:52
# 备份结束时间:2023年12月18日19:54:17
# 备份耗时:6分钟
# 备份所有文件大小:7.2G
# 打包开始时间:2023年12月18日19:56:44
# 打包结束时间:2023年12月18日20:03:10
# 打包耗时:6.5分钟
# 压缩包大小:754M
备份包括完整备份、备份开始和结束时间、备份耗时、备份文件大小以及打包和压缩的相关信息。
在停止MySQL服务的情况下进行全库恢复:
# 停止MySQL服务
systemctl stop mysqld
# 恢复准备:
innobackupex --apply-log /home/backups/2023-12-18_12-43-37/
# 模拟数据丢失:
cd /var/lib/
mv mysql mysql_mv
mkdir mysql
# 恢复:
innobackupex --copy-back /home/backups/2023-12-18_12-43-37/
# mysql目录授权:
chown -R mysql.mysql /var/lib/mysql
# 启动mysql
systemctl start mysqld
执行全库备份并压缩:
innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --host=localhost --user=root --password=123456 --port=3306 --no-timestamp --stream=tar /temp/ | gzip - > /home/backups/full/20231218fullbak.tgz
# 备份类型:全库备份
# 备份数据库文件大小:80G
# 备份方式:xtrabackup
# 备份开始时间:2023-12-18 20:42:46
# 备份结束时间:2023-12-18 21:15:15
# 备份耗时:32分钟
# 压缩包文件大小:12G
innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --host=localhost --user=root --password=123456 --port=3306 --incremental /home/backups/first/ --no-timestamp --incremental-basedir=/home/backups/2023-12-18_12-43-37/
回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态:
# 1、(完整备份文件)
innobackupex --apply-log /home/backups/2023-12-18_12-43-37/
或者
innobackupex --user=root --apply-log --redo-only /home/backups/2023-12-18_12-43-37/
# 2、(第一次增量文件)将第一次增量备份整合到完整备份中:
innobackupex --user=root --apply-log --redo-only /home/backups/2023-12-18_12-43-37/ --incremental-dir=/home/backups/first/
--- 231218 15:02:22 completed OK!
# 模拟MySQL故障数据丢失,进行数据恢复:
cd /var/lib/
mv mysql mysql_first
mkdir mysql
innobackupex --copy-back /home/backups/2023-12-18_12-43-37/
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
依照相同的步骤进行第二次和第三次的增量备份与恢复,依次整合增量备份到完整备份中。
通过上述详细的备份与恢复过程,您可以有效地利用Percona XtraBackup保护MySQL数据库,确保数据的安全性和可靠性。备份的类型和恢复的步骤清晰明了,使得在实际应用中能够更加灵活地选择适合自己需求的备份策略。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。