• 欢迎光临~

6.xtrabackup实现全量+增量+binlog恢复库

开发技术 开发技术 2022-07-30 次浏览

6.xtrabackup实现全量+增量+binlog恢复库

 

利用xtrabackup8.0 完全,增量备份及还原MySQL8.0

1 备份过程

1)完全备份:

[root@CentOS8 ~]# yum install -y percona-xtrabackup-80-8.0.26-18.1.el8.x86_64.rpm

[root@centos8 ~]#mkdir /backup/

[root@centos8 ~]#xtrabackup -uroot -pmagedu --backup --target-dir=/backup/base

[root@centos8 ~]# du -sh /backup/base/

71M /backup/base/

 

2)第一次修改数据

[root@CentOS8 backup]# mysql -uroot -pMmagedu0!

(root@localhost) [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| hellodb            |

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

5 rows in set (0.00 sec)

 

(root@localhost) [(none)]> use hellodb;

(root@localhost) [hellodb]> show tables;

+-------------------+

| Tables_in_hellodb |

+-------------------+

| classes           |

| coc               |

| courses           |

| scores            |

| students          |

| teachers          |

| toc               |

+-------------------+

7 rows in set (0.00 sec)

 

(root@localhost) [hellodb]> select * from students;

+-------+---------------+-----+--------+---------+-----------+

| StuID | Name          | Age | Gender | ClassID | TeacherID |

+-------+---------------+-----+--------+---------+-----------+

|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |

|     2 | Shi Potian    |  22 | M      |       1 |         7 |

|     3 | Xie Yanke     |  53 | M      |       2 |        16 |

|     4 | Ding Dian     |  32 | M      |       4 |         4 |

|     5 | Yu Yutong     |  26 | M      |       3 |         1 |

|     6 | Shi Qing      |  46 | M      |       5 |      NULL |

|     7 | Xi Ren        |  19 | F      |       3 |      NULL |

|     8 | Lin Daiyu     |  17 | F      |       7 |      NULL |

|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |

|    10 | Yue Lingshan  |  19 | F      |       3 |      NULL |

|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |

|    12 | Wen Qingqing  |  19 | F      |       1 |      NULL |

|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |

|    14 | Lu Wushuang   |  17 | F      |       3 |      NULL |

|    15 | Duan Yu       |  19 | M      |       4 |      NULL |

|    16 | Xu Zhu        |  21 | M      |       1 |      NULL |

|    17 | Lin Chong     |  25 | M      |       4 |      NULL |

|    18 | Hua Rong      |  23 | M      |       7 |      NULL |

|    19 | Xue Baochai   |  18 | F      |       6 |      NULL |

|    20 | Diao Chan     |  19 | F      |       7 |      NULL |

|    21 | Huang Yueying |  22 | F      |       6 |      NULL |

|    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |

|    23 | Ma Chao       |  23 | M      |       4 |      NULL |

|    24 | Xu Xian       |  27 | M      |    NULL |      NULL |

|    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |

+-------+---------------+-----+--------+---------+-----------+

 

(root@localhost) [hellodb]> insert students (name,age) values ('zhang wuji',18);

Query OK, 1 row affected (0.01 sec)

 

(root@localhost) [hellodb]> select * from students where name='zhang wuji';

+-------+------------+-----+--------+---------+-----------+

| StuID | Name       | Age | Gender | ClassID | TeacherID |

+-------+------------+-----+--------+---------+-----------+

|    26 | zhang wuji |  18 | F      |    NULL |      NULL |

+-------+------------+-----+--------+---------+-----------+

 

 

3)第一次增量备份

 

[root@centos8 ~]#xtrabackup -uroot -pmagedu --backup --target-dir=/backup/inc1 -- incremental-basedir=/backup/base

[root@CentOS8 backup]# ls /backup/

base  inc1

[root@centos8 ~]#cat /backup/inc1/xtrabackup_info

[root@CentOS8 inc1]# cat xtrabackup_info

uuid = a0bce652-0f2c-11ed-8609-000c298fbddd

name =

tool_name = xtrabackup

tool_command = -uroot -pMmagedu0! --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base

tool_version = 8.0.26-18

ibbackup_version = 8.0.26-18

server_version = 8.0.26

start_time = 2022-07-29 18:53:04

end_time = 2022-07-29 18:53:06

lock_time = 0

binlog_pos = filename 'binlog.000003', position '156'

innodb_from_lsn = 18242993

innodb_to_lsn = 18243411

partial = N

incremental = Y

format = file

compressed = N

encrypted = N

 

[root@centos8 ~]#cat /backup/inc1/xtrabackup_checkpoints

 

[root@centos8 ~]#cat /backup/inc1/xtrabackup_binlog_info

 

4)第二次修改数据

[root@CentOS8 inc1]# mysql -uroot -pMmagedu0!

(root@localhost) [(none)]> use hellodb;

(root@localhost) [hellodb]> insert into students (name,age) values ('zhao miin',17);

(root@localhost) [hellodb]> select * from students where name='zhao min';

+-------+----------+-----+--------+---------+-----------+

| StuID | Name     | Age | Gender | ClassID | TeacherID |

+-------+----------+-----+--------+---------+-----------+

|    27 | zhao min |  17 | F      |    NULL |      NULL |

+-------+----------+-----+--------+---------+-----------+

 

 

5)第二次增量

[root@centos8 ~]#xtrabackup -uroot -pmagedu --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

 

[root@CentOS8 inc1]# ls /backup/

base  inc1  inc2

 

#查看xtrabackup相关文件

root@centos8 ~]#cat /backup/inc2/xtrabackup_info

[root@CentOS8 inc1]# cat /backup/inc2/xtrabackup_info

uuid = c5bc696a-0f2d-11ed-8609-000c298fbddd

name =

tool_name = xtrabackup

tool_command = -uroot -pMmagedu0! --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

tool_version = 8.0.26-18

ibbackup_version = 8.0.26-18

server_version = 8.0.26

start_time = 2022-07-29 19:01:16

end_time = 2022-07-29 19:01:18

lock_time = 0

binlog_pos = filename 'binlog.000004', position '156'

innodb_from_lsn = 18243411

innodb_to_lsn = 18243817

partial = N

incremental = Y

format = file

compressed = N

encrypted = N

 

[root@centos8 ~]#cat /backup/inc2/xtrabackup_binlog_info

 

6)[root@CentOS8 inc1]# scp -r /backup/* 10.0.0.18:/backup/

root@10.0.0.18's password:

xtrabackup_logfile                       100% 2560     1.1MB/s   00:00    

ibdata1                                  100%   12MB  28.7MB/s   00:00    

sys_config.ibd                           100%  112KB  16.8MB/s   00:00    

classes.ibd                              100%  112KB   6.6MB/s   00:00    

coc.ibd                                  100%  112KB  28.0MB/s   00:00    

courses.ibd                              100%  112KB  28.8MB/s   00:00    

scores.ibd                               100%  112KB  28.1MB/s   00:00    

students.ibd                             100%  112KB  30.1MB/s   00:00    

teachers.ibd                             100%  112KB  25.6MB/s   00:00    

toc.ibd                                  100%  112KB  23.3MB/s   00:00

 

#备份过程生成三个备份目录 /backup/{base,inc1,inc2}

[root@CentOS8 ~]# hostname -I

10.0.0.18

[root@CentOS8 ~]# ls /backup/

base  inc1  inc2

 

7) 模拟数据库破坏

Yum安装数据库目录在/var/lib/mysql中

[root@CentOS8 inc1]# ls /var/lib/mysql

 auto.cnf            '#ib_16384_1.dblwr'   mysqlx.sock

 binlog.000001        ib_buffer_pool       mysqlx.sock.lock

 binlog.000002        ibdata1              performance_schema

 binlog.000003        ib_logfile0          private_key.pem

 binlog.000004        ib_logfile1          public_key.pem

 binlog.index         ibtmp1               server-cert.pem

 ca-key.pem          '#innodb_temp'        server-key.pem

 ca.pem               mysql                sys

 client-cert.pem      mysql.ibd            undo_001

 client-key.pem       mysql.sock           undo_002

 hellodb              mysql.sock.lock

'#ib_16384_0.dblwr'   mysql_upgrade_info

 

[root@CentOS8 inc1]# mv  /var/lib/mysql /usr/local/

[root@CentOS8 inc1]# ls /var/lib/mysql

ls: cannot access '/var/lib/mysql': No such file or directory

 

[root@CentOS8 backup]# systemctl restart mysql

Failed to restart mysql.service: Unit mysql.service not found.

 

[root@CentOS8 backup]# mysql -uroot -pMmage0!

mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

 

 

 

2还原过程

1)预准备完全备份,此选项--apply-log-only 阻止回滚未完成的事务

[root@centos8 ~]#xtrabackup --prepare --apply-log-only --target-dir=/backup/base

 

2)合并第1次增量备份到完全备份

[root@centos8 ~]#xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1

 

3)合并第2次增量备份到完全备份:最后一次还原不需要加选项--apply-log-only

[root@centos8 ~]#xtrabackup --prepare --target-dir=/backup/base --incremental-

dir=/backup/inc2

 

4)复制到数据库目录,注意数据库目录必须为空,MySQL服务不能启动

[root@centos8 ~]#xtrabackup --copy-back --target-dir=/backup/base

 

5)还原属性:

[root@centos8 ~]#chown -R mysql:mysql /var/lib/mysql

 

6)启动服务:

[root@centos8 ~]#service mysqld start

 

 

可以看到数据库修好,能重新登录

[root@CentOS8 ~]# mysql -uroot -pMmagedu0!

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or g.

Your MySQL connection id is 8

Server version: 8.0.26 Source distribution

 

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

 

(root@localhost) [(none)]> use hellodb;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

(root@localhost) [hellodb]> select * from st

status             students.ClassID   students.StuID    

students           students.Gender    students.TeacherID

students.Age       students.Name     

(root@localhost) [hellodb]> select * from students;

+-------+---------------+-----+--------+---------+-----------+

| StuID | Name          | Age | Gender | ClassID | TeacherID |

+-------+---------------+-----+--------+---------+-----------+

|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |

|     2 | Shi Potian    |  22 | M      |       1 |         7 |

 

程序员灯塔
转载请注明原文链接:6.xtrabackup实现全量+增量+binlog恢复库
喜欢 (0)