Xtrabackup

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


留言

這個網誌中的熱門文章

黑暗靈魂3[所有重要物品的取得方式]

黑暗靈魂3[所有姿勢取得方式]

MySQL Replication