Mysql的備份與恢復(fù)全過程(使用XtraBackup)
xtrabackup是MySQL的一種物理備份工具,相對于mysqldump,備份和還原速度更快。
一、安裝 XtraBackup
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
注意:
- Percona XtraBackup 8.0 版本適合 MySQL 8.0
- Percona XtraBackup 2.4 版本適合 MySQL 5.7
二、備份 MySQL 數(shù)據(jù)庫
1.創(chuàng)建備份目錄
sudo mkdir -p /data/backups/mysql sudo chown -R mysql:mysql /data/backups
2.執(zhí)行備份
(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 參數(shù)) 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 # 后續(xù)增量備份 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
三、恢復(fù) MySQL 數(shù)據(jù)庫
1.停止 MySQL 服務(wù)
# CentOS 7 sudo systemctl stop mysqld # CentOS 8/Ubuntu sudo systemctl stop mysql
2.執(zhí)行恢復(fù)操作
(1)清空數(shù)據(jù)目錄
sudo rm -rf /var/lib/mysql/*
(2)全量備份還原
# 注意:恢復(fù)時需使用 --copy-back 參數(shù) 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,假設(shè)存在兩個增量備份:incremental_1 和 incremental_2,按順序應(yīng)用增量備份 # 準(zhǔn)備全量備份(不生成回滾點) xtrabackup --prepare --apply-log-only --target-dir=/data/backups/full # 應(yīng)用第一個增量備份 xtrabackup --prepare --apply-log-only \ --target-dir=/data/backups/full \ --incremental-dir=/data/backups/incremental_1 # 應(yīng)用第二個增量備份 xtrabackup --prepare --apply-log-only \ --target-dir=/data/backups/full \ --incremental-dir=/data/backups/incremental_2 # 最終準(zhǔn)備(生成回滾點) xtrabackup --prepare --target-dir=/data/backups/full # 還原最終回滾點 xtrabackup --copy-back --target-dir=/data/backups/mysql/full
關(guān)鍵參數(shù)說明
- 1.--apply-log-only
- 防止在應(yīng)用增量日志后自動生成回滾點,確??梢岳^續(xù)應(yīng)用后續(xù)增量備份
- 2.--incremental-dir
- 指定增量備份文件所在目錄
- 3.最終 prepare 不使用 --apply-log-only
- 生成最終回滾點,使備份數(shù)據(jù)處于一致性狀態(tài)
3.修復(fù)權(quán)限
sudo chown -R mysql:mysql /var/lib/mysql
4.啟動 MySQL 服務(wù)
# CentOS 7 sudo systemctl start mysqld # CentOS 8/Ubuntu sudo systemctl start mysql
注意:
1.MySQL 8.0 特殊配置
- 需添加 --no-timestamp 參數(shù)避免創(chuàng)建時間戳目錄
- 可能需要調(diào)整 validate_password 插件配置
2.備份用戶需具備 RELOAD, LOCK TABLES, REPLICATION CLIENT 權(quán)限
CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'password'; GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, PROCESS ON *.* TO 'backupuser'@'localhost'; FLUSH PRIVILEGES;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL數(shù)據(jù)庫聚合函數(shù)與分組查詢舉例詳解
在MySQL中聚合函數(shù)和分組查詢經(jīng)常一起使用,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫聚合函數(shù)與分組查詢的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Mysql定時數(shù)據(jù)庫備份實現(xiàn)的保姆級教程
數(shù)據(jù)備份本身主要是為了預(yù)防一些意外,例如服務(wù)器或者個人電腦的硬件故障、人為的錯誤操作等情況,這篇文章主要給大家介紹了Mysql定時數(shù)據(jù)庫備份實現(xiàn)的保姆級教程,需要的朋友可以參考下2024-12-12
Mysql添加聯(lián)合唯一索引及相同數(shù)據(jù)插入報錯問題
這篇文章主要介紹了Mysql添加聯(lián)合唯一索引及相同數(shù)據(jù)插入報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
sql中select into和insert select的用法小結(jié)
在工作中,我們經(jīng)常需要備份表,本文主要介紹了sql中select into和insert select的用法小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-08-08

