1.練習數據增量備份
增量備份:備份上次備份后,新產生的數據。
PERCONA Xtrabackup是一款強大的在線熱備份工具,備份過程中不鎖庫表,適合生產環境。支持完全備份與恢復、增量備份與恢復、差異備份與恢復。
安裝Xtrabackup
150、151主機均操作安裝
[root@mysql151 ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-33/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-33.1.el8.x86_64.rpm?_gl=1*xsf375*_gcl_au*MTQ3NTE4MjI2MC4xNzQ2MDI1MjYy
[root@mysql151 ~]# yum install -y zstd perl-DBD-MySQL
[root@mysql151 ~]# rpm -ivh percona-xtrabackup-80-8.0.35-33.1.el8.x86_64.rpm
在mysql150主機 完成增量備份練習
對數據做增量備份前,必須先有一次備份,也就是首次備份,通常首次備份備份所有數據;比如每周周一完全備份,每周周二到周日增量備份。
周一完全備份(備份所有數據)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/fullbak --datadir=/var/lib/mysql
[root@mysql150 ~]# ls /fullbak/
backup-my.cnf binlog.index ibdata1 mysql.ibd sys test2 undo_002 xtrabackup_checkpoints xtrabackup_logfile
binlog.000002 ib_buffer_pool mysql performance_schema test undo_001 xtrabackup_binlog_info xtrabackup_info xtrabackup_tablespaces
單獨開個頁面 用于插入新數據
[root@mysql150 mysql]# mysql -uroot -p123456
mysql> insert into test.one values ('測試1',11,'女');周二增量備份(備份周一備份后新產生的數據)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new2 --incremental-basedir=/fullbak --datadir=/var/lib/mysql
插入新數據
mysql> insert into test.one values ('測試2',11,'女');周三增量備份(備份周二備份后新產生的數據)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new3 --incremental-basedir=/new2 --datadir=/var/lib/mysql
插入新數據
mysql> insert into test.one values ('測試3',11,'女');周四增量備份(備份周三備份后新產生的數據)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new4 --incremental-dir=/new3 --datadir=/var/lib/mysql
2.練習數據增量恢復
增量恢復數據步驟:
- 準備恢復數據
- 合并數據
- 清空數據庫目錄
- 拷貝數據
- 修改數據庫目錄所有者/組用戶為mysql
- 重啟數據庫服務
具體操作如下:
把MySQL150主機的備份文件拷貝給mysql151
[root@mysql150 ~]# ls /|grep new
new2
new3
new4
new5
new6
new7
[root@mysql150 ~]# ls /|grep fullbak
fullbak
[root@mysql150 ~]# scp -r /new* root@192.168.10.151:/opt
[root@mysql150 ~]# scp -r /fullbak* root@192.168.10.151:/opt在MySQL51主機使用備份文件恢復數據
1)、準備恢復數據
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak
2)、合并數據
//將周二的增量數據拷貝到周一備份目錄里,合并后周一的目錄里存放的是
周一 + 周二 的數據
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak --incremental-dir=/opt/new2
//將周三的增量數據拷貝到周一備份目錄里,合并后周一的目錄里存放的是
周一 + 周二 + 周三 的數據
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak --incremental-dir=/opt/new3清空數據庫目錄[root@mysql151 ~]# rm -rf /var/lib/mysql/*
[root@mysql151 ~]# xtrabackup --prepare --target-dir=/opt/fullbak
拷貝數據
[root@mysql151 ~]# xtrabackup --copy-back --target-dir=/opt/fullbak
修改數據庫目錄所有者/組用戶為mysql
[root@mysql151 ~]# chown -R mysql:mysql /var/lib/mysql
重啟數據庫服務
[root@mysql51 ~]# systemctl restart mysqld
[root@mysql151 ~]# mysql -uroot -p123456
mysql> select * from test.one;
+---------+------+------+
| name | age | sex |
+---------+------+------+
| 測試 | 10 | 男 |
| 測試1 | 11 | 女 |
| 測試2 | 11 | 女 |
+---------+------+------+
3 rows in set (0.01 sec)