基于GTID的主从实践系列之②半同步搭建

IP架构

主:172.17.100.106    3306

从1:172.17.100.107    3306

从2:172.17.100.107    3307


半同步靠的是插件来实现的,首先需要对插件进行安装

通过show plugins可以看到加载的插件

主库

root@localhost [(none)]>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

Query OK, 0 rows affected (0.00 sec)

root@localhost [(none)]>root@localhost [(none)]>show plugins;

+----------------------------+----------+--------------------+--------------------+---------+

| Name                      | Status  | Type              | Library            | License |

+----------------------------+----------+--------------------+--------------------+---------+

...

| rpl_semi_sync_master      | ACTIVE  | REPLICATION        | semisync_master.so | GPL    |

+----------------------------+----------+--------------------+--------------------+---------+

45 rows in set (0.00 sec)

也可以通过show variables来查看

root@localhost [(none)]>show variables like '%semi%';

+-------------------------------------------+------------+

| Variable_name                            | Value      |

+-------------------------------------------+------------+

| rpl_semi_sync_master_enabled              | OFF        |

| rpl_semi_sync_master_timeout              | 10000      |   (单位是毫秒,也就是10秒)

| rpl_semi_sync_master_trace_level          | 32        |

| rpl_semi_sync_master_wait_for_slave_count | 1          |

| rpl_semi_sync_master_wait_no_slave        | ON        |

| rpl_semi_sync_master_wait_point          | AFTER_SYNC |

+-------------------------------------------+------------+

6 rows in set (0.00 sec)


从库

(product)root@localhost [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

Query OK, 0 rows affected (0.00 sec)

(product)root@localhost [(none)]> show variables like '%semi%';

+---------------------------------+-------+

| Variable_name                  | Value |

+---------------------------------+-------+

| rpl_semi_sync_slave_enabled    | OFF  |

| rpl_semi_sync_slave_trace_level | 32    |

+---------------------------------+-------+

2 rows in set (0.00 sec)


完成安装之后,主从库的半同步均为关闭状态,需要在主库和从库上分别开启半同步

主:

root@localhost [(none)]>SET GLOBAL rpl_semi_sync_master_enabled = 1;

Query OK, 0 rows affected (0.00 sec)

从(双实例上分别执行,这里和后面都只演示一个):

(product)root@localhost [(none)]> set global rpl_semi_sync_slave_enabled=1;

Query OK, 0 rows affected (0.01 sec)


重启一下从库的io_thread

(product)root@localhost [(none)]> stop slave io_thread;

Query OK, 0 rows affected (0.01 sec)

(product)root@localhost [(none)]> start slave io_thread;

Query OK, 0 rows affected (0.00 sec)


检查一下从库的状态

show slave status \G

确认io和sql线程均为yes


检查一下主从上的半同步状态

root@localhost [(none)]>show variables like '%semi%';

+-------------------------------------------+------------+

| Variable_name                            | Value      |

+-------------------------------------------+------------+

| rpl_semi_sync_master_enabled              | ON        |

| rpl_semi_sync_master_timeout              | 10000      |

| rpl_semi_sync_master_trace_level          | 32        |

| rpl_semi_sync_master_wait_for_slave_count | 1          |

| rpl_semi_sync_master_wait_no_slave        | ON        |

| rpl_semi_sync_master_wait_point          | AFTER_SYNC |

+-------------------------------------------+------------+

6 rows in set (0.00 sec)


(product)root@localhost [(none)]> show variables like '%semi%';

+---------------------------------+-------+

| Variable_name                  | Value |

+---------------------------------+-------+

| rpl_semi_sync_slave_enabled    | ON    |

| rpl_semi_sync_slave_trace_level | 32    |

+---------------------------------+-------+

2 rows in set (0.00 sec)


再来看一下主库的error.log

2018-05-17T12:10:21.580190Z 28 [Note] While initializing dump thread for slave with UUID <5cbb6cc8-5287-11e8-b786-005056ba0d70>, found a zombie dump thread with the same UUID. Master is killing the zombie dump thread(8).

2018-05-17T12:10:21.580267Z 8 [Note] Stop asynchronous binlog_dump to slave (server_id: 1073306)

2018-05-17T12:10:21.580529Z 28 [Note] Start binlog_dump to master_thread_id(28) slave_server(1073306), pos(, 4)

2018-05-17T12:10:21.580566Z 28 [Note] Start semi-sync binlog_dump to slave (server_id: 1073306), pos(, 4)

2018-05-17T12:10:29.166518Z 29 [Note] While initializing dump thread for slave with UUID <5d6b91e1-5418-11e8-9657-005056ba0d70>, found a zombie dump thread with the same UUID. Master is killing the zombie dump thread(9).

2018-05-17T12:10:29.166610Z 29 [Note] Start binlog_dump to master_thread_id(29) slave_server(1073307), pos(, 4)

2018-05-17T12:10:29.166638Z 9 [Note] Stop asynchronous binlog_dump to slave (server_id: 1073307)

2018-05-17T12:10:29.589118Z 29 [Note] Start semi-sync binlog_dump to slave (server_id: 1073307), pos(, 4)


---------------------------------------------------------------------------------------

小测试

把从库的2个实例都关闭,然后在主库上执行建库操作

root@localhost [(none)]>create database qimo;

Query OK, 1 row affected (10.00 sec)

整整花费10秒,刚好timeout的设置时间


再看主库上的error.log,无法收到从库反馈的ack消息,直接报错,提示通信错误

最后一句显示已经从半同步模式切换成了异步模式

2018-05-17T12:41:19.859710Z 0 [ERROR] /usr/local/mysql/bin/mysqld: Got an error reading communication packets

2018-05-17T12:41:28.011673Z 0 [ERROR] /usr/local/mysql/bin/mysqld: Got an error reading communication packets

2018-05-17T12:41:59.179369Z 28 [Note] Stop semi-sync binlog_dump to slave (server_id: 1073306)

2018-05-17T12:41:59.595612Z 29 [Note] Stop semi-sync binlog_dump to slave (server_id: 1073307)

2018-05-17T12:42:00.046895Z 28 [Note] Aborted connection 28 to db: 'unconnected' user: 'repl' host: '172.17.100.107' (failed on flush_net())

2018-05-17T12:42:00.047057Z 0 [ERROR] /usr/local/mysql/bin/mysqld: Got an error reading communication packets

2018-05-17T12:42:01.048156Z 29 [Note] Aborted connection 29 to db: 'unconnected' user: 'repl' host: '172.17.100.107' (failed on flush_net())

2018-05-17T12:42:15.491920Z 31 [Warning] Timeout waiting for reply of binlog (file: mysql-bin.000006, pos: 353), semi-sync up to file , position 4.

2018-05-17T12:42:15.491993Z 31 [Note] Semi-sync replication switched OFF.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容