文档课题:运用xtrabackup异机迁移单库.
数据库:mysql 5.7.21
innobackupex版本:2.4.12
innobackupex安装包:percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
节点1:192.168.133.111 + mysql-leo-master
节点2:192.168.133.112 + mysql-leo-slave
1、测试数据确认
--节点1数据.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| booksDB            |
| fruitsDB           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
--节点2数据.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| fruitsDB           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

目标:将192.168.133.111节点上的booksDB库运用xtrabackup迁移到192.168.133.112节点.

2、备份booksDB库
2.1、单库备份
--节点1通过xtrabackup备份booksDB库.
[mysql@mysql-leo-master ~]$ /bin/innobackupex --defaults-file=/home/mysql/etc/my.cnf --socket=/mysql/data/mysql.sock --user=root --password=mysql_4U --databases=booksDB --port=3306 /mysql/data/bak
[mysql@mysql-leo-master booksDB]$ pwd
/mysql/data/bak/2023-11-13_23-03-12/booksDB
[mysql@mysql-leo-master booksDB]$ ll
total 62640
-rw-r-----. 1 mysql mysql     8778 Nov 13 23:03 article.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 article.ibd
-rw-r-----. 1 mysql mysql     8594 Nov 13 23:03 book.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 book.ibd
-rw-r-----. 1 mysql mysql     8586 Nov 13 23:03 class.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 class.ibd
-rw-r-----. 1 mysql mysql       67 Nov 13 23:03 db.opt
-rw-r-----. 1 mysql mysql     8646 Nov 13 23:03 demo_table.frm
-rw-r-----. 1 mysql mysql 37748736 Nov 13 23:03 demo_table.ibd
-rw-r-----. 1 mysql mysql    14071 Nov 13 23:03 lmt_intercus_agr.frm
-rw-r-----. 1 mysql mysql   294912 Nov 13 23:03 lmt_intercus_agr.ibd
-rw-r-----. 1 mysql mysql     8596 Nov 13 23:03 phone.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 phone.ibd
-rw-r-----. 1 mysql mysql     8710 Nov 13 23:03 staffs.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 staffs.ibd
-rw-r-----. 1 mysql mysql     8620 Nov 13 23:03 tb.frm
-rw-r-----. 1 mysql mysql 25165824 Nov 13 23:03 tb.ibd
-rw-r-----. 1 mysql mysql     8646 Nov 13 23:03 tbl_user.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 tbl_user.ibd
-rw-r-----. 1 mysql mysql     8686 Nov 13 23:03 test03.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 test03.ibd

2.2、备份表结构
--备份booksDB库的表结构.
[mysql@mysql-leo-master ~]$ /usr/local/mysql/bin/mysqldump -uroot -pmysql_4U -P3306 --single-transaction --master-data=2 -d -B booksDB > /tmp/booksDB.sql
[mysql@mysql-leo-master tmp]$ ls -ltr | grep booksDB.sql
-rw-rw-r--. 1 mysql mysql 9988 Nov 13 22:35 booksDB.sql

2.3、传输表结构备份集
--将节点1的表结构备份集传输到节点2.
[mysql@mysql-leo-master tmp]$ scp booksDB.sql mysql@192.168.133.112:/tmp

3、恢复
注意:3.1-3.4、3.6在节点2上执行,3.4-3.5在节点1执行.
3.1、恢复前备份
--对节点2进行全备.
[mysql@mysql-leo-slave ~]$ nohup /bin/innobackupex --defaults-file=/home/mysql/etc/my.cnf --socket=/mysql/data/mysql.sock --user=root --password=mysql_4U --port=3306 /tmp &

3.2、导入表结构
--将节点1备份的booksDB库的表结构导入到节点2(192.168.133.112).
[mysql@mysql-leo-slave ~]$ mysql -uroot -pmysql_4U -P3306 < /tmp/booksDB.sql

3.3、生成丢弃/导入表空间SQL语句
--在节点2(192.168.133.112)生成丢弃/导入表空间的SQL语句.

#生成丢弃表空间的SQL.
> select concat('alter table ',table_schema,'.',TABLE_NAME , ' discard tablespace', ';') from  information_schema.tables where TABLE_SCHEMA = 'booksDB' into outfile '/mysql/bak/file/discard.sql';

#生成导入表空间的SQL.
> select concat('alter table ',table_schema,'.',TABLE_NAME , ' import tablespace', ';') from  information_schema.tables where TABLE_SCHEMA = 'booksDB' into outfile '/mysql/bak/file/import.sql';

3.4、丢弃表空间
--登录节点2(192.168.133.112),执行丢弃表空间的sql语句.
> source /mysql/bak/file/discard.sql;

--确认192.168.133.112节点底层数据文件.
[mysql@mysql-leo-slave booksDB]$ pwd
/mysql/data/booksDB
[mysql@mysql-leo-slave booksDB]$ ls -ltr
total 128
-rw-r-----. 1 mysql mysql    67 Nov 13 22:39 db.opt
-rw-r-----. 1 mysql mysql  8778 Nov 13 22:39 article.frm
-rw-r-----. 1 mysql mysql  8594 Nov 13 22:39 book.frm
-rw-r-----. 1 mysql mysql  8586 Nov 13 22:39 class.frm
-rw-r-----. 1 mysql mysql  8646 Nov 13 22:39 demo_table.frm
-rw-r-----. 1 mysql mysql 14071 Nov 13 22:39 lmt_intercus_agr.frm
-rw-r-----. 1 mysql mysql  8596 Nov 13 22:39 phone.frm
-rw-r-----. 1 mysql mysql  8710 Nov 13 22:39 staffs.frm
-rw-r-----. 1 mysql mysql  8620 Nov 13 22:39 tb.frm
-rw-r-----. 1 mysql mysql  8646 Nov 13 22:39 tbl_user.frm
-rw-r-----. 1 mysql mysql  8686 Nov 13 22:39 test03.frm

说明:可以看到ibd文件已被丢弃.
3.4、prepare备份文件
--节点1(192.168.133.111)执行,注意此处需添加--export选项,其允许导出单个表以进行导入到另一个服务器.
[mysql@mysql-leo-master booksDB]$ /bin/innobackupex --apply-log --export /mysql/data/bak/2023-11-13_23-03-12
......
xtrabackup: starting shutdown with innodb_fast_shutdown = 0
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 897943080
231113 23:06:02 completed OK!

--查看备份文件目录.
[mysql@mysql-leo-master booksDB]$ ll
total 62840
-rw-rw-r--. 1 mysql mysql      827 Nov 13 23:05 article.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 article.exp
-rw-r-----. 1 mysql mysql     8778 Nov 13 23:03 article.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 article.ibd
-rw-rw-r--. 1 mysql mysql      498 Nov 13 23:05 book.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 book.exp
-rw-r-----. 1 mysql mysql     8594 Nov 13 23:03 book.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 book.ibd
-rw-rw-r--. 1 mysql mysql      397 Nov 13 23:05 class.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 class.exp
-rw-r-----. 1 mysql mysql     8586 Nov 13 23:03 class.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 class.ibd
-rw-r-----. 1 mysql mysql       67 Nov 13 23:03 db.opt
-rw-rw-r--. 1 mysql mysql      698 Nov 13 23:05 demo_table.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 demo_table.exp
-rw-r-----. 1 mysql mysql     8646 Nov 13 23:03 demo_table.frm
-rw-r-----. 1 mysql mysql 37748736 Nov 13 23:03 demo_table.ibd
-rw-rw-r--. 1 mysql mysql     2305 Nov 13 23:05 lmt_intercus_agr.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 lmt_intercus_agr.exp
-rw-r-----. 1 mysql mysql    14071 Nov 13 23:03 lmt_intercus_agr.frm
-rw-r-----. 1 mysql mysql   294912 Nov 13 23:03 lmt_intercus_agr.ibd
-rw-rw-r--. 1 mysql mysql      503 Nov 13 23:05 phone.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 phone.exp
-rw-r-----. 1 mysql mysql     8596 Nov 13 23:03 phone.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 phone.ibd
-rw-rw-r--. 1 mysql mysql      696 Nov 13 23:05 staffs.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 staffs.exp
-rw-r-----. 1 mysql mysql     8710 Nov 13 23:03 staffs.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 staffs.ibd
-rw-rw-r--. 1 mysql mysql      777 Nov 13 23:05 tb.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 tb.exp
-rw-r-----. 1 mysql mysql     8620 Nov 13 23:03 tb.frm
-rw-r-----. 1 mysql mysql 25165824 Nov 13 23:03 tb.ibd
-rw-rw-r--. 1 mysql mysql      617 Nov 13 23:05 tbl_user.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 tbl_user.exp
-rw-r-----. 1 mysql mysql     8646 Nov 13 23:03 tbl_user.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 tbl_user.ibd
-rw-rw-r--. 1 mysql mysql      730 Nov 13 23:05 test03.cfg
-rw-r-----. 1 mysql mysql    16384 Nov 13 23:05 test03.exp
-rw-r-----. 1 mysql mysql     8686 Nov 13 23:03 test03.frm
-rw-r-----. 1 mysql mysql   114688 Nov 13 23:03 test03.ibd

说明:可以看到prepare备份文件后,多出cfg、exp结尾的文件.

3.5、传输备份文件
--在节点1上将准备好的备份文件中后缀名为cfg、ibd、exp的备份集传输到节点2实例的booksDB库下.
[mysql@mysql-leo-master booksDB]$ scp /mysql/data/bak/2023-11-13_23-03-12/booksDB/*.ibd /mysql/data/bak/2023-11-13_23-03-12/booksDB/*.cfg /mysql/data/bak/2023-11-13_23-03-12/booksDB/*.exp mysql@192.168.133.112:/mysql/data/booksDB/
注意:若传输到节点2后文件的属性不对,按如下指令进行修改.
chown -R mysql:mysql /mysql/data/booksDB/

3.6、导入表空间
--登录节点2执行导入表空间的SQL语句.
mysql> source /mysql/bak/file/import.sql;

4、验证数据
4.1、重启前验证
--节点2验证表数据.
mysql> use booksDB;
mysql> show tables;
+-------------------+
| Tables_in_booksDB |
+-------------------+
| article           |
| book              |
| class             |
| demo_table        |
| lmt_intercus_agr  |
| phone             |
| staffs            |
| tb                |
| tbl_user          |
| test03            |
+-------------------+
10 rows in set (0.00 sec)

mysql> select count(*) from book;
+----------+
| count(*) |
+----------+
|       20 |
+----------+
1 row in set (0.00 sec)

4.2、重启后验证
--重启节点2数据库后再次验证.
mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[mysql@mysql-leo-slave booksDB]$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/home/mysql/etc/my.cnf &
[mysql@mysql-leo-slave booksDB]$ mysql -uroot -p
mysql> use booksDB;
mysql> select count(*) from staffs;
+----------+
| count(*) |
+----------+
|        3 |
+----------+
1 row in set (0.00 sec)

说明:booksDB数据库成功导入节点2.

参考网址:http://www.bryh.cn/a/261126.html