MySQL 5.5半同步複製

來源:互聯網
上載者:User

一、實驗目的:

mysql在主從複製還支援半同步複製,mysql複製是非同步,因為同步效能非常差。主庫分發事件以後必須等待從庫複製資料結束並收到從庫正常響應以後,才能進行下一步操作。非同步模式導致從庫落後主庫時,主庫無從得知。因此mysql5.5後引入google補丁半同步複製,2個外掛程式:semisync_master.so與semisync_slave.so。半同步:一主多從架構中,主庫只等待一台從庫複製完成資料並返回正常響應,就認為同步完成進行下一步操作,這樣即有非同步高速,又有同步的安全。一旦主庫等待從庫響應逾時,半同步複製自動降級為非同步複製。半同步複製前提至少有一台從庫與主庫在同一機房,保證足夠頻寬,資料複製也足夠快。因為對寫效能影響極大又需要同步確認等待。

說說MySQL的半同步複製

MySQL基於SSL的半同步複製

MySQL主從,半同步,主主複製

MySQL伺服器複製的主從架構半同步的實現

MySQL半同步複製(Semi-synchronous Replication)

MySQL5.5配置安裝半同步複製

二、實驗步驟

1.mysql支援的模組/外掛程式

[root@master~]# ls -t /usr/local/mysql/lib/plugin/

debug  semisync_slave.so  mypluglib.so  qa_auth_interface.so  qa_auth_client.so  adt_null.so daemon_example.ini  semisync_master.so  libdaemon_example.so  qa_auth_server.so  auth_test_plugin.so  auth_socket.so  auth.so

2.半同步模組安裝

2.1主庫

mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql>SHOW GLOBAL VARIABLES LIKE '%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  | 沒有從庫也要等一下

+------------------------------------+-------+

mysql>SET GLOBAL rpl_semi_sync_master_enabled=1;

mysql>SET GLOBAL rpl_semi_sync_master_timeout=1000;

mysql>SHOW GLOBAL STATUS LIKE '%semi%';

+--------------------------------------------+-------+

|Variable_name                              | Value |

+--------------------------------------------+-------+

|Rpl_semi_sync_master_clients              | 1    | 從節點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    |

+--------------------------------------------+-------+

mysql>USE school;

mysql>CREATE TABLE tb2(name CHAR(20));

mysql>SHOW GLOBAL STATUS LIKE '%semi%';

+--------------------------------------------+-------+

|Variable_name                            | Value |

+--------------------------------------------+-------+

|Rpl_semi_sync_master_clients              | 1    |

|Rpl_semi_sync_master_net_avg_wait_time    | 800  | 等待從服返回報告時間

|Rpl_semi_sync_master_net_wait_time        | 800  |

|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    | 715  | 等待從服事務返回報告時間

|Rpl_semi_sync_master_tx_wait_time        | 715  |

|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    |

+--------------------------------------------+-------+

mysql>INSERT INTO tb2 VALUES ('tom'),('jerry'),('jack');

mysql>SHOW GLOBAL STATUS LIKE '%semi%';

+--------------------------------------------+-------+

|Variable_name                            | Value |

+--------------------------------------------+-------+

|Rpl_semi_sync_master_clients              | 1    |

|Rpl_semi_sync_master_net_avg_wait_time    | 1518  |

|Rpl_semi_sync_master_net_wait_time        | 3037  |

|Rpl_semi_sync_master_net_waits            | 2    |

|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    | 715  |

|Rpl_semi_sync_master_tx_wait_time          | 715  |

|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              | 2    |

+--------------------------------------------+-------+


 

從庫

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

mysql>SHOW GLOBAL VARIABLES LIKE '%semi%';

+---------------------------------+-------+

|Variable_name                  | Value |

+---------------------------------+-------+

|rpl_semi_sync_slave_enabled    |OFF  |

|rpl_semi_sync_slave_trace_level | 32    |

+---------------------------------+-------+

mysql>SET GLOBAL rpl_semi_sync_slave_enabled=1;

mysql>STOP SLAVE;

mysql>START SLAVE;

mysql>SHOW GLOBAL STATUS LIKE '%semi%';

+----------------------------+-------+

|Variable_name              | Value |

+----------------------------+-------+

|Rpl_semi_sync_slave_status | ON    |

+----------------------------+-------+

永久配置在Master和Slave的my.cnf中編輯:

# OnMaster

[root@master~]# vim /etc/my.cnf

[mysqld]

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000# 1 second

驗證

mysql>SHOW GLOBAL VARIABLES LIKE '%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  |

+------------------------------------+-------+

 

# OnSlave

[root@slave~]# vim /etc/my.cnf

[mysqld]

rpl_semi_sync_slave_enabled=1

驗證

mysql>SHOW GLOBAL VARIABLES LIKE '%semi%';

+---------------------------------+-------+

|Variable_name                  | Value |

+---------------------------------+-------+

|rpl_semi_sync_slave_enabled    | ON    |

|rpl_semi_sync_slave_trace_level | 32    |

+---------------------------------+-------+

本文永久更新連結地址:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.