共計 1774 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要介紹“Mysql 異步復制、同步復制、半同步復制的區別”,在日常操作中,相信很多人在 Mysql 異步復制、同步復制、半同步復制的區別問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mysql 異步復制、同步復制、半同步復制的區別”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
一、異步復制、同步復制、半同步復制的區別
異步復制:在主從架構中假如當客戶端發送了一條 UPDATE 語句,主服務器上 I /O thread 線程將二進制日志寫入 binlog 文件之后就返回客戶端結果,不管從服務器是否已經同步到從服務器的 relaylog 中,性能是最好的,缺點主服務器宕機,容易造成數據不一致,Mysql 中默認使用的就是異步復制
同步復制:當主服務器完成更新,并且同步到所有從服務器才會返回成功結果,效率低,影響性能
半同步復制:將兩種方法折中,當主服務器完成更新,至少有一個從服務器接收到并完成更新,主服務器就返回成功
二、具體實現
半同步至少需要 3 臺主機,2 臺和異步就沒有區別了,需要使用 Mysql5.5 以上版本,半同復制是通過插件 Mysql 包中的插件實現的
1、搭建主從復制
主服務器
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
server-id=57 # 添加唯一 id
log-bin # 開啟二進制日志
創建賬號
MariaDB [(none)] grant replication slave on *.* to repluser@ 192.168.12.% identified by 12345
查看當前二進制日志位置
show master logs;
從服務器配置方法類似,不重復寫了
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
server-id=27 # 添加唯一 id
log-bin # 開啟二進制日志
2、半同步復制配置
主服務器
MariaDB [(none)] show plugins; # 可以查看安裝的插件
安裝主節點的插件
MariaDB [(none)] INSTALL PLUGIN rpl_semi_sync_master SONAME semisync_master.so # 安裝主節點的插件
MariaDB [(none)] SET GLOBAL rpl_semi_sync_master_enabled=1; # 啟用
MariaDB [(none)] SET GLOBAL rpl_semi_sync_master_timeout = 10000; #10000ms 不同步,主服務器直接回應客戶端,默認 10000
MariaDB [(none)] SHOW GLOBAL VARIABLES LIKE %semi% # 查看主節點狀態
MariaDB [(none)] SHOW GLOBAL STATUS LIKE %semi% # 查看狀態變量
二臺從服務器配置一樣
MariaDB [(none)] INSTALL PLUGIN rpl_semi_sync_slave SONAME semisync_slave.so # 安裝從節點插件
MariaDB [(none)] SET GLOBAL rpl_semi_sync_slave_enabled=1; # 啟用
MariaDB [(none)] SHOW GLOBAL VARIABLES LIKE %semi%
MariaDB [(none)] stop slave; # 從節點配置過需要重啟線程才生效
MariaDB [(none)] start slave; # 啟動后在主服務器狀態變量中可以看到一個從節點
三、驗證
在主服務器上創建數據庫, 二個從節點都可以同步
停止其中一個從服務器的 Mariadb 服務。同步不受影響
當二個從服務器服務都關閉,主服務器會等到 rpl_semi_sync_master_timeout 時間到了之后再執行
到此,關于“Mysql 異步復制、同步復制、半同步復制的區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!