Mysql半同步配置
Mysql半同步的原理是主庫只需要確認從庫接收到了事物即可,無需等待從庫應用,相比非同步複製,半同步提高了資料完整性的保障,但會增加主庫的響應時間。
1、安裝Mysql並配置主從
參考http://blog.itpub.net/28536251/viewspace-2138854/分別在兩節點安裝Mysql。
參考http://blog.itpub.net/28536251/viewspace-2138928/或者http://blog.itpub.net/28536251/viewspace-2139007/配置主從。
2、在master節點載入半同步外掛
(root@localhost)[(none)] install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.16 sec)
3、在slave節點載入半同步外掛
(root@localhost)[(none)] install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.45 sec)
4、在master節點設定以下變數
(root@localhost)[(none)] set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.05 sec)
#rpl_semi_sync_master_enabled用於控制是否在master節點啟用半同步複製,為1表示啟動。
(root@localhost)[(none)] set global rpl_semi_sync_master_timeout=3000;
Query OK, 0 rows affected (0.00 sec)
#rpl_semi_sync_master_timeout用於指定master節點等待slave響應的事件,單位是毫秒,預設是10000即10秒鐘,這裡設定為3秒。若超出指定時間slave節點仍無響應,那麼當前複製環境就臨時被轉換為非同步複製。
5、在slave節點設定以下變數
(root@localhost)[(none)] set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.09 sec)
#rpl_semi_sync_slave_enabled用來控制slave節點是否啟用半同步複製。
以上3個變數雖然可以動態修改,但強烈建議將所有配置的變數都儲存在初始化引數檔案中,這樣在每次啟動mysql服務時就無需再手動配置了。
6、在slave節點重啟io_thread執行緒
slave節點重新連線master節點,註冊為半同步身份。
(root@localhost)[(none)] stop slave io_thread;
Query OK, 0 rows affected (0.12 sec)
(root@localhost)[(none)] start slave io_thread;
Query OK, 0 rows affected (0.02 sec)
7、測試
主庫插入資料:
(root@localhost)[(none)] use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
(root@localhost)[test] show tables;
+----------------+
| Tables_in_test |
+----------------+
| tb1 |
+----------------+
1 row in set (0.00 sec)
(root@localhost)[test] select * from tb1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.03 sec)
(root@localhost)[test] insert into tb1 values(2);
Query OK, 1 row affected (0.10 sec)
(root@localhost)[test] select * from tb1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.02 sec)
(root@localhost)[test] show status like 'rpl_semi_sync%';
+--------------------------------------------+-------+
| 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 | 1 |
| 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 | 52899 |
| Rpl_semi_sync_master_tx_wait_time | 52899 |
| Rpl_semi_sync_master_tx_waits | 1 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 1 |
+--------------------------------------------+-------+
14 rows in set (0.05 sec)
其中:
rpl_semi_sync_master_clients為1表示處於半同步模式的slave節點有1個。
rpl_semi_sync_master_status為ON表示master節點啟用了半同步模式。
rpl_semi_sync_master_no_tx為0表示還沒有未成功傳送到slave節點的事物數量。
rpl_semi_sync_master_yes_tx為1表示已成功傳送到slave節點的事物數量為1。
備庫檢視:
(root@localhost)[test] select * from tb1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
1、安裝Mysql並配置主從
參考http://blog.itpub.net/28536251/viewspace-2138854/分別在兩節點安裝Mysql。
參考http://blog.itpub.net/28536251/viewspace-2138928/或者http://blog.itpub.net/28536251/viewspace-2139007/配置主從。
2、在master節點載入半同步外掛
(root@localhost)[(none)] install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.16 sec)
3、在slave節點載入半同步外掛
(root@localhost)[(none)] install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.45 sec)
4、在master節點設定以下變數
(root@localhost)[(none)] set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.05 sec)
#rpl_semi_sync_master_enabled用於控制是否在master節點啟用半同步複製,為1表示啟動。
(root@localhost)[(none)] set global rpl_semi_sync_master_timeout=3000;
Query OK, 0 rows affected (0.00 sec)
#rpl_semi_sync_master_timeout用於指定master節點等待slave響應的事件,單位是毫秒,預設是10000即10秒鐘,這裡設定為3秒。若超出指定時間slave節點仍無響應,那麼當前複製環境就臨時被轉換為非同步複製。
5、在slave節點設定以下變數
(root@localhost)[(none)] set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.09 sec)
#rpl_semi_sync_slave_enabled用來控制slave節點是否啟用半同步複製。
以上3個變數雖然可以動態修改,但強烈建議將所有配置的變數都儲存在初始化引數檔案中,這樣在每次啟動mysql服務時就無需再手動配置了。
6、在slave節點重啟io_thread執行緒
slave節點重新連線master節點,註冊為半同步身份。
(root@localhost)[(none)] stop slave io_thread;
Query OK, 0 rows affected (0.12 sec)
(root@localhost)[(none)] start slave io_thread;
Query OK, 0 rows affected (0.02 sec)
7、測試
主庫插入資料:
(root@localhost)[(none)] use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
(root@localhost)[test] show tables;
+----------------+
| Tables_in_test |
+----------------+
| tb1 |
+----------------+
1 row in set (0.00 sec)
(root@localhost)[test] select * from tb1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.03 sec)
(root@localhost)[test] insert into tb1 values(2);
Query OK, 1 row affected (0.10 sec)
(root@localhost)[test] select * from tb1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.02 sec)
(root@localhost)[test] show status like 'rpl_semi_sync%';
+--------------------------------------------+-------+
| 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 | 1 |
| 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 | 52899 |
| Rpl_semi_sync_master_tx_wait_time | 52899 |
| Rpl_semi_sync_master_tx_waits | 1 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 1 |
+--------------------------------------------+-------+
14 rows in set (0.05 sec)
其中:
rpl_semi_sync_master_clients為1表示處於半同步模式的slave節點有1個。
rpl_semi_sync_master_status為ON表示master節點啟用了半同步模式。
rpl_semi_sync_master_no_tx為0表示還沒有未成功傳送到slave節點的事物數量。
rpl_semi_sync_master_yes_tx為1表示已成功傳送到slave節點的事物數量為1。
備庫檢視:
(root@localhost)[test] select * from tb1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2139097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySQL】半同步與增強半同步複製MySql
- MySQL 5.5半同步複製的配置與監控MySql
- 【總結】mysql半同步MySql
- MySQL 半同步複製MySql
- MySQL半同步複製MySql
- mysql 5.7半同步複製MySql
- MySQL 5.7半同步機制MySql
- MySQL的半同步複製MySql
- Mysql5.7半同步複製MySql
- MySQL 半同步 與Raft對比MySqlRaft
- MySQL的半同步是什麼?MySql
- MySQL半同步使用注意事項MySql
- MySQL的非同步複製和半同步複製MySql非同步
- mysql半同步複製的設定MySql
- MySQL 半同步複製+MMM架構MySql架構
- mysql 5.6 半同步主從安裝MySql
- MySQL半同步複製--after_rollbackMySql
- mysql5.5半同步複製探究MySql
- Mysql半同步複製模式說明及配置示例 - 運維小結MySql模式運維
- 配置mysql5.5主從複製、半同步複製、主主複製MySql
- MySQL 8 複製(二)——半同步複製MySql
- 半同步複製報錯mysql8.0.25MySql
- MySQL半同步複製--after_commitMySqlMIT
- mysql5.5.9半同步複製功能部署MySql
- mysql5.5中的半同步複製MySql
- #MySQL# mysql5.7新特性之半同步複製MySql
- Mariadb之半同步複製叢集配置
- MySQL主從複製之半同步複製MySql
- MySQL增強(Loss-less)半同步複製MySql
- mysql線上建立半同步複製的從庫MySql
- MySQL5.5半同步複製實現原理MySql
- MySQL主從同步配置MySql主從同步
- Mysql主主同步-配置資料同步MySql
- MySQL5.7半同步複製報錯案例分析MySql
- MySQL 5.5 Semi-sync 半同步複製測試MySql
- MySQL 5.5 主從複製非同步、半同步以及注意事項詳解MySql非同步
- MySQL5.7主從複製-半同步複製搭建MySql
- MySQL主從同步配置記錄MySql主從同步