【MySQL】第四章:Percona XtraBackup(備份與恢復)

[root@wallet01 ~]# wget https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm
[root@wallet01 ~]# rpm -ivh percona-release-0.1-6.noarch.rpm
[root@wallet01 ~]# yum install -y percona-xtrabackup-24.x86_64
[root@wallet01 ~]# xtrabackup -v
xtrabackup version 2.4.13 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3e7ca7c)

[root@wallet01 ~]# su - mysql
[mysql@wallet01 ~]$ mysql -uroot -pabcd.1234
mysql> create user xtrabackup@'localhost' identified by 'xtrabackup';
Query OK, 0 rows affected (0.10 sec)

mysql> grant reload,lock tables,replication client,process on *.* to xtrabackup@'localhost';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

全量備份
[mysql@wallet01 ~]$ mkdir backup
[mysql@wallet01 ~]$ xtrabackup --backup --user=xtrabackup --password=xtrabackup \
--target-dir=/home/mysql/backup/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ cd backup/2019-02-19_08-30-03
[mysql@wallet01 2019-02-19_08-30-03]$ ls -lh
total 1.1G
-rw-r----- 1 mysql mysql  486 Feb 19 08:30 backup-my.cnf
-rw-r----- 1 mysql mysql 1.0G Feb 19 08:30 ibdata1
drwxr-x--- 2 mysql mysql 4.0K Feb 19 08:30 mysql
drwxr-x--- 2 mysql mysql 4.0K Feb 19 08:30 performance_schema
drwxr-x--- 2 mysql mysql 4.0K Feb 19 08:30 tpcc100
-rw-r----- 1 mysql mysql  10M Feb 19 08:30 undo001
-rw-r----- 1 mysql mysql  10M Feb 19 08:30 undo002
-rw-r----- 1 mysql mysql  10M Feb 19 08:30 undo003
-rw-r----- 1 mysql mysql   27 Feb 19 08:30 xtrabackup_binlog_info
-rw-r----- 1 mysql mysql  121 Feb 19 08:30 xtrabackup_checkpoints
-rw-r----- 1 mysql mysql  532 Feb 19 08:30 xtrabackup_info
-rw-r----- 1 mysql mysql  14K Feb 19 08:30 xtrabackup_logfile

[mysql@wallet01 2019-02-19_08-30-03]$ cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 25333881804
last_lsn = 25333881804
compact = 0
recover_binlog_info = 0

第一次增量備份
[mysql@wallet01 ~]$ xtrabackup --backup --user=xtrabackup --password=xtrabackup \
--incremental-basedir=/home/mysql/backup/2019-02-19_08-30-03/ \
--target-dir=/home/mysql/backup/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ cd backup/2019-02-19_09-30-29
[mysql@wallet01 2019-02-19_09-30-29]$ ls -lh
total 52M
-rw-r----- 1 mysql mysql  486 Feb 19 09:31 backup-my.cnf
-rw-r----- 1 mysql mysql 1.7M Feb 19 09:30 ibdata1.delta
-rw-r----- 1 mysql mysql   44 Feb 19 09:30 ibdata1.meta
drwxr-x--- 2 mysql mysql 4.0K Feb 19 09:31 mysql
drwxr-x--- 2 mysql mysql 4.0K Feb 19 09:31 performance_schema
drwxr-x--- 2 mysql mysql 4.0K Feb 19 09:31 tpcc100
-rw-r----- 1 mysql mysql 2.1M Feb 19 09:30 undo001.delta
-rw-r----- 1 mysql mysql   44 Feb 19 09:30 undo001.meta
-rw-r----- 1 mysql mysql 2.1M Feb 19 09:30 undo002.delta
-rw-r----- 1 mysql mysql   44 Feb 19 09:30 undo002.meta
-rw-r----- 1 mysql mysql 2.1M Feb 19 09:30 undo003.delta
-rw-r----- 1 mysql mysql   44 Feb 19 09:30 undo003.meta
-rw-r----- 1 mysql mysql   26 Feb 19 09:31 xtrabackup_binlog_info
-rw-r----- 1 mysql mysql  129 Feb 19 09:31 xtrabackup_checkpoints
-rw-r----- 1 mysql mysql  603 Feb 19 09:31 xtrabackup_info
-rw-r----- 1 mysql mysql  44M Feb 19 09:31 xtrabackup_logfile

[mysql@wallet01 2019-02-19_09-30-29]$ cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 25333881804
to_lsn = 25489295890
last_lsn = 25530471968
compact = 0
recover_binlog_info = 0

第二次增量備份
[mysql@wallet01 ~]$ xtrabackup --backup --user=xtrabackup --password=xtrabackup \
--incremental-basedir=/home/mysql/backup/2019-02-19_09-30-29/ \
--target-dir=/home/mysql/backup/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ cd backup/2019-02-19_10-30-09
[mysql@wallet01 2019-02-19_10-30-09]$ ls -lh
total 78M
-rw-r----- 1 mysql mysql  486 Feb 19 10:31 backup-my.cnf
-rw-r----- 1 mysql mysql 1.7M Feb 19 10:30 ibdata1.delta
-rw-r----- 1 mysql mysql   44 Feb 19 10:30 ibdata1.meta
drwxr-x--- 2 mysql mysql 4.0K Feb 19 10:31 mysql
drwxr-x--- 2 mysql mysql 4.0K Feb 19 10:30 performance_schema
drwxr-x--- 2 mysql mysql 4.0K Feb 19 10:31 tpcc100
-rw-r----- 1 mysql mysql 2.1M Feb 19 10:30 undo001.delta
-rw-r----- 1 mysql mysql   44 Feb 19 10:30 undo001.meta
-rw-r----- 1 mysql mysql 2.1M Feb 19 10:30 undo002.delta
-rw-r----- 1 mysql mysql   44 Feb 19 10:30 undo002.meta
-rw-r----- 1 mysql mysql 2.1M Feb 19 10:30 undo003.delta
-rw-r----- 1 mysql mysql   44 Feb 19 10:30 undo003.meta
-rw-r----- 1 mysql mysql   26 Feb 19 10:31 xtrabackup_binlog_info
-rw-r----- 1 mysql mysql  129 Feb 19 10:31 xtrabackup_checkpoints
-rw-r----- 1 mysql mysql  603 Feb 19 10:31 xtrabackup_info
-rw-r----- 1 mysql mysql  70M Feb 19 10:31 xtrabackup_logfile

[mysql@wallet01 2019-02-19_10-30-09]$ cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 25489295890
to_lsn = 25668068104
last_lsn = 25732913912
compact = 0
recover_binlog_info = 0

備份二進制日誌文件
[root@wallet01 ~]# mysql -uroot -pabcd.1234
mysql> grant replication slave on *.* to 'repl'@'%' identified by 'repl';
Query OK, 0 rows affected (0.07 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.08 sec)

mysql> show master status;
+------------------+-----------+--------------+------------------+-------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+-----------+--------------+------------------+-------------------+
| mysql-bin.000236 | 123063186 |              |                  |                   |
+------------------+-----------+--------------+------------------+-------------------+
1 row in set (0.02 sec)

[root@wallet02 ~]# su - mysql
[mysql@wallet02 ~]$ mkdir backup/binlog
[mysql@wallet02 ~]$ nohup mysqlbinlog -R --raw --host=192.168.1.201 --user=repl --password=repl --port=3306 \
--stop-never mysql-bin.000230 -r /home/mysql/backup/binlog/&

[mysql@wallet02 ~]$ cd backup/binlog
[mysql@wallet02 binlog]$ ls -lh
total 892M
-rw-rw---- 1 mysql mysql 129M Feb 19 10:38 mysql-bin.000230
-rw-rw---- 1 mysql mysql 129M Feb 19 10:38 mysql-bin.000231
-rw-rw---- 1 mysql mysql 129M Feb 19 10:38 mysql-bin.000232
-rw-rw---- 1 mysql mysql 129M Feb 19 10:38 mysql-bin.000233
-rw-rw---- 1 mysql mysql 129M Feb 19 10:38 mysql-bin.000234
-rw-rw---- 1 mysql mysql 129M Feb 19 10:38 mysql-bin.000235
-rw-rw---- 1 mysql mysql 124M Feb 19 10:44 mysql-bin.000236

恢復數據庫
[root@wallet01 ~]# scp /etc/my.cnf 192.168.1.202:/etc

[root@wallet01 ~]# su - mysql
[mysql@wallet01 ~]$ cd backup
[mysql@wallet01 backup]$ scp -r 2019-02-19_08-30-03 192.168.1.202:/home/mysql/backup
[mysql@wallet01 backup]$ scp -r 2019-02-19_09-30-29 192.168.1.202:/home/mysql/backup
[mysql@wallet01 backup]$ scp -r 2019-02-19_10-30-09 192.168.1.202:/home/mysql/backup

[root@wallet02 ~]# wget https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm
[root@wallet02 ~]# rpm -ivh percona-release-0.1-6.noarch.rpm
[root@wallet02 ~]# yum install -y percona-xtrabackup-24.x86_64
[root@wallet02 ~]# xtrabackup -v
xtrabackup version 2.4.13 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3e7ca7c)

[root@wallet02 ~]# su - mysql
[mysql@wallet02 ~]$ xtrabackup --prepare --apply-log-only --target-dir=/home/mysql/backup/2019-02-19_08-30-03
[mysql@wallet02 ~]$ xtrabackup --prepare --apply-log-only --target-dir=/home/mysql/backup/2019-02-19_08-30-03 \
--incremental-dir=/home/mysql/backup/2019-02-19_09-30-29
[mysql@wallet02 ~]$ xtrabackup --prepare --target-dir=/home/mysql/backup/2019-02-19_08-30-03 \
--incremental-dir=/home/mysql/backup/2019-02-19_10-30-09
[mysql@wallet02 ~]$ xtrabackup --copy-back --target-dir=/home/mysql/backup/2019-02-19_08-30-03

[mysql@wallet02 ~]$ service mysqld start
Starting MySQL.. SUCCESS! 

[mysql@wallet02 ~]$ service mysqld status
 SUCCESS! MySQL running (7312)
 
[mysql@wallet02 ~]$ cd backup/2019-02-19_10-30-09
[mysql@wallet02 2019-02-19_10-30-09]$ cat xtrabackup_binlog_info
mysql-bin.000236        48577021

[mysql@wallet02 ~]$ mysqlbinlog --start-position=48577021 /home/mysql/backup/binlog/mysql-bin.000236 | mysql -uroot -pabcd.1234

[mysql@wallet02 ~]$ mysql -uroot -pabcd.1234
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| tpcc100            |
+--------------------+
4 rows in set (0.05 sec)

全量備份腳本
[mysql@wallet01 ~]$ vim full_backup.sh 
#!/bin/bash
user='xtrabackup'
passwd='xtrabackup'
backup_dir='/home/mysql/backup'
/usr/bin/xtrabackup --backup --user=$user --password=$passwd --target-dir=$backup_dir/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ chmod a+x full_backup.sh     

增量備份腳本
[mysql@wallet01 ~]$ vi incr_backup.sh 
#!/bin/bash  
user='xtrabackup'
passwd='xtrabackup'
backup_dir='/home/mysql/backup'
last_day=$(date -d "1 days ago" +%Y-%m-%d)
filename=$(find $backup_dir -name "$last_day*" -print|awk -F / '{print $NF}')
/usr/bin/xtrabackup --backup --user=$user --password=$passwd --incremental-basedir=$backup_dir/$filename 
--target-dir=$backup_dir/`date '+%Y-%m-%d_%H-%M-%S'`

[mysql@wallet01 ~]$ chmod a+x incr_backup.sh

[mysql@wallet01 ~]$ crontab -e
00 3 * * 0 /home/mysql/full_backup.sh>/home/mysql/backup/full_backup.log 2>&1
00 3 * * 1-6 /home/mysql/incr_backup.sh>/home/mysql/backup/incr_backup.log 2>&1

流式和壓縮備份
[mysql@wallet01 ~]$ xtrabackup --backup --user=xtrabackup --password=xtrabackup \
--stream=tar | gzip >/home/mysql/backup/`date '+%Y-%m-%d_%H-%M-%S'`.tar.gz

[mysql@wallet01 ~]$ cd backup
[mysql@wallet01 backup]$ tar izxvf 2019-02-19_10-42-09.tar.gz 
[mysql@wallet01 backup]$ ls -lh
total 1.6G
-rw-rw-r-- 1 mysql mysql 515M Feb 19 10:43 2019-02-19_10-42-09.tar.gz
-rw-rw---- 1 mysql mysql  423 Feb 19 10:43 backup-my.cnf
-rw-rw---- 1 mysql mysql 1.0G Feb 19 10:42 ibdata1
drwxrwxr-x 2 mysql mysql 4.0K Feb 19 10:47 mysql
drwxrwxr-x 2 mysql mysql 4.0K Feb 19 10:47 performance_schema
drwxrwxr-x 2 mysql mysql 4.0K Feb 19 10:47 tpcc100
-rw-rw---- 1 mysql mysql  10M Feb 19 10:42 undo001
-rw-rw---- 1 mysql mysql  10M Feb 19 10:42 undo002
-rw-rw---- 1 mysql mysql  10M Feb 19 10:42 undo003
-rw-rw---- 1 mysql mysql   27 Feb 19 10:43 xtrabackup_binlog_info
-rw-rw---- 1 mysql mysql  121 Feb 19 10:43 xtrabackup_checkpoints
-rw-rw---- 1 mysql mysql  490 Feb 19 10:43 xtrabackup_info
-rw-rw---- 1 mysql mysql  21M Feb 19 10:43 xtrabackup_logfile


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