Win10 - MySQL 8 Zip 版 - 搭建基于 GTID 的主从复制
配置环境:Windows 10 - MySQL 压缩版
前言
GTID 是干嘛的?
GTID (Global Transaction IDentifier) 是全局事务标识。它具有全局唯一性,一个事务对应一个GTID。唯一性不仅限于主服务器,GTID在所有的从服务器上也是唯一的。一个GTID在一个服务器上只执行一次,从而避免重复执行导致数据混乱或主从不一致。
在传统的复制里面,当发生故障需要主从切换时,服务器需要找到binlog和pos点,然后将其设定为新的主节点开启复制。相对来说比较麻烦,也容易出错。在MySQL 5.6里面,MySQL会通过内部机制自动匹配GTID断点,不再寻找binlog和pos点。我们只需要知道主节点的ip,端口,以及账号密码就可以自动复制。
http://mysql.taobao.org/monthly/2020/05/09/
在传统的主从复制中,我们需要在从库中指定主库的 Log 文件与 Position ,在基于 DTID 的主从复制中,不需要这一步骤。
准备两个 MySQL 服务实例
8.0 压缩版下载地址:
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.16-winx64.zip
解压后再复制一份,假设命名为 mysql-8.0.16-winx64
和 mysql-8.0.16-winx64-2
修改主 MySQL-8的 my.ini
在 mysql-8.0.16-winx64
目录下添加 my.ini 文件,内容如下:
1 |
|
修改从 MySQL-8的 my.ini
在从 mysql-8.0.16-winx64-2
目录下添加 my.ini 文件,内容如下:
1 |
|
初始化和启动数据库
空数据库需要初始化,分别在两个数据库的 \bin
目录下执行 mysqld --initialize-insecure
进行初始化。
分别启动主和从,在两个数据库的 \bin
目录下直接执行 mysqld
或 start mysqld
命令即可。
配置主节点
用 mysql
命令登录到主节点:
1 |
|
进入后执行下面命令
1 |
|
创建数据库:
1 |
|
主节点证书文件
1 |
|
这个文件在初始化后位于 \bin\data
下
因为 MySQL 8 默认是用 caching_sha2_password
做认证插件,这点与 MySQL 5 不同:
1 |
|
这个文件就是基于默认设置 caching_sha2_password
下的通讯公钥文件。默认情况服务器不会给客户端发送,所以需要拷贝到从节点的目录下。
如果不想拷贝的话 :
MySQL 8.0 的版本要在从数据库初始设置(CHANGE MASTER TO)加:
MASTER_PUBLIC_KEY_PATH = 'key_file_name'
或者
GET_MASTER_PUBLIC_KEY = {0|1}
配置从节点
把刚才的 public_key.pem
文件改名为 master_public_key.pem
然后拷贝到从服务器的 \bin\data
文件夹中,这个文件夹在用上面的命令初始化之后才有。
mysql
命令登录到从节点:
1 |
|
1 |
|
这里有个问题,MySQL 8 下面不需要创建 db 。否则会报错说已经存在 db 。
–创建数据库:create schema db;–
直接开始执行同步start/stop slave;
验证操作
主库
在主库执行:
1 |
|
从库
在从库查看数据同步情况
1 |
|
查看命令
可以通过 show master status\G
,show slave status\G
查看状态,或定位一些问题
可以能改过 stop slave;
start slave;
来停止复制。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!