mysql-5.6.x半同步复制配置
本文環(huán)境 ??
主庫(kù):CentOS6.5 x64 192.168.0.65 mysql-5.6.29 ? ?
備庫(kù):CentOS6.5 x64 192.168.0.66 mysql-5.6.29
接上文: mysql-5.6主從同步配置示例http://koumm.blog.51cto.com/703525/1764093
半同步復(fù)制的概念:?? ?
mysql5.5.x以上版本支持半同步復(fù)制,當(dāng)Slave主機(jī)連接到Master時(shí),能夠查看其是否處于半同步復(fù)制的機(jī)制。當(dāng)Master上開(kāi)啟半同步復(fù)制的功能時(shí),至少應(yīng)該有一個(gè)Slave開(kāi)啟其功能。此時(shí),一個(gè)線程在Master上提交事務(wù)將受到阻塞,直到得知一個(gè)已開(kāi)啟半同步復(fù)制功能的Slave已收到此事務(wù)的所有事件,或等待超時(shí)。當(dāng)一個(gè)事務(wù)的事件都已寫(xiě)入其relay-log中且已刷新到磁盤(pán)上,Slave才會(huì)告知已收到。如果等待超時(shí),也就是Master沒(méi)被告知已收到,此時(shí)Master會(huì)自動(dòng)轉(zhuǎn)換為異步復(fù)制的機(jī)制。當(dāng)至少一個(gè)半同步的Slave趕上了,Master與其Slave自動(dòng)轉(zhuǎn)換為半同步復(fù)制的機(jī)制。半同步復(fù)制的功能要在Master,Slave都開(kāi)啟,半同步復(fù)制才會(huì)起作用;否則,只開(kāi)啟一邊,它依然為異步復(fù)制。
一、半同步主服務(wù)器配置
1. mysql主服務(wù)器配置
(1) 在主服務(wù)器上加入半自動(dòng)配置文件參數(shù)
# vi /etc/my.cnf
[mysqld] ??
log-bin??????????????? = master-bin ? ?
log-bin-index????????? = master-bin.index ? ?
binlog_format????????? = mixed ? ?
server-id????????????? = 1 ? ?
expire-logs-days?????? = 7 ? ?
rpl_semi_sync_master_enabled = 1 ? ?
rpl_semi_sync_master_timeout = 1000 # 1 second
(2) 安裝半同步配置插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
(3) 配置半同步插件
mysql> show global variables like '%rpl%'; ??
+------------------------------------+-------+ ? ?
| Variable_name????????????????????? | Value | ? ?
+------------------------------------+-------+ ? ?
| rpl_recovery_rank????????????????? | 0???? | ? ?
| rpl_semi_sync_master_enabled?????? | OFF?? | ? ?
| rpl_semi_sync_master_timeout?????? | 10000 | ? ?
| rpl_semi_sync_master_trace_level?? | 32??? | ? ?
| rpl_semi_sync_master_wait_no_slave | ON??? | ? ?
+------------------------------------+-------+
(4) 啟用半同步插件
mysql> set global rpl_semi_sync_master_enabled =1;
(5) 配置超時(shí)
mysql> set rpl_semi_sync_master_timeout 1000;
mysql> show global status like 'rpl_semi%'; ??
+--------------------------------------------+-------+ ? ?
| Variable_name????????????????????????????? | Value | ? ?
+--------------------------------------------+-------+ ? ?
| Rpl_semi_sync_master_clients?????????????? | 0???? | ? ?
| Rpl_semi_sync_master_net_avg_wait_time???? | 0???? | ? ?
| Rpl_semi_sync_master_net_wait_time???????? | 0???? | ? ?
| Rpl_semi_sync_master_net_waits???????????? | 0???? | ? ?
| Rpl_semi_sync_master_no_times????????????? | 0???? | ? ?
| Rpl_semi_sync_master_no_tx???????????????? | 0???? | ? ?
| Rpl_semi_sync_master_status??????????????? | ON??? | ? ?
| Rpl_semi_sync_master_timefunc_failures???? | 0???? | ? ?
| Rpl_semi_sync_master_tx_avg_wait_time????? | 0???? | ? ?
| Rpl_semi_sync_master_tx_wait_time????????? | 0???? | ? ?
| Rpl_semi_sync_master_tx_waits????????????? | 0???? | ? ?
| Rpl_semi_sync_master_wait_pos_backtraverse | 0???? | ? ?
| Rpl_semi_sync_master_wait_sessions???????? | 0???? | ? ?
| Rpl_semi_sync_master_yes_tx??????????????? | 0???? | ? ?
+--------------------------------------------+-------+ ? ?
14 rows in set (0.00 sec)
其它一些性能及相關(guān)參數(shù):
2. 重啟主服務(wù)器,使配置文件生效
# service mysqld restart?
二、半同步從服務(wù)器配置
1. mysql從服務(wù)器配置
(1) 加入如下半同步配置。
# vi /etc/my.cnf
[mysqld] ??
log-bin??????????????? = mysql-bin ? ?
binlog_format????????? = mixed ? ?
server-id????????????? = 11 ? ?
relay-log????????????? = slave-relay-bin ? ?
relay-log-index??????? = slave-relay-bin.index ? ?
replicate_wild_ignore_table = mysql.% ? ??
rpl_semi_sync_slave_enabled = 1
(2) 安裝半同步配置插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; ??
Query OK, 0 rows affected (0.00 sec)
(3) 配置半同步插件
mysql> show global variables like '%rpl%'; ??
+---------------------------------+----------+ ? ?
| Variable_name?????????????????? | Value??? | ? ?
+---------------------------------+----------+ ? ?
| rpl_semi_sync_slave_enabled???? | ON?????? | ? ?
| rpl_semi_sync_slave_trace_level | 32?????? | ? ?
| rpl_stop_slave_timeout????????? | 31536000 | ? ?
+---------------------------------+----------+ ? ?
3 rows in set (0.00 sec)
(4) 啟用半同步插件
mysql> set global rpl_semi_sync_master_enabled =1; ??
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like '%rpl%'; ??
+---------------------------------+----------+ ? ?
| Variable_name?????????????????? | Value??? | ? ?
+---------------------------------+----------+ ? ?
| rpl_semi_sync_slave_enabled???? | ON?????? | ? ?
| rpl_semi_sync_slave_trace_level | 32?????? | ? ?
| rpl_stop_slave_timeout????????? | 31536000 | ? ?
+---------------------------------+----------+ ? ?
3 rows in set (0.00 sec)
(5) 重啟同步進(jìn)程
mysql> stop slave; ??
Query OK, 0 rows affected (0.02 sec)
mysql> start slave; ??
Query OK, 0 rows affected (0.02 sec)
mysql> show slave status \G; ??
*************************** 1. row *************************** ? ?
?????????????? Slave_IO_State: Waiting for master to send event ? ?
????????????????? Master_Host: 192.168.0.65 ? ?
????????????????? Master_User: repl ? ?
????????????????? Master_Port: 3306 ? ?
??????????????? Connect_Retry: 60 ? ?
????????????? Master_Log_File: master-bin.000005 ? ?
????????? Read_Master_Log_Pos: 120 ? ?
?????????????? Relay_Log_File: testdb-relay-bin.000012 ? ?
??????????????? Relay_Log_Pos: 284 ? ?
??????? Relay_Master_Log_File: master-bin.000005 ? ?
???????????? Slave_IO_Running: Yes ? ?
??????????? Slave_SQL_Running: Yes ? ?
????????????? Replicate_Do_DB: ? ??
????????? Replicate_Ignore_DB: ? ??
?????????? Replicate_Do_Table: ? ??
?????? Replicate_Ignore_Table: ? ??
????? Replicate_Wild_Do_Table: ? ??
? Replicate_Wild_Ignore_Table: mysql.% ? ?
?????????????????? Last_Errno: 0 ? ?
?????????????????? Last_Error: ? ??
???????????????? Skip_Counter: 0 ? ?
????????? Exec_Master_Log_Pos: 120 ? ?
????????????? Relay_Log_Space: 622 ? ?
????????????? Until_Condition: None ? ?
?????????????? Until_Log_File: ? ??
??????????????? Until_Log_Pos: 0 ? ?
?????????? Master_SSL_Allowed: No ? ?
?????????? Master_SSL_CA_File: ? ??
?????????? Master_SSL_CA_Path: ? ??
????????????? Master_SSL_Cert: ? ??
??????????? Master_SSL_Cipher: ? ??
?????????????? Master_SSL_Key: ? ??
??????? Seconds_Behind_Master: 0 ? ?
Master_SSL_Verify_Server_Cert: No ? ?
??????????????? Last_IO_Errno: 0 ? ?
??????????????? Last_IO_Error: ? ??
?????????????? Last_SQL_Errno: 0 ? ?
?????????????? Last_SQL_Error: ? ??
? Replicate_Ignore_Server_Ids: ? ??
???????????? Master_Server_Id: 1 ? ?
????????????????? Master_UUID: c8bb22a1-024e-11e6-a1e8-000c29225fa0 ? ?
???????????? Master_Info_File: /usr/local/mysql-5.6.29-linux-glibc2.5-x86_64/data/master.info ? ?
??????????????????? SQL_Delay: 0 ? ?
????????? SQL_Remaining_Delay: NULL ? ?
????? Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it ? ?
?????????? Master_Retry_Count: 86400 ? ?
????????????????? Master_Bind: ? ??
????? Last_IO_Error_Timestamp: ? ??
???? Last_SQL_Error_Timestamp: ? ??
?????????????? Master_SSL_Crl: ? ??
?????????? Master_SSL_Crlpath: ? ??
?????????? Retrieved_Gtid_Set: ? ??
??????????? Executed_Gtid_Set: ? ??
??????????????? Auto_Position: 0 ? ?
1 row in set (0.00 sec)
2. 在主服務(wù)器上可以查看有1個(gè)從服務(wù)器連接過(guò)來(lái)
mysql> show global status like 'rpl_semi%'; ??
+--------------------------------------------+-------+ ? ?
| Variable_name????????????????????????????? | Value | ? ?
+--------------------------------------------+-------+ ? ?
| Rpl_semi_sync_master_clients?????????????? | 1???? | ? ?
| Rpl_semi_sync_master_net_avg_wait_time???? | 0???? | ? ?
| Rpl_semi_sync_master_net_wait_time???????? | 0???? | ? ?
| Rpl_semi_sync_master_net_waits???????????? | 0???? | ? ?
| Rpl_semi_sync_master_no_times????????????? | 0???? | ? ?
| Rpl_semi_sync_master_no_tx???????????????? | 0???? | ? ?
| Rpl_semi_sync_master_status??????????????? | ON??? | ? ?
| Rpl_semi_sync_master_timefunc_failures???? | 0???? | ? ?
| Rpl_semi_sync_master_tx_avg_wait_time????? | 0???? | ? ?
| Rpl_semi_sync_master_tx_wait_time????????? | 0???? | ? ?
| Rpl_semi_sync_master_tx_waits????????????? | 0???? | ? ?
| Rpl_semi_sync_master_wait_pos_backtraverse | 0???? | ? ?
| Rpl_semi_sync_master_wait_sessions???????? | 0???? | ? ?
| Rpl_semi_sync_master_yes_tx??????????????? | 0???? | ? ?
+--------------------------------------------+-------+ ? ?
14 rows in set (0.00 sec)
3. 重啟從服務(wù)器,使配置文件生效
# service mysqld restart?
本文出自 “koumm的linux技術(shù)博客” 博客,請(qǐng)務(wù)必保留此出處http://koumm.blog.51cto.com/703525/1764324
總結(jié)
以上是生活随笔為你收集整理的mysql-5.6.x半同步复制配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP——大话PHP设计模式——SPL数
- 下一篇: brew install php55 报