mysql雙主互備


mysql主從同步使得數據可以從一個數據庫服務器復制到其他服務器上,在復制數據時,一個服務器充當主服務器(master),其余的服務器充當從服務器(slave),備服務器從主服務器同步數據,完成數據的備份。

【異步同步】

前提:2台服務器,主 192.168.1.101 備 192.168.1.102

1.首先主 備 服務的mysql配置的server的id必須不同,server_id是為了標識binlog,防止同步死循環。

#服務器ID,同個集群必須不同
server_id=1
#端口
port=63751

skip-name-resolve
#binlog 過期時間,超過3天未修改的清除
expire_logs_days = 3
#binlog 的名稱
log-bin=mysql-bin.log
#同步的庫排除mysql
binlog-ignore-db=mysql
#同步的庫排除mysql
replicate-ignore-db=mysql
slave-skip-errors=all

#id 的自增量
auto_increment_increment=2
#id 的開始
auto_increment_offset=1
#最大連接數
max_connections=1000
#編碼
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8;'
character-set-server=utf8

2.重啟mysql

3.創建主備同步的賬戶和權限

grant replication slave on *.* to 'replication'@'192.168.1.101' identified by 'test'; //再備服務器上執行
grant replication slave on *.* to 'replication'@'192.168.1.102' identified by 'test'; //再主服務器上執行
 
4.查看mysql當前機器的binlog信息,show master status\G,例如我安裝完之后,主備查看的binlog均為如下圖所示。

5.則配置同步信息。

change master to master_host='192.168.1.102',master_port=3306,master_user='replication',master_password='test',master_log_file='binlog.000002',master_log_pos=565; //主服務器上執行

change master to master_host='192.168.1.101',master_port=3306,master_user='replication',master_password='test',master_log_file='binlog.000002',master_log_pos=565;//備服務器上執行

6.打開同步 start slave

7.查看slave的狀態show slave status \G看到如下,說明成功

 

【半同步機制】

1.進入mysql執行如下:

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

同時配置文件增加如下配置,重啟mysql即可。

#半同步,10s超時
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10000
rpl_semi_sync_slave_enabled=1

總結:半同步復制個人感覺是維持數據完整性,安全性的的一個策略,雖會損失一點性能,還是值得的。配置很簡單,關鍵是理解其工作機制。

 

三個問題:

1.為什么server_id是必須的,而且配置主從同步的server_id不允許重復。

答:mysql寫入到binlog時候會攜帶上server_id,所以在主從同步時候,通過server_id 防止死循環。

假設 server_id的1001 為A,server_id 的 1002 為B,在A機器寫入數據的時候binlog帶上 1001 信息,通過binlog同步到B機器上,B機器上的binlog會記錄的會攜帶上1001的信息,這時候如果是雙主形式的互備,A同步B的時候通過server_id會忽略該數據,防止死循環。

2.異步機制是什么與半同步機制有何差異。

答:簡單來講

      a.異步機制任務執行到1即結束事務。

      b.半同步機制是執行到3結束事務,如果在2或者3超時時候,會采用半同步機制。

綜述,半同步機制更能保障數據的一致性問題,而異步機制的性能更優。

 

3.雙主同步如果字段key是自增長的如何保證不沖突?

 答:如果雙主互備的情況下,通過auto_increment_increment,即id的自增為2,然后雙主兩台的id起始值不同,來保障兩台機器的id完全不相同,這樣在互相切換過程中不會導致id沖突而丟失數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM