mysql半同步主從複製

在 MySQL5.5以前, MySQL的複製是異步操做,主庫和從庫的數據之間存在必定的延遲,這樣存在一個隱患:當在主庫上寫人一個事務並提交成功,而從庫還沒有獲得主庫推送的 Binlog日誌時,主庫宕機了,例如主庫可能因磁盤損壞、內存故障等形成主庫上該事務 Binlog丟失,此時從庫就可能損失這個事務,從而形成主從不一致。html

半同步複製與異步複製的安裝區別:半同步複製須要安裝建立mysql

 

查看主庫Mysql是否開啓binlog日誌

show variables like 'log_bin'sql

剛開始是關閉(off)的,在如下配置完成後,會自動打開數據庫

(1)首先,判斷 MySQL服務器是否支持動態增長插件:服務器

mysql> select @@have_dynamic_loading;異步

2)確認支持動態增長插件後,檢查 MySQL(mysql5.6及以上均存在 )的安裝目錄下是否存在插件:測試

一:安裝插件:spa

在主庫上安裝插件semisync_master.so:插件

mysql> install plugin rpl_semi_sync_master SONAME 'semisync_master.so';線程

從庫上則安裝 semisync_slave.so插件:

mysql> install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';

安裝完成後,從 plugin表中可以看到剛纔安裝的插件

mysql> select * from mysql.plugin;

3)須要分別在主庫和從庫上配置參數打開半同步semi-sync,默認半同步設置是不打開的,主庫上配置全局參數:

mysql> set global rpl_semi_sync_master_enabled=1;

mysql> set global rpl_semi_sync_master_timeout=30000;

show variables like '%rpl_semi_sync_master%';

從庫上同樣配置全局參數:

mysql> set global rpl_semi_sync_slave_enabled=1;

show variables like '%rpl_semi_sync_slave_enabled%';

二:異步主從複製配置

一、確保主從庫安裝了相同版本的數據庫。

二、在主庫上,設置一個複製使用的帳戶,並授予 REPLICATION SLAVE權限。這裏建立一個複製用戶repl,能夠從IP爲172.17.0.2(從庫IP)的主機進行鏈接:

命令文本:

GRANT REPLICATION SLAVE ON *.* To 'rep1'@'172.17

三、修改主數據庫服務器的配置文件 my.cnf,開啓 BINLOG,並設置 server-id的值。這兩個參數的修改須要從新啓動數據庫服務才能夠生效

# 尋找MySQL的配置文件 my.cnf find / -name my.cnf

vi /etc/my.cnf
server-id = 1 #惟一,不能和主數據庫的配置相同,若是有多個從數據庫服務器,每一個從數據庫服務器必須有本身惟一的 server-id值
log-bin = mysql-bin #開啓BINLOG 二進制日誌

# 主數據庫從新啓動

mysql service mysqld restart

四、SHOW MASTER STATUS; # 主數據庫查看狀態

五、# 尋找從庫MySQL的配置文件

my.cnf find / -name my.cnf

vi /etc/my.cnf

server-id=2

六、重啓從庫mysql服務

mysql service mysqld restart

七、對從數據庫服務器作相應設置,指定複製使用的用戶,主數據庫服務器的IP、端口

以及開始執行復制的日誌文件和位置等,參考代碼以下:

mysql> CHANGE MASTER TO

->MASTER_HOST=master host name

->MASTER_USER=replication_user_name

-> MASTER PASSWORD=replication_password

->MASTER_LOG_FILE='recorded_log_file_name

->MASTER_LOG_POS=recorded _log_position

舉例說明以下:

CHANGE MASTER TO MASTER_HOST='172.17.0.3',MASTER_PORT=3306,MASTER_USER='rep1',MASTER_PASSWORD='1234test' ,MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=527;

八、在從庫上,啓動 slave同步線程

start slave;

九、# 從庫查看狀態

show slave status\G;

當Slave_IO_Running和Slave_SQL_Running都爲YES的時候,表示主從複製配置成功了。

slave上執行 show processlist\G 命令將顯示相似以下的進程:

十、在master上執行 show processlist\G命令將顯示相似以下的進程:

13測試:

主庫上新建數據庫和表,並插入數據,看看從庫中是否會自動建立相關的數據庫和表、插入數據。

CREATE TABLE student (id int,name varchar(20));

相關文章
相關標籤/搜索