16人参与 • 2026-01-27 • Mysql
xtrabackup是mysql的一种物理备份工具,相对于mysqldump,备份和还原速度更快。
mysql 8.0版本
# centos 7 wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm sudo rpm -ivh percona-release-latest.noarch.rpm sudo percona-release enable-only tools release yum install -y percona-xtrabackup-80 # centos 8 dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm percona-release setup -y ps80 dnf install -y percona-xtrabackup-80 # ubuntu wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb sudo percona-release enable-only tools release sudo apt update sudo apt install -y percona-xtrabackup-80
mysql 5.7版本
# centos 7 wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm sudo rpm -ivh percona-release-latest.noarch.rpm sudo percona-release enable tools release sudo yum install percona-xtrabackup-24 # centos 8 sudo dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm sudo percona-release setup tools sudo dnf install percona-xtrabackup-24 # ubuntu wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb sudo percona-release enable tools release sudo apt update sudo apt install percona-xtrabackup-24
注意:
sudo mkdir -p /data/backups/mysql sudo chown -r mysql:mysql /data/backups
(1)全量备份
# mysql 5.7 xtrabackup --user=backupuser --password=password \ --host=localhost --backup --target-dir=/data/backups/mysql/full_$(date +%f) # mysql 8.0(需添加 --no-timestamp 参数) xtrabackup --user=backupuser --password=password \ --host=localhost --backup --target-dir=/data/backups/mysql/full_$(date +%f) \ --no-timestamp
(2)增量备份(可选)
# 首次全量备份 xtrabackup --backup --target-dir=/data/backups/full # 后续增量备份 xtrabackup --backup --target-dir=/data/backups/incremental_1 \ --incremental-basedir=/data/backups/full xtrabackup --backup --target-dir=/data/backups/incremental_2 \ --incremental-basedir=/data/backups/incremental_1
# centos 7 sudo systemctl stop mysqld # centos 8/ubuntu sudo systemctl stop mysql
(1)清空数据目录
sudo rm -rf /var/lib/mysql/*
(2)全量备份还原
# 注意:恢复时需使用 --copy-back 参数 xtrabackup --prepare --target-dir=/data/backups/mysql/full_$(date +%f) xtrabackup --copy-back --target-dir=/data/backups/mysql/full_$(date +%f)
(3)增量备份还原(可选)
# 有增量备份的还原,最后一次还原不需要加选项--apply-log-only,假设存在两个增量备份:incremental_1 和 incremental_2,按顺序应用增量备份 # 准备全量备份(不生成回滚点) xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full # 应用第一个增量备份 xtrabackup --prepare --apply-log-only \ --target-dir=/data/backups/full \ --incremental-dir=/data/backups/incremental_1 # 应用第二个增量备份 xtrabackup --prepare --apply-log-only \ --target-dir=/data/backups/full \ --incremental-dir=/data/backups/incremental_2 # 最终准备(生成回滚点) xtrabackup --prepare --target-dir=/data/backups/full # 还原最终回滚点 xtrabackup --copy-back --target-dir=/data/backups/mysql/full
关键参数说明
sudo chown -r mysql:mysql /var/lib/mysql
# centos 7 sudo systemctl start mysqld # centos 8/ubuntu sudo systemctl start mysql
注意:
1.mysql 8.0 特殊配置
2.备份用户需具备 reload, lock tables, replication client 权限
create user 'backupuser'@'localhost' identified by 'password'; grant reload, lock tables, replication client, process on *.* to 'backupuser'@'localhost'; flush privileges;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论