前提条件
安装两个mysql,端口分别是3306、3307且能正常运行,别轻易复制安装文件

一、安装半同步复制插件
- 定位插件文件:
- 在MySQL的安装目录下找到
lib文件夹,然后找到plugin子文件夹。确保semisync_master.dll和semisync_slave.dll这两个文件存在于该文件夹中(对于Windows系统而言)。
- 在MySQL的安装目录下找到
- 在主库上安装插件:
- 使用cmd 命令或者navicate连接到主库。
- 执行以下SQL命令来安装半同步复制主库插件:
-
C:\web\mysql-8.0.22-winx64>cd bin C:\web\mysql-8.0.22-winx64\bin>mysql -h localhost -uroot -p Enter password: ******** mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.dll';
- 在从库上安装插件:
- 同样地,使用MySQL客户端工具连接到从库。
- 执行以下SQL命令来安装半同步复制从库插件:
-
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.dll';
- 验证插件安装:
- 在主库和从库上,执行以下SQL命令来验证插件是否已正确安装:
-
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
二、配置主从库
- 配置主库:
- 编辑主库的
my.ini配置文件(通常位于MySQL安装目录下)。 - 在
[mysqld]部分添加以下配置: -
ini #==========主从配置master==================== #binlog 文件名 log-bin=mysql-bin binlog_format=ROW server_id=1 #设置需要同步的数据库名 binlog-do-db=course_db #屏蔽数据库同步 binlog-ignore-db=mysql binlog-ignore-db=performance_schema binlog-ignore-db=information_schema #半同步配置 #启用半同步复制 rpl_semi_sync_master_enabled=1 #设置超时时间,单位为毫秒 rpl_semi_sync_master_timeout=1000
- 编辑主库的
- 配置从库:
- 编辑主库的
my.ini配置文件(通常位于MySQL安装目录下)。 - 在
[mysqld]部分添加以下配置: -
ini #==========主从配置slave==================== #binlog 文件名 log-bin=mysql-bin binlog_format=ROW server_id=2 #设置需要同步的数据库 replicate_wild_do_table=course_db.% #设置忽略同步的数据库 replicate_wild_ignore_table=mysql.% replicate_wild_ignore_table=performance_schema.% replicate_wild_ignore_table=information_schema.% #半同步配置 rpl_semi_sync_slave_enabled=1
- 编辑主库的
- 重启MySQL服务:
- 在Windows服务管理器中重启MySQL服务,以使配置生效。
三、启动和验证半同步复制
- 在主库上创建复制用户:
- 使用以下SQL命令在主库上创建一个用于复制的用户,并授予必要的权限:
-
CREATE USER 'replica_db'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'replica_db'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica_db'@'%'; FLUSH PRIVILEGES; - 验证用户的plugin必须为"mysql_native_password"
-
select user,host,plugin,authentication_string from mysql.user
-
在主库上查询锚点:
-
show master status; - 记录下file 和Position的值
-
-
在从库上配置复制源:
-
使用以下SQL命令在从库上配置复制源,指向主库:
-
STOP SLAVE; RESET SLAVE ALL; CHANGE MASTER TO MASTER_HOST='主库IP地址', MASTER_USER='replica_db', MASTER_PASSWORD='replica_db', MASTER_LOG_FILE='mysql-bin.000001', # 替换为当前主库的二进制日志文件名file MASTER_LOG_POS= 4; # 替换为当前主库的二进制日志位置Position(从SHOW MASTER STATUS获取)
-
-
启动从库的复制线程
-
在从库上执行以下SQL命令来启动复制线程:
-
START SLAVE;
-
-
验证复制状态:
-
在从库上执行以下SQL命令来验证复制状态:
-
SHOW SLAVE STATUS -
检查
Slave_IO_Running和Slave_SQL_Running的值是否为Yes,以及Rpl_semi_sync_slave_status的值是否为ON,以确认半同步复制是否已成功启动
-
1520

被折叠的 条评论
为什么被折叠?



