部署MySQL主从半同步复制
一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) —–>IO Thread (从) —–> SQL Thread(从)。
master用户写入数据,生成event记录到binary-log(二进制日志)中.
slave接收master上传来的binlog,然后按顺序应用,重现master上的用户操作.
半同步复制支持多种插件:/usr/lib64/mysql/plugin/*
半同步复制插件:
semisync_master.so
semisync_slave.so
1.查看系统中是否存在插件
rpm -ql mariadb-server | grep semisync
/usr/lib64/mysql/plugin/semisync_master.so
/usr/lib64/mysql/plugin/semisync_slave.so
2.登录master1数据库安装插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
3.检查插件是否安装成功
SHOW PLUGINS;
大约有43条记录
4.启用插件步骤
SHOW GLOBAL VARIABLES LIKE '%semi%'
有4条记录
SET @@global.rpl_semi_sync_master_enabled=ON;
SHOW GLOBAL VARIABLES LIKE '%semi%';
有4条记录
=============================
1.登录master2安装插件
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SHOW PLUGINS;
也是43条记录
2.启动插件步骤:
SHOW GLOBAL VARIABLES LIKE '%semi%';
SET @@global.rpl_semi_sync_slave_enabled=ON;
SHOW GLOBAL VARIABLES LIKE '%semi%';
=============================
查看master1信息
SHOW GLOBAL STATUS LIKE '%semi%';
在maser2启动IO线程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
=======================
查看master1信息
SHOW GLOBAL STATUS LIKE '%semi%';
==================================
在主节点为事先创建的用户进行主从复制授权:
grant replication slave on *.* to 'myslave'@'192.168.200.%' identified by '123123';
重新加载授权表
flush privileges;
查看服务信息
show master status;
=======================
master2指向master1
CHANGE MASTER TO MASTER_HOST='192.168.200.111', MASTER_USER='myslave', MASTER_PASSWORD='123123', MASTER_LOG_FILE='mysql-binlog.000003', MASTER_LOG_POS=487;
与master1信息表相对应
实验测试:
在master1中创建库mydb
CREATE DATABASE mydb CHARACTER SET 'utf8';
在master2中查看库信息
show databases;
实现复制功能