Xtrabackup
安裝
(1) 先將測試檔案抓下來到本機
curl -o northwind.sql -L "https://drive.google.com/uc?export=download&id=10gwqMTkQ6dc5UhyRxQoBiqOYSeqowdWg" |
(2) 匯入測試用 .sql
sudo mysql CREATE DATABASE Northwind; exit mysql -u willywen -p Northwind < /home/willywen/northwind.sql |
(3) 安裝 Xtrabackup
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb sudo dpkg -i percona-release_latest.generic_all.deb apt-get update |
這指令會搜尋出目前可用的版本
apt-cache search xtrabackup apt-get install -y percona-xtrabackup-80 |
8.0 移除了 innobackupex 命令,同時只能支援 mysql 8.0
完整備份&還原
(1) 完全備份到 /lab/xtrabackup
sudo xtrabackup --backup --user=willywen --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/base |
(2) 進行還原前置作業,準備階段點
sudo xtrabackup --prepare --target-dir=/lab/xtrabackup/base |
(3) 進行還原作業
先關閉 mysql,要先把還原目錄先清空
sudo systemctl stop mysql rm -rf /var/lib/mysql/* |
還原指令
xtrabackup --copy-back --target-dir=/lab/xtrabackup/base --datadir=/var/lib/mysql chown -R mysql:mysql /var/lib/mysql |
啟動 mysql
sudo systemctl start mysql |
完整增量備份&還原
(1) 進行完整和增量備份
先進行一次完整備份
sudo xtrabackup --backup --user=willywen --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/full |
進行第一次增量備份
sudo xtrabackup --backup --user=willywen --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/inc1 --incremental-basedir=/lab/xtrabackup/full |
進行第二次增量備份
sudo xtrabackup --backup --user=willywen --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/inc2 --incremental-basedir=/lab/xtrabackup/inc1 |
(2) 進行還原前置作業,準備階段點
準備第一次完整備份
xtrabackup --prepare --apply-log-only --target-dir=/lab/xtrabackup/full |
準備第一次增量備份
xtrabackup --prepare --apply-log-only --target-dir=/lab/xtrabackup/full --incremental-dir=/lab/xtrabackup/inc1 |
準備第二次增量備份
xtrabackup --prepare --target-dir=/lab/xtrabackup/full --incremental-dir=/lab/xtrabackup/inc2 |
(3) 進行還原作業
先關閉 mysql,需先把還原目錄先清空
sudo systemctl stop mysql rm -rf /var/lib/mysql/* |
還原指令
xtrabackup --copy-back --target-dir=/lab/xtrabackup/base --datadir=/var/lib/mysql chown -R mysql:mysql /var/lib/mysql |
重新啟動 mysql
sudo systemctl start mysql |
完整單一資料庫&還原
(1) 簡易流程
xtrabackup --backup --user=willywen --databases="Northwind" --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/base
xtrabackup --prepare --target-dir=/lab/xtrabackup/base
systemctl stop mysql
rm -rf /var/lib/mysql/Northwind/*
xtrabackup --copy-back --target-dir=/lab/xtrabackup/base --datadir=/lab/xtrabackup/cp_base
cp -r /lab/xtrabackup/cp_base/Northwind/* /var/lib/mysql/Northwind/
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql |
增量單一資料庫&還原
(1) 增量備份
先進行一次完整備份
sudo xtrabackup --backup --user=willywen --databases="Northwind" --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/full |
進行第一次增量備份
sudo xtrabackup --backup --user=willywen --databases="Northwind" --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/inc1 --incremental-basedir=/lab/xtrabackup/full |
進行第二次增量備份
sudo xtrabackup --backup --user=willywen --databases="Northwind" --password="Kyy_y(YL901OzLBh" --target-dir=/lab/xtrabackup/inc2 --incremental-basedir=/lab/xtrabackup/inc1 |
(2) 進行還原前置作業,準備階段點
準備第一次完整備份
xtrabackup --prepare --apply-log-only --target-dir=/lab/xtrabackup/full |
準備第一次增量備份
xtrabackup --prepare --apply-log-only --target-dir=/lab/xtrabackup/full --incremental-dir=/lab/xtrabackup/inc1 |
準備第二次增量備份
xtrabackup --prepare --target-dir=/lab/xtrabackup/full --incremental-dir=/lab/xtrabackup/inc2 |
(3) 進行還原作業
先關閉 mysql
sudo systemctl stop mysql |
將目錄清空
rm -rf /var/lib/mysql/Northwind/* |
還原指令
xtrabackup --copy-back --target-dir=/lab/xtrabackup/full --datadir=/lab/xtrabackup/full_Northwind |
複製
cp -r /lab/xtrabackup/full_Northwind/Northwind/* /var/lib/mysql/Northwind/ |
權限
chown -R mysql:mysql /var/lib/mysql |
重新啟動 mysql
sudo systemctl start mysql |
什麼是表空間
https://www.zbpblog.com/blog-386.html
什麼是外鍵
https://b-l-u-e-b-e-r-r-y.github.io/post/ForeignKey/
什麼是InnoDB和MyISAM
https://www.mysql.tw/2023/05/mysql-innodb-myisam-difference.html
mysqlc可以看到prepare备份文件后,多了 cfg,exp结尾的文件heckEmploProductyeeTerritory_ibfk_2 -u your_usALTER TABLE CustCustDemographics DROP FOREIGN KEY CustCustDemographics_ibfk_1;
ALTER TABLE CustCustDemographics DROP FOREIGN KEY CustCustDemographics_ibfk_2;
ename -YourPassword your_data
留言