关于Mysql5.6半同步主从复制的开启方法

  • 时间:
  • 浏览:1
  • 来源:大发彩神8官网—大发彩神8快3

1

7 rows in set (0.00 sec)

| Rpl_semi_sync_master_tx_waits              | 0     |

6

我们我们都 留意后边的数字,

7

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

4

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

| Rpl_semi_sync_master_status                | ON      |

-rwxr-xr-x 1 root root    44095 3月   4 01:18 auth_pam_compat.so

31

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

mysql> set global rpl_semi_sync_master_enabled = on;

13

    要是在某个位面的时间上,都不 人提出同步群克隆的概念,意思要是说,倘若从库没写入,主库就不返回完成,什么都 要是即使主库挂了,这也要是另另一有另一个未完成的事务,从库要是会记录,能保证数据一致性.

| Rpl_semi_sync_master_no_tx                 | 0     |

rpl_semi_sync_master_wait_no_slave:    算是允许master 每个事物提交后都不 守候slave的receipt信号。默认为on ,每另另一有另一个事务一定会守候,肯能slave当掉后,当slave追赶上master的日志时,时要自动的切换为半同步法律法律方式,肯能为off,则slave追赶上后,要是会采用半同步的法律法律方式群克隆了,时要手工配置。

| rpl_semi_sync_master_trace_level   | 32       |

| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |

| Rpl_semi_sync_master_clients               | 1       |

安装完了,就开始准备启动了,

    原来做着实延时还是有,要是比起完整篇 的同步法律法律方式还是好太满,对于数据一致性要求高的情况表,牺牲性能来换取一定的价值,是在所难免的.

| Rpl_semi_sync_master_tx_wait_time          | 2797020 |

32

semisync_slave.so

要是到从库,slave要重启动IO系统程序运行运行来生效,要是还是异步的法律法律方式群克隆数据

| Rpl_semi_sync_master_timefunc_failures     | 0       |

20

mysql> show variables like 'plugin_dir';

1

8

11

2

7

rpl_semi_sync_master_timeout:    Master守候slave响应的时间,单位是毫秒,默认值是10秒,超过什么都 时间,slave无响应,将自动转换为异步群克隆,肯能探测到从库恢复后,又从新进入半同步情况表

5

29

11

    细心的人就会发现,什么都 情况表下,倘若主库临时挂了,binlog还没传输完毕,即使是集群要是能保证说这挂了要是的数据一致性,肯能你不到排除别人在主库是正常提交的,而从库没有 数据的情况表.

mysql> show variables like '%Rpl%';

第六部,返回客户端,整个事务已完成.

| Rpl_semi_sync_master_tx_wait_time          | 0     |

| Rpl_semi_sync_master_net_avg_wait_time     | 0     |

-rwxr-xr-x 1 root root 149100125 3月   4 01:22 ha_tokudb.so

Rpl_semi_sync_master_yes_tx:    往slave发送成功的事务数量。

5

6

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

| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |

12

rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL

drwxr-xr-x 2 root root     4096 3月   4 01:23 debug

超时时间rpl_semi_sync_master_timeout的值,不应该短过应用(同类JDBC)连接池或系统程序运行运行池的超时时间,原来应用肯能出先 老要守候肯能是抛出异常的问题。

| Variable_name | Value                              |

4

11

15 rows in set (0.00 sec)

要是我们我们都 开始准备安装的事情:

同样你并能写到配置文件,不不太满说了,反正这就启动完毕了.

mysql> set global rpl_semi_sync_slave_enabled = on;

| rpl_stop_slave_timeout             | 315310000 |

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

| rpl_semi_sync_master_timeout       | 1000    |

| Rpl_semi_sync_master_no_times              | 0       |

7

| rpl_semi_sync_slave_enabled        | OFF      |

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

4

6

总用量 25328

-rwxr-xr-x 1 root root  22121005 3月   4 01:18 handlersocket.so

Rpl_semi_sync_master_status:    算是启用了半同步(有要是肯能网络超时原应 切加进去异步)。

14

-rwxr-xr-x 1 root root    39169 3月   4 01:18 libdaemon_example.so

15 rows in set (0.00 sec)

26

2

18

5

9

| Rpl_semi_sync_master_net_avg_wait_time     | 746     |

3

5

-rwxr-xr-x 1 root root   181009 3月   4 01:18 audit_log.so

| plugin_dir    | /usr/local/mysql/lib/mysql/plugin/ |

19

-rwxr-xr-x 1 root root  4702357 3月   4 01:20 dialog.so

1 row in set (0.00 sec)

4

6

7 rows in set (0.00 sec)

10

| Rpl_semi_sync_master_tx_avg_wait_time      | 614     |

semisync_master.so

2

3

27

mysql> show plugins;

18

-rwxr-xr-x 1 root root   834597 3月   4 01:18 innodb_engine.so

| Rpl_semi_sync_master_net_waits             | 10077    |

-rwxr-xr-x 1 root root   188402 3月   4 01:18 validate_password.so

第一部,客户端提交sql说说,

| Rpl_semi_sync_master_clients               | 0     |

                * 1:general 等级,如:记录时间函数失效 

20

当然,你也时要写到配置文件,不过写到配置文件要重启才生效,要是时要重新加载组件,什么都什么都这就没意思了.

-rwxr-xr-x 1 root root    16916 3月   4 01:18 adt_null.so

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

| rpl_semi_sync_master_wait_no_slave | ON       |

    看上去,数据一致性是出理 了,要是呢,每个事务的延时就增大了,肯能是大事务说说,就更惨,这得看网络传输速率时要顶得住,不然延时更低,性能更差.

1

11

13

-rwxr-xr-x 1 root root    45929 3月   4 01:18 auth_pam.so

rpl_semi_sync_master_wait_for_slave_count = 2

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

介绍

| Rpl_semi_sync_master_no_tx                 | 0       |

第五部,从库返回情况表给主库,标记已完成,半同步只时要另另一有另一个从库返回就时要,什么都会转成异步

下面开始正式安装:

25

10

-rwxr-xr-x 1 root root    13877 3月   4 01:18 qa_auth_server.so

2

15

-rwxr-xr-x 1 root root    27089 3月   4 01:18 libfnv_udf.so

rpl_semi_sync_master_wait_point = AFTER_SYNC

| rpl_semi_sync_master_trace_level   | 32       |

-rwxr-xr-x 1 root root    27406 3月   4 01:18 auth.so

| rpl_semi_sync_master_timeout       | 1000    |

16

19

7

主要就最后两行:

毫无问题,那些参数都能通过配置文件或直接set来更改,倘若你着实什么都 适合你的需求,同类一般我们我们都 会把响应时间设成1秒.

[root@pingtest1 ~]

mysql> start slave IO_THREAD;

-rwxr-xr-x 1 root root   779519 3月   4 01:18 libmemcached.so

mysql> show plugins;

1

| Rpl_semi_sync_master_yes_tx                | 0     |

安装使用

2

先检查下有没有 装

20

     本文转自arthur376 51CTO博客,原文链接:http://blog.51cto.com/arthur376/18271008,如需转载请自行联系原作者

6

rpl_semi_sync_master_wait_no_slave = 1

16

| rpl_stop_slave_timeout             | 315310000 |

不过我还是得负责任的讲句,在极端的情况表下,还是肯能会丢什么都数据的,什么都什么都定期做主从数据校验还是有必要的,同类使用PT工具那些的,至于为那些,什么都 不仿不不门 思考一下,而对于大事务来说,半同步也是比较无力的情况表,性能损耗较大.

15

8

第三部,事务在主库出理 完毕,指在待完成情况表,守候最终完成,

8

-rw-r--r-- 1 root root      227 3月   3 21:27 daemon_example.ini

| Rpl_semi_sync_master_net_waits             | 0     |

2

从库当然也要做

3

看了后边的解析,共要你也知道我什么都 情况表是正常的了.什么都延时类别的,我们我们都 得看实际情况表.

| rpl_semi_sync_master_wait_no_slave | ON       |

24

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

看了下面另另一有另一个,要是半同步的组件了,另另一有另一个是主库组件,另另一有另一个是从库组件,不不另另一有另一个都装上肯能只装另另一有另一个.

8

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

1

        .

第二部,提交给存储引擎解析并出理 数据修改,

19

2

Rpl_semi_sync_master_no_tx:    往slave发送失败的事务数量(最好暂且有)。

主库很简单,倘若设置一下半同步启动就时要了.

3

问题汇总

5.7新功能,在控制半同步模式下 主库在返回给会话事务成功要是提交事务的法律法律方式。旧模式是AFTER_COMMIT,新模式是AFTER_SYNC,默认值:AFTER_SYNC 。master 将每个事务写入binlog ,传递到slave,要是刷新到磁盘。master守候slave 反馈接收到事务并刷新到磁盘。一旦接到slave反馈,master在主库提交事务要是返回结果给会话。 在AFTER_SYNC模式下,所有的客户端在同一时刻查看肯能提交的数据。倘若指在主库crash,所有在主库上肯能提交的事务肯能同步到slave并记录到relay log。此时切换到从库,时要保障最小的数据损失。

        .

rpl_stop_slave_timeout:    控制stop slave 的执行时间,在重放另另一有另一个大的事务的要是,老要执行stop slave ,命令 stop slave会执行要是,什么都 要是肯能产生死锁或阻塞,严重影响性能,时要通过什么都 参数控制stop slave 的执行时间,一般不时要修改.

    主库实际上暂且关心从库算是把数据拉完没有 ,要是关心从库有没有 把数据写进硬盘入库,反正数据丢过去,让从库当事人慢慢跑,而实际上这也暂且影响主库任何使用的情况表.

10

1

2

1

| Rpl_semi_sync_master_tx_waits              | 4552    |

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

2

14

2

12

21

2

10

rpl_semi_sync_slave  | ACTIVE | REPLICATION | semisync_slave.so  | GPL

-rwxr-xr-x 1 root root    27059 3月   4 01:18 qa_auth_interface.so

    先了解一下mysql的主从群克隆是那些回事,我们我们都 都知道,mysql主从群克隆是基于binlog的群克隆法律法律方式,而mysql默认的主从群克隆法律法律方式,着实是异步群克隆.

2

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

9

1

1

1

-rwxr-xr-x 1 root root    56417 3月   4 01:18 scalability_metrics.so

| rpl_semi_sync_slave_trace_level    | 32       |

| rpl_semi_sync_master_enabled       | ON       |

最后,我们我们都 来看看同样的命令在从库会什么都那些信息

rpl_semi_sync_master_enabled:    显示算是已开启半同步机制

| Rpl_semi_sync_master_timefunc_failures     | 0     |

rpl_semi_sync_master_trace_level:    监控等级,一共另另一有另一个等级(1,16,32,64)。

8

rpl_semi_sync_master_wait_no_slave = 0

rpl_semi_sync_slave_enabled:    算是开启了从库半同步

rpl_semi_sync_slave_trace_level:    监控等级,默认也是32

第四部,并肩提交给各从库,守候完成,

| Variable_name                              | Value |

1

| Rpl_semi_sync_master_net_wait_time         | 0     |

| rpl_semi_sync_slave_enabled        | ON       |

17

| Variable_name                      | Value    |

12

也正如我刚才说的,什么都什么都信息基本上没有 ,不到最后一行是不一样的,也要是证明从库半同步正常连接中.

7

5.7.3新加了另另一有另一个半同步参数,共要有N个slave接收到日志,要是返回ack,什么都 半同步事务并能提交,默认是1。当什么都 值设置到和从库数量相等说说,则效果会等同于全同步群克隆。

13

下面来看看怎样才能安装使用半同步,大每种mysql四种 并没有 预装半同步的组件,时要另外安装,要是一般mysql的包后边会自带so文件,什么都什么都倘若手动加载一下就时要用了.

去看一下相关文件夹:

21

解释十十几个 重要的值。

4

8

| Rpl_semi_sync_slave_status                 | ON    |

| rpl_semi_sync_master_enabled       | OFF      |

-rwxr-xr-x 1 root root   3959100 3月   4 01:18 query_response_time.so

2

4

13

-rwxr-xr-x 1 root root    12224 3月   4 01:18 mysql_no_login.so

mysql> show variables like '%Rpl%';

1

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

3

14

17

-rwxr-xr-x 1 root root    17898 3月   4 01:18 mypluglib.so

    最后,在mysql5.5要是,半同步就提出来了,意思要是说,每个事务的群克隆,共要保证另另一有另一个从库肯能收到了binlog,主库才返回事务完成,但不时要理会从库算是写入硬盘.

set global rpl_semi_sync_master_timeout = 10000

| Rpl_semi_sync_master_net_wait_time         | 3788497 |

1

-rwxr-xr-x 1 root root   289069 3月   4 01:18 semisync_slave.so

23

28

再看看什么都

1

| Rpl_semi_sync_master_wait_pos_backtraverse | 0       |

3

21

4

看上去还是比较不错,主从的数据一致性得到很大的提高,要是延时要是含糊,要是牺牲性能来提高一致性的问题了.

3

| Rpl_semi_sync_master_yes_tx                | 10077    |

12

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

mysql> show status like '%Rpl_semi_sync%';

                * 16:detail 等级,记录更加完整篇 的信息 

                * 32:net wait等级,记录包涵盖关网络守候的更多信息                 * 64:function等级,记录包涵盖关function进入和退出的更多信息

-rwxr-xr-x 1 root root    28683 3月   4 01:18 libmurmur_udf.so

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

| Rpl_semi_sync_master_status                | OFF   |

100

| Rpl_semi_sync_master_wait_sessions         | 0     |

11

9

5

18

-rwxr-xr-x 1 root root    26229 3月   4 01:18 auth_test_plugin.so

来看看我们我们都 能设置些那些关于半同步的参数

9

mysql> stop slave IO_THREAD;

4

7

2

Rpl_semi_sync_master_clients:    半同步模式下Slave一共有十十几个 个。

17

5

-rwxr-xr-x 1 root root    27048 3月   4 01:18 libfnv1a_udf.so

1

2

4

| Variable_name                      | Value    |

15

3

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

-rwxr-xr-x 1 root root   357058 3月   4 01:18 tokudb_backup.so

| rpl_semi_sync_slave_trace_level    | 32       |

5

| Rpl_semi_sync_master_no_times              | 0     |

5

3

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

mysql> show plugins;

mysql> show status like '%Rpl_semi_sync%';

5

| Variable_name                              | Value   |

也来看看解析:

12

16

-rwxr-xr-x 1 root root    131007 3月   4 01:18 auth_socket.so

3

而当半同步群克隆设置N个slave应答,肯能当前Slave小于N,取决于rpl_semi_sync_master_wait_no_slave的设置。

3

| Rpl_semi_sync_slave_status                 | OFF     |

下面来验证一下算是成功,以下是主库的信息,肯能从库什么都什么都信息是没有 的.

-rwxr-xr-x 1 root root   5371009 3月   4 01:18 semisync_master.so

4

22

9

-rwxr-xr-x 1 root root    18574 3月   4 01:18 qa_auth_client.so

10

| Rpl_semi_sync_master_wait_sessions         | 0       |

        .

6

    光看文字难免什么都虚,时要看看下面的图片来大致了解一下,

1

13