使用 xtrabakup 搭建基于 GTID 的 mysql replication
xtrabackup 是一个开源的高性能 MySQL 热备份工具,使用 xtrabackup 可以在备份的时候不用停止 MySQL 服务。
通过使用 xtrabackup 可以简单快速的搭建 MySQL 集群。
准备工作
在使用 xtrabackup 搭建 MySQL 集群之前需要做好下面的准备:
Master
: 一个已经启动了的 MySQL 8.0 服务,下文称之为 Master,这个 mysql 服务就是需要被拓展成 replicattion 的服务,Master 所在的系统需要满足下面的条件- MySQL 服务可以通过标准的 TCP IP/Port 进行通信
- SSH 服务已经安装完成,并且已经启动了
- 一个能够进行操作的系统账户
- 一个拥有数据备份权限的 MySQL 账户
- MySQL 服务启用了 binlog 并且 server-id 设置为 2
Slave
:一个安装了 MySQL 服务的系统,Slave 的数据除了 server-id 以外将会与 Master 保持一致,slave 的 server-id 将会是 2xtrabackup
:备份数据所需要的工具
注意:Master 与 Slave 的 MySQL 服务最好保持一致,否则可能会产生预期之外的结果
第一步:备份 Master 数据
xtrabackup 不支持备份远端的数据库,因为需要对数据目录进行操作。但是可以借助 ssh 以及 xbstream 将数据备份到 Slave 上。
在 Slave 上创建数据目录
1 |
|
开始备份
1 |
|
在完成备份之后,你会看到下面的提示
1 |
|
上面的命令会将 Master 的数据拷贝到 Slave 的 /path/to/datadir 目录下。包括 MyISAM,Innodb数据表以及对应的索引。
第二步: 创建备份账户
在 Master 的 MySQL shell 中执行
1 |
|
第三步:处理备份数据
备份数据没有经过处理是无法直接使用的,所以需要处理一下
1 |
|
命令完成后,数据就已经准备就绪了
第四步:配置启动 replication
修改 Slave 的 mysql 配置文件,将 server-id 设置为 2
查看 GTID 的信息
1 |
|
MySQL 8.0.22 之前的版本使用下面的命令
1 |
|
MySQL 8.0.22 以及之后的版本使用:
1 |
|
第五步:检查 Slave 状态
1 |
|
使用 xtrabakup 搭建基于 GTID 的 mysql replication
https://blog.zhangliangliang.cc/post/setting-up-mysql-replication.html