mysql半同步复制实现
生活随笔
收集整理的這篇文章主要介紹了
mysql半同步复制实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
mysql半同步復制和異步復制的區(qū)別如上述架構圖所看到的:在mysql異步復制的情況下。Mysql Master Server將自己的Binary Log通過復制線程傳輸出去以后,Mysql Master Sever就自己主動返回數(shù)據(jù)給client。而無論slave上是否接受到了這個二進制日志。在半同步復制的架構下。當master在將自己binlog發(fā)給slave上的時候。要確保slave已經(jīng)接受到了這個二進制日志以后,才會返回數(shù)據(jù)給client。
對照兩種架構:異步復制對于用戶來說,能夠確保得到高速的響應結構,可是不能確保二進制日志確實到達了slave上。半同步復制對于客戶的請求響應略微慢點,可是他能夠保證二進制日志的完整性。
以下來配置一個半同步復制實現(xiàn)的主從架構:
192.168.1.141為mysql的主server
192.168.1.142為mysql的從server
1.為mysql主server提供配置
編輯/etc/my.cnf,提供下面的配置
log_bin=index
server_id=1
在主server上授權
# mysql> grant replication slave,replication client on user@'192.168.1.142' identified by "123456";
# mysql> flush privileges;
2.為mysql從服務提供配置
編輯/etc/my.cnf,提供下面的配置
server_id=10
relay_log=relay
read_only=on
skip-slave-start=1
進入mysql命令行接口
# mysql > change master to MASTER_HOST="192.168.1.141",MASTER_USER="user",MASTER_PASSWORD="123456",MASTER_LOG_FILE="index.000004",MASTER_LOG_POS=429;
# mysql > start slave;
假設可以看到Slave_IO_Running: Yes和Slave_SQL_Running:Yes兩行信息的話。證明主從配置已經(jīng)成功。
要使用mysql的半同步復制功能須要為mysql裝插件,mysql默認支持的插件在/usr/local/mysql/lib/plugin/,里面有兩個semisync_master.so和semisync_slave.so的共享庫是我們實現(xiàn)mysql半同步復制的關鍵
3.設置半同步復制
在mysql主server的命令行接口下運行例如以下代碼:
# mysql > install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
# mysql > show variables like "%semi%";(假設看到新增的semi變量的話證明安裝模塊成功)
| rpl_semi_sync_master_enabled ? ? ? | OFF ? | 是否啟動半同步復制,默認關閉
| rpl_semi_sync_master_timeout ? ? ? ?| 10000 | 等待從server告訴接受到的超時時間,假設時間到了。還沒接受到,自己主動降級為異步
| rpl_semi_sync_master_trace_level ? | 32 ? ?| 執(zhí)行級別
| rpl_semi_sync_master_wait_no_slave | ON ? ?| 沒有slave的時候是否也須要等待。默覺得也須要等待
# mysql > set global rpl_semi_sync_master_enabled = 1;
# mysql > set global rpl_semi_sync_master_timeout = 1000;
在mysql從server的命令行接口下運行例如以下代碼:
# mysql > install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
# mysql > show variables like "%semi%";(假設看到新增的semi變量的話證明安裝模塊成功)
# mysql > set global rpl_semi_sync_slave_enabled = 1;
# stop slave;
# start slave;
最后把經(jīng)常使用的配置參數(shù)寫如配置文件里:
192.168.1.141:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
192.168.1.142:
[mysqld]
rpl_semi_sync_slave_enabled=1
4.查看半同步復制的狀況信息
在192.168.1.141運行例如以下命令:
mysql> show status like "%semi%";
+-------------------------------------------------------------------+----------+
| Variable_name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| Value |
+-------------------------------------------------------------------+----------+
| Rpl_semi_sync_master_clients ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 1 ? ? | ? 半同步復制客戶端的個數(shù)
| Rpl_semi_sync_master_net_avg_wait_time ? ? ? ? ? ? ?| 555 ? | ? 平均等待時間(默認毫秒)
| Rpl_semi_sync_master_net_wait_time ? ? ? ? ? ? ? ? ? ? ?| 1665 ?| ? 總共等待時間
| Rpl_semi_sync_master_net_waits ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 3 ? ? | ? 等待次數(shù)
| Rpl_semi_sync_master_no_times ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? | ? 關閉半同步復制的次數(shù)
| Rpl_semi_sync_master_no_tx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? | ? 表示沒有成功接收slave提交的次數(shù)
| Rpl_semi_sync_master_status ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ON ? ?| ? 表示當前是異步模式還是半同步模式。on為半同步
| Rpl_semi_sync_master_timefunc_failures ? ? ? ? ? ? ? | 0 ? ? | ? 調用時間函數(shù)失敗的次數(shù)
| Rpl_semi_sync_master_tx_avg_wait_time ? ? ? ? ? ? ?| 575 ? | ? 事物的平均傳輸時間
| Rpl_semi_sync_master_tx_wait_time ? ? ? ? ? ? ? ? ? ? ?| 1725 ?| ? 事物的總共傳輸時間
| Rpl_semi_sync_master_tx_waits ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 3 ? ? | ? 事物等待次數(shù)
| Rpl_semi_sync_master_wait_pos_backtraverse ? ?| 0 ? ? | ?
| Rpl_semi_sync_master_wait_sessions ? ? ? ? ? ? ? ? ? ?| 0 ? ? | ? 當前有多少個session由于slave的回復而造成等待
| Rpl_semi_sync_master_yes_tx ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 3 ? ? | ? 成功接受到slave事物回復的次數(shù)
+-------------------------------------------------------------------+---------+
5.取消半同步復制的插件
192.168.1.141上:
# mysql > uninstall plugin rpl_semi_sync_master;
# mysql > show status like "%semi%"
192.168.1.142上:
# mysql > uninstall plugin rpl_semi_sync_slave;
# mysql > show status like "%semi%"
轉載于:https://www.cnblogs.com/gcczhongduan/p/5043171.html
總結
以上是生活随笔為你收集整理的mysql半同步复制实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大爱jQuery,10美女模特有用jQu
- 下一篇: linux cmake编译源码,linu