mysql 半同步测试,mysql半同步主从复制

在 MySQL5.5之前, MySQL的复制是异步操作,主库和从库的数据之间存在一定的延迟,这样存在一个隐患:当在主库上写人一个事务并提交成功,而从库尚未得到主库推送的 Binlog日志时,主库宕机了,例如主库可能因磁盘损坏、内存故障等造成主库上该事务 Binlog丢失,此时从库就可能损失这个事务,从而造成主从不一致。

半同步复制与异步复制的安装区别:半同步复制需要安装创建

show variables like 'log_bin'

995d92c8dbd68d5848734b7883a60411.png

刚开始是关闭(off)的,在以下配置完成后,会自动打开

1fcd8689bccd51e4f2cc846c8e5fac4e.png

(1)首先,判断 MySQL服务器是否支持动态增加插件:

mysql> select @@have_dynamic_loading;

f35dbcb76c54430bc4d910a82125523f.png

2)确认支持动态增加插件后,检查 MySQL(mysql5.6及以上均存在 )的安装目录下是否存在插件:

2b986881fb3d82842261c53bfeb3b7c1.png

一:安装插件:

在主库上安装插件semisync_master.so:

mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';

从库上则安装 semisync_slave.so插件:

mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';

安装完成后,从 plugin表中能够看到刚才安装的插件

mysql> select * from mysql.plugin;

3)需要分别在主库和从库上配置参数打开半同步semi-sync,默认半同步设置是不打开的,主库上配置全局参数:

mysql> set global rpl_semi_sync_master_enabled=1;

mysql> set global rpl_semi_sync_master_timeout=30000;

show variables like '%rpl_semi_sync_master%';

从库上一样配置全局参数:

mysql> set global rpl_semi_sync_slave_enabled=1;

show variables like '%rpl_semi_sync_slave_enabled%';

二:异步主从复制配置

1、确保主从库安装了相同版本的数据库。

2、在主库上,设置一个复制使用的账户,并授予 REPLICATION SLAVE权限。这里创建一个复制用户repl,可以从IP为172.17.0.2(从库IP)的主机进行连接:

ad13ddd7ca68b5ec217035ace37c18a6.png

命令文本:

GRANT REPLICATION SLAVE ON *.* To 'rep1'@'172.17

3、修改主数据库服务器的配置文件 my.cnf,开启 BINLOG,并设置 server-id的值。这两个参数的修改需要重新启动数据库服务才可以生效

# 寻找MySQL的配置文件 my.cnf find / -name my.cnf

vi /etc/my.cnf

server-id = 1 #唯一,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己唯一的 server-id值

log-bin = mysql-bin #开启BINLOG 二进制日志

# 主数据库重新启动

mysql service mysqld restart

c96fd303b18c76782b07e14cb26c81f4.png

4、SHOW MASTER STATUS; # 主数据库查看状态

690d2dfc4adbde62965d9383d6fc9563.png

5、# 寻找从库MySQL的配置文件

my.cnf find / -name my.cnf

vi /etc/my.cnf

server-id=2

82b8a7e4c9c7776c5bc824a83b167ff6.png

6、重启从库mysql服务

mysql service mysqld restart

7、对从数据库服务器做相应设置,指定复制使用的用户,主数据库服务器的IP、端口

以及开始执行复制的日志文件和位置等,参考代码如下:

mysql> CHANGE MASTER TO

->MASTER_HOST=master host name

->MASTER_USER=replication_user_name

-> MASTER PASSWORD=replication_password

->MASTER_LOG_FILE='recorded_log_file_name

->MASTER_LOG_POS=recorded _log_position

举例说明如下:

CHANGE MASTER TO MASTER_HOST='172.17.0.3',MASTER_PORT=3306,MASTER_USER='rep1',MASTER_PASSWORD='1234test' ,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=527;

a20fd87bb07c991312345fb88c2c8f49.png

8、在从库上,启动 slave同步线程

start slave;

1776f3bf91dba34e08c27e242b6ad599.png

9、# 从库查看状态

show slave status\G;

a28b3c9eb552b04b8feabecfcaec2283.png

当Slave_IO_Running和Slave_SQL_Running都为YES的时候,表示主从复制配置成功了。

slave上执行 show processlist\G 命令将显示类似如下的进程:

7baff8d9e5af9c48bedfdb2450ae6dff.png

10、在master上执行 show processlist\G命令将显示类似如下的进程:

0199dbd5e7f310ab577a5c8311424ad0.png

13测试:

在主库上新建数据库和表,并插入数据,看看从库中是否会自动创建相关的数据库和表、插入数据。

CREATE TABLE student (id int,name varchar(20));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值