【MySQL】Semisynchronous Replication 配置和引數說明
前文 Semisynchronous Replication 概述 已經介紹 semi sync的基本原理以及特性,優缺點。本章將進入實踐,畢竟“紙上來得終覺淺,絕知此事要躬行”。^_^
一環境準備
1 MySQL 5.5 + 版本
2 本例已經搭建好的MySQL Replication 同時也有另一種搭建方法先配置好semi sync ,然後再搭建主從。
提示:如何搭建主從 請參考 如何搭建 MySQL 主從複製
二 安裝
說明:此例演示的是M-M 架構 需要在主庫和備庫同時執行安裝 plugin的命令。
在主庫安裝semisync_master和semisync_slave外掛:
在備庫上 載入semisync_master和semisync_slave外掛:
當然如果需要解除安裝 該plugin 需要執行
三 其他注意事項
注意安裝完plugin 之後 ,MySQL會將該外掛記錄到系統表mysql.plugin中,下次啟動時系統則會自動載入該外掛了,無需再次執行上面的命令,同時還需要修改主備庫my.cnf 配置檔案。
以下是我測試在安裝問plugin 之後 my.cnf 中不配置和配置的系統啟動日誌:
my.cnf 中帶有rpl_semi 等引數
安裝完成 my.cnf 不加rpl_semi 引數,是不開啟semi sync 複製的。
四 常用引數
使用show variables like '%rpl_semi%' 檢視半同步複製相關的引數
說明:
rpl_semi_sync_master_enabled 控制在主庫是否開啟了非同步複製模式,可以設定為ON,OFF ,預設是off 。
rpl_semi_sync_master_timeout 控制主庫等待備庫反饋已提交事務在備庫落地的時間,以毫秒為單位預設是10s 。
rpl_semi_sync_slave_enabled 控制在從庫是否開啟了非同步複製模式,可以設定為ON,OFF ,預設是off 。
rpl_semi_sync_master_trace_level和rpl_semi_sync_slave_trace_level是可以組合(求或)的引數,可以是下面值的組合:
rpl_semi_sync_master_wait_no_slave
表示是否允許master每個事務提交後都要等待slave的接收確認訊號。預設為ON,即每一個事務都會等待。如果為OFF,則slave追趕上後,也不會開啟半同步複製模式,需要手工開啟。
五 檢視執行狀態
上面比較重要的狀態值有:
Rpl_semi_sync_master_tx_avg_wait_time:事務因開啟Semi_sync,平均需要額外等待的時間
Rpl_semi_sync_master_net_avg_wait_time:事務進入等待佇列後,到網路平均等待時間
依據上面兩個狀態值可以知道,Semi-sync的網路消耗有多大,給某個事務帶來的額外的消耗有多大。
Rpl_semi_sync_master_status 則表示當前Semi-sync是否正常工作。
從Rpl_semi_sync_master_no_times變數,可以知道一段時間內,Semi-sync是否有超時失敗過,該計數器則記錄了這樣的失敗次數。
六 參考文章
[1] Semisynchronous Replication Installation and Configuration
[2] Semisynchronous Replication Monitoring
[3]
一環境準備
1 MySQL 5.5 + 版本
2 本例已經搭建好的MySQL Replication 同時也有另一種搭建方法先配置好semi sync ,然後再搭建主從。
提示:如何搭建主從 請參考 如何搭建 MySQL 主從複製
二 安裝
說明:此例演示的是M-M 架構 需要在主庫和備庫同時執行安裝 plugin的命令。
在主庫安裝semisync_master和semisync_slave外掛:
-
root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
-
root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
-
root@rac3 mysql> show plugins;
-
+-----------------------+--------+--------------------+--------------------+---------+
-
| Name | Status | Type | Library | License |
-
+-----------------------+--------+--------------------+--------------------+---------+
-
| rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |
-
| rpl_semi_sync_slave | ACTIVE | REPLICATION | semisync_slave.so | GPL |
-
+-----------------------+--------+--------------------+--------------------+---------+
-
22 rows in set (0.00 sec)
-
root@rac3 mysql> show variables like \"%rpl_semi%\";
-
+------------------------------------+-------+
-
| Variable_name | Value |
-
+------------------------------------+-------+
-
| rpl_semi_sync_master_enabled | ON |
-
| rpl_semi_sync_master_timeout | 1000 |
-
| rpl_semi_sync_master_trace_level | 32 |
-
| rpl_semi_sync_master_wait_no_slave | ON |
-
| rpl_semi_sync_slave_enabled | ON |
-
| rpl_semi_sync_slave_trace_level | 32 |
-
+------------------------------------+-------+
- 6 rows in set (0.00 sec)
-
root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
-
root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
-
root@rac3 mysql> show plugins;
-
+-----------------------+--------+--------------------+--------------------+---------+
-
| Name | Status | Type | Library | License |
-
+-----------------------+--------+--------------------+--------------------+---------+
-
| rpl_semi_sync_master | ACTIVE | REPLICATION | semisync_master.so | GPL |
-
| rpl_semi_sync_slave | ACTIVE | REPLICATION | semisync_slave.so | GPL |
- +-----------------------+--------+--------------------+--------------------+---------+
- mysql> uninstall plugin rpl_semi_sync_slave
三 其他注意事項
注意安裝完plugin 之後 ,MySQL會將該外掛記錄到系統表mysql.plugin中,下次啟動時系統則會自動載入該外掛了,無需再次執行上面的命令,同時還需要修改主備庫my.cnf 配置檔案。
-
## semi sync
-
rpl_semi_sync_master_enabled=1
-
rpl_semi_sync_master_timeout=1000
- rpl_semi_sync_slave_enabled=1
my.cnf 中帶有rpl_semi 等引數
-
140523 22:42:12 InnoDB: Waiting for the background threads to start
-
140523 22:42:13 InnoDB: 1.1.8 started; log sequence number 1909957825
-
140523 22:42:13 [Note] Semi-sync replication initialized for transactions.
- 140523 22:42:13 [Note] Semi-sync replication enabled on the master.
-
140523 22:49:09 mysqld_safe Starting mysqld daemon with databases from /home/mysql/data3306/data
-
.......
-
140523 22:49:13 InnoDB: Waiting for the background threads to start
-
140523 22:49:14 InnoDB: 1.1.8 started; log sequence number 1909961006
-
140523 22:49:14 [Note] Event Scheduler: Loaded 0 events
- 140523 22:49:14 [Note] /usr/sbin/mysqld: ready for connections.
使用show variables like '%rpl_semi%' 檢視半同步複製相關的引數
-
root@rac4 mysql > show variables like "%rpl_semi%";
-
+------------------------------------+-------+
-
| Variable_name | Value |
-
+------------------------------------+-------+
-
| 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 |
-
| rpl_semi_sync_slave_enabled | OFF |
-
| rpl_semi_sync_slave_trace_level | 32 |
- +------------------------------------+-------+
rpl_semi_sync_master_enabled 控制在主庫是否開啟了非同步複製模式,可以設定為ON,OFF ,預設是off 。
rpl_semi_sync_master_timeout 控制主庫等待備庫反饋已提交事務在備庫落地的時間,以毫秒為單位預設是10s 。
rpl_semi_sync_slave_enabled 控制在從庫是否開啟了非同步複製模式,可以設定為ON,OFF ,預設是off 。
rpl_semi_sync_master_trace_level和rpl_semi_sync_slave_trace_level是可以組合(求或)的引數,可以是下面值的組合:
-
1 = general level (for example, time function failures)
-
16 = detail level (more verbose information)
-
32 = net wait level (more information about network waits)
- 64 = function level (information about function entry and exit)
表示是否允許master每個事務提交後都要等待slave的接收確認訊號。預設為ON,即每一個事務都會等待。如果為OFF,則slave追趕上後,也不會開啟半同步複製模式,需要手工開啟。
五 檢視執行狀態
-
root@rac4 mysql > show status like "%rpl_semi%";
-
+--------------------------------------------+---------------+
-
| Variable_name | Value |
-
+--------------------------------------------+---------------+
-
| Rpl_semi_sync_master_clients | 1 |# 有多少個Semi-sync的備庫
-
| Rpl_semi_sync_master_net_avg_wait_time | 732 |# 事務提交後,等待備庫響應的平均時間
-
| Rpl_semi_sync_master_net_wait_time | 27885 |# 等待網路響應的總次數
-
| Rpl_semi_sync_master_net_waits | 1323 |# 總的網路等待時間
-
| Rpl_semi_sync_master_no_times | 0 |# 一共有幾次從Semi-sync跌回普通狀態
-
| Rpl_semi_sync_master_no_tx | 0 |# 備庫未及時響應的事務數
-
| Rpl_semi_sync_master_status | ON |# 主庫上Semi-sync是否正常開啟
-
| Rpl_semi_sync_master_timefunc_failures | 0 |# 時間函式未正常工作的次數
-
| Rpl_semi_sync_master_tx_avg_wait_time | 59 |# 開啟Semi-sync,事務返回需要等待的平均時間
-
| Rpl_semi_sync_master_tx_wait_time | 8649 |# 事務等待備庫響應的總時間
-
| Rpl_semi_sync_master_tx_waits | 809 |# 事務等待備庫響應的總次數
-
| Rpl_semi_sync_master_wait_pos_backtraverse | 9398 |# 改變當前等待最小二進位制日誌的次數
-
| Rpl_semi_sync_master_wait_sessions | 230 |# 當前有幾個執行緒在等備庫響應
- | Rpl_semi_sync_master_yes_tx | 801 |# Semi-sync模式下,成功的事務數
Rpl_semi_sync_master_tx_avg_wait_time:事務因開啟Semi_sync,平均需要額外等待的時間
Rpl_semi_sync_master_net_avg_wait_time:事務進入等待佇列後,到網路平均等待時間
依據上面兩個狀態值可以知道,Semi-sync的網路消耗有多大,給某個事務帶來的額外的消耗有多大。
Rpl_semi_sync_master_status 則表示當前Semi-sync是否正常工作。
從Rpl_semi_sync_master_no_times變數,可以知道一段時間內,Semi-sync是否有超時失敗過,該計數器則記錄了這樣的失敗次數。
六 參考文章
[1] Semisynchronous Replication Installation and Configuration
[2] Semisynchronous Replication Monitoring
[3]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1674782/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySQL】SemisynchronousReplication配置和引數說明MySql
- 【MySQL】Semisynchronous Replication 概述MySql
- MySQL now supports an interface for semisynchronous replication:MySql
- MySQL引數說明MySql
- Elasticsearch 引數配置說明Elasticsearch
- kafka 引數配置說明Kafka
- 【MYSQL】MHA引數列表說明MySql
- Mysql JDBC Url引數說明MySqlJDBC
- Nginx的gzip配置引數說明Nginx
- Redis配置檔案引數說明Redis
- MySQL CMake引數說明手冊MySql
- mysql innodb相關引數說明MySql
- MySQL配置檔案my.ini引數註釋說明MySql
- DBCP連線池配置引數說明
- Mysql my.cnf部分引數說明MySql
- mysql relay log相關引數說明MySql
- MYSQL: Handler_read_%引數說明MySql
- 【7】JVM引數說明和分析JVM
- MySQL 8.0 Reference Manual(讀書筆記93節--Semisynchronous Replication)MySql筆記
- 【cartographer_ros】七: 主要配置引數說明ROS
- [Nginx] - nginx 基本配置與引數說明(轉)Nginx
- MySQL Galera cluster叢集常用引數說明MySql
- MySQL mysqldump命令的引數詳細說明MySql
- mysql常用引數使用說明及查詢MySql
- TOP引數說明
- mysqldump引數說明MySql
- mysqldump 引數說明MySql
- 幾個和MySQL InnoDB相關的引數設定說明MySql
- GoldenGate 配置文件,裡面有引數說明Go
- Kafka 配置引數彙總及相關說明Kafka
- MySQL 5.7 自增欄位相關引數說明MySql
- MySQL 5.5編譯安裝cmake引數說明MySql編譯
- redis 3.0 引數說明Redis
- golden gate 引數說明Go
- oracle引數說明(zt)Oracle
- mysql 變數說明MySql變數
- Lucene原始碼解析--IndexWriterConfig配置引數說明原始碼Index
- Java虛擬機器(JVM)引數配置說明薦Java虛擬機JVM