您好,登錄后才能下訂單哦!
下文內容主要給大家帶來Mysql半同步復制定義及安裝教程簡析,這里所講到的知識,與書籍略有不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。
1 概述
半同步復制指一部分主機同步復制,另一部分主機異步復制
同步的邏輯是用戶寫操作到主云服務器,主服務記錄到二進制文件后,主服務會同步發送給從服務器,從服務器響應數據同步后,主服務器才會把響應發給用戶。這種方式對IO有強依賴。
mysql是高度插件化的,半同步復制插件是google共獻給mysql的插件。裝有該插件的服務器才能實現同步復制。半同步復制的插件在主節點和從節點是不一樣的,各自分別使用專有插件,當插件配置啟用后,從節點將同步的方式來同步主服務器數據,其他沒有配置的插件的機器為異步同步機制復制。這里的同步復制可以設定時間,在一定的時間范圍內,如果配有插件的從服務器沒有復制主服務器的數據,該從服務器將會被降級為異步復制。
PXC:Percona XtraDB Cluster,percona的插件,是一種多主的高可用,可擴展的解決方案,可以在生產環境使用。實現了主從復制集群,和mysql的主從服務復制邏輯不一樣,PXC實現了多主的集群復制,每一個節點都是可讀可寫。通過集群信道來同步信息,不依賴于二進制日志和中繼日志,按位復制,不同步量少,實現幾乎同步的復制。二進制級別做校驗,可以發現數據的不一致,但是這個方案不是mysql官方的,這種方案可能會停止維護,當數據量大后,要重新轉移數據庫難度就很大。
本文沒有介紹PXC工具的使用,主要mysql自帶的半同步復制安裝插件才能實現半同步的功能
2 插件安裝
查看當前數據庫安裝的插件
MariaDB [sunny]> show plugins;
mysql支持多種插件,其中,在路徑/usr/lib64/mysql/plugin/下的semisync_master.so和semisync_slave.so這兩個插件實現半同步復制,需要安裝才能使用同步復制功能
在mysql下執行help install查看install的使用方法
安裝語法如下:
mysql> INSTALL PLUGIN plugin_name SONAME 'shared_library_name';
其中,
plugin_name為插件名,與文件名不一致
shared_library_name為共享庫名稱,即/usr/lib64/mysql/plugin/下不需要加.so后綴的插件名。
通過文檔得知插件對應的插件名稱和文件名,沒有規律可尋
半同步復制:
semisync_master.so 主節點的插件
semisync_slave.so 從節點的插件
主節點:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
MariaDB [mydb]> SHOW GLOBAL 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 |
+------------------------------------+-------+
MariaDB [mydb]> SET GLOBAL rpl_semi_sync_master_enabled=ON;
從節點:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
MariaDB [mydb]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
MariaDB [mydb]> STOP SLAVE IO_THREAD;
MariaDB [mydb]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
MariaDB [mydb]> START SLAVE IO_THREAD;
判斷方法:
主節點:
MariaDB [mydb]> SELECT @@global.rpl_semi_sync_master_clients;
3 例子 實現半同步復制
步驟一,主從復制模型配置
主服務器71配置
[root@CentOS7A ~]#vim /etc/my.cnf.d/server.cnf
[server]
skip_name_resolve = ON
innodb_file_per_table = ON
max_connections = 20000
log_bin = master-log
server_id = 1
重啟mysql
[root@CentOS7A ~]#systemctl restart mariadb
授權擁有復制權限的賬號
MariaDB [sunny]> grant replication client,replication slave on *.* to 'sunnycopy'@'192.168.1.%' identified by 'Pass123456';
MariaDB [sunny]> flush privileges;
從節點73配置
[root@CentOS7C ~]#vim /etc/my.cnf.d/server.cnf
[server]
skip_name_resolve = ON
innodb_file_per_table = ON
innodb_buffer_pool_size = 256M
max_connections = 2000
relay_log = relay-log
server_id = 2
重啟mysql
[root@CentOS7C ~]#systemctl restart mariadb
連接入從服務器,啟動從服務器的復制
MariaDB [(none)]> change master to master_host='192.168.1.71',master_user='sunnycopy',master_password='Pass1234',master_log_file='master-log.000004',master_log_pos=245;
其中,master_log_file和master_log_pos可以到主服務器上用如下命令
MariaDB [sunny]> show binlog events in 'master-log.000004';
或者
MariaDB [sunny]> show mastert status;
查看從哪個二進制文件的位置開始復制
啟動復制線程
MariaDB [(none)]> start slave;
查看狀態
MariaDB [(none)]> show slave status\G;
到這里,主從復制集群設置完成。
步驟二,配置為半同步模式
主節點73上安裝模塊
MariaDB [sunny]> install plugin rpl_semi_sync_master soname 'semisync_master';
安裝完成后,在主節點上會生成相關服務器半同步參數
查看如下
MariaDB [sunny]> show global 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)
查看半同步復制狀態的相關參數,命令如下
MariaDB [sunny]> show status like '%rpl%';
從節點73安裝插件
MariaDB [(none)]> install plugin rpl_semi_sync_slave soname 'semisync_slave';
查看參數
MariaDB [sunny]> show global variables like '%rpl%';
MariaDB [sunny]> show status like '%rpl%';
步驟三,設置參數為啟用
注意,插件安裝完成后,master和slave節點上的rpl_semi_sync_master_enabled 和rpl_semi_sync_slave_enabled都是禁用的,需要啟用
主節點71上啟用
MariaDB [sunny]> set @@global.rpl_semi_sync_master_enabled=on;
從節點73上啟用
MariaDB [(none)]> set @@global.rpl_semi_sync_slave_enabled=on;
步驟四,從節點重啟復制線程
注意,這里是從原來的主從復制轉為半同步復制,已經設置了同步主機,即執行過change master to的命令,如果沒有需要設置相關參數,然后啟用復制線程
73上設置
MariaDB [(none)]> stop slave io_thread;
MariaDB [(none)]> start slave io_thread;
確認,從服務器的Rpl_semi_sync_slave_status狀態為on才是正常啟用,查看命令如下
MariaDB [(none)]> show status like '%rpl%';
主服務器上查看Rpl_semi_sync_master_clients 參數,value是1,表示已經有1臺從服務器啟用半同步復制方式連接到該主服務器上
MariaDB [sunny]> show status like '%rpl%';
檢查,在主節點,插入數據后,狀態會變化
如73上執行如下操作
MariaDB [sunny]> create database test2;
MariaDB [sunny]> use test2
MariaDB [test2]> create table class(id int,major char(20));
查看相關參數狀態, 就會發生變化,命令如下
MariaDB [test2]> show status like '%rpl%';
半同步復制到這里配置完成,注意,半同步是一把雙刃劍,因為為了等待事務同步復制事務的完成,需要耗費一定的時間,速度相對較慢。
生成環境,建議用keepalive工具將proxysql配置為高可用,防止單點故障
對于以上關于Mysql半同步復制定義及安裝教程簡析,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。