xtrabackup 備份和恢復docker容器內的mysql

1.下載備份工具:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.22-15/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.22-15.1.el7.x86_64.rpm
注意xtrabackup8不再有innodbackupex

2.docker 啓動數據庫(mysql 的docker啓用默認會讀取/etc/mysql/my.cnf,所以要把配置文件放到宿主的一個目錄-v進去)
docker run --restart=always --privileged=true -d -v /usr/mysql/conf/:/etc/mysql/ -v /usr/mysql/data:/var/lib/mysql -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.21
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
配置文件:
vim /usr/mysql/conf/my.cnf
[client]




#socket = /usr/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file = /var/run/mysqld/mysqld.pid

#socket = /var/run/mysqld/mysqld.sock

#datadir = /var/lib/mysql

#socket = /usr/mysql/mysqld.sock

#pid-file = /usr/mysql/mysqld.pid

datadir = /var/lib/mysql

character_set_server = utf8mb4

collation_server = utf8mb4_bin

secure-file-priv= NULL

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

Custom config should go here

#!includedir /etc/mysql/conf.d/

3.備份方法:
第一步:構造一個自己備份的my.cnf.bak /etc/my.cnf.bak 裏面寫如下內容:
[mysqld]
datadir=/usr/mysql/data
log-bin=/usr/mysql/data/binlog
log-bin-index=/usr/mysql/data/binlog.index
#socket=/var/lib/mysql/mysql.sock





Disabling symbolic-links is recommended to prevent assorted security risks

#symbolic-links=0

Settings user and group are ignored when systemd is used.

If you need to run mysqld under a different user or group,

customize your systemd unit file for mariadb according to the

instructions in http://fedoraproject.org/wiki/Systemd

#[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid

#

include all files from the config directory

#
#!includedir /etc/my.cnf.d

第二步:執行備份腳本
xtrabackup --defaults-file=/etc/my.cnf.bak --datadir=/usr/mysql/data --host='10.25.15.86' --user='root' --password='123456' --port=3306 --backup --target-dir=/home/mysqlbackup/FULL-253database-date +%Y-%m-%d-%H-%M-%S

4.模擬刪掉數據文件,進行恢復
模擬故障:
docker rm -v mysql -f
再另外一臺機器啓動:
docker run --restart=always --privileged=true -d -v /usr/mysql/conf/:/etc/mysql/ -v /usr/mysql/data:/var/lib/mysql -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.21
刪除數據目錄
docker stop mysql
cd /usr/mysql/data
rm -rf ./*







注意這裏指定的配置文件時docker容器mysql的配置文件
xtrabackup --defaults-file=/usr/mysql/conf/my.cnf --prepare --target-dir=/home/mysqlbackup/FULL-253database-2021-01-22-23-34-04/
/usr/mysql/conf/my.cnf修改datadir=/usr/mysql/data
xtrabackup --defaults-file=/usr/mysql/conf/my.cnf --copy-back --target-dir=/home/mysqlbackup/FULL-253database-2021-01-22-23-34-04/
然後/usr/mysql/conf/my.cnf再修改 datadir=/var/lib/mysql
docker start mysql




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章