mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用
mysql半同步復制(semi_sync_replication)搭建及使用
google為mysql開發了一個補丁一個基于半同步的補丁,應用與mysql5.0。回來mysql打上了該補丁,并在5.5版本中使用。半同步復制的理念是什么呢?在數據庫更改操作執行前,確保更改操作至少被寫入一臺slave磁盤中,意味著著對于每一個連接,最多只有一個事務會由于master崩潰丟失。主要是保證數據完整性,防止事務的丟失。
半同步配置
前提主從復制環境已搭建好(省略)
master操作
安裝插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.21 sec)
mysql> show 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 |
+------------------------------------+-------+
5 rows in set (0.00 sec)
設置變量,啟用半同步復制
mysql> set global rpl_semi_sync_master_enabled=on ;
Query OK, 0 rows affected (0.02 sec)
slave 操作
安裝插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.06 sec)
mysql> show variables like 'rpl_semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
2 rows in set (0.00 sec)
啟用半同步復制
mysql> set global rpl_semi_sync_slave_enabled=on ;
Query OK, 0 rows affected (0.00 sec)
rpl_semi_sync_master_enabled和rpl_semi_sync_slave_enabled也可以配置在master和slave的配置文件中,這樣服務器重啟也生效。
這樣一個半同步復制就配置完成。配置完slave,我們需要考慮如下兩個問題
1 如果所有slave崩潰怎么辦?這時將沒有slave通知master,事務已寫入中繼日志中。
2 如果所有的slave斷開怎么辦?在這種情況下,沒有slave通知master處于安全考慮而發送事務。
還有兩個參數解決以上情況
rpl_semi_sync_master_timeout=milliseconds
防止半同步復制在沒有收到確認的情況下,發送堵塞可以使用rpl-semi-sync-mastertimeout=milliseconds選項設置計數器。master在超時之前沒有收到確認,將恢復到異步復制,繼續執行半同步沒有進行的操作
通過set global rep-semi-sync-master-timeout=milliseconds
設置。需要注意的是作為服務器變量,服務器重啟此值不被保存
rpl-semi-sync-master-wait-no-slave=on/off
如果一個事務被提交,而master沒有slave連接,這時slave不可能將事務發送到其他地方保存,默認情況下,master會在時間限制范圍內急性等待slave的,并確認該事務被正確寫入磁盤上。此種情況下,master還是會恢復到異步復制。
如何監控半同步復制
安裝的插件提供了大量狀態變量,可以利用這些狀態變量監控半同步復制,簡紹一些最有用的變量,其他變量,可以查詢在線手冊
rpl_semi_sync_master-clients
此狀態變量報告了支持和主從半同步復制已連接的slave數量
rpl_semi_sync_master_status
master的半同步復制狀態 1是活動狀態,0是非活動狀態。要么是沒有被啟用,或是因為已恢復到異步復制
使用show status命令或通過information_schema模式下的global_status來查詢這些狀態變量。
mysql> show 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 |
+--------------------------------------------+-------+
使用半同步復制,性能也許會受到影響,主要原則是來保證數據完整性,在這里完整性才是最重要的。
總結
以上是生活随笔為你收集整理的mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 将图片路径转二进制,将图
- 下一篇: c++程序设计_基于proteus的51