雙主模式
互為主從:兩個節點各自都要開啟binlog和relay log(1)資料不一緻
(2)自動增長ID
定義一個節點使用奇數ID
auto_increment_offset=1
auto_increment_increment=2
另外一個節點使用偶數ID
auto_increment_offset=2
auto_increment_increment=2
前提:(1)server_id必須要使用不同值
(2)均啟用binlog和relay log
(3)存在自動增長ID的表,為了使得ID不相沖突,需要定義其自動增長方式
(4)都授權複制權限的使用者賬号
(5)各把對方指定為主節點
複制時應該注意的問題:1、從伺服器設定為“隻讀”
在從伺服器啟動read_only,但僅對非SUPER權限使用者有效
組織所有使用者:FLUSH TABLES WITH READ LOCK;
2、盡量確定複制時的事物安全
在master節點啟用參數sync_binlog = ON
如果用到的是InnoDB存儲引擎:
innodb_flush_logs_at_trx_commit=ON
innodb_support_xa=ON
3、從伺服器意外終止時盡量避免自動複制線程
4、從節點:設定參數
sync_master_info = ON
sync_relay_log_info = ON
實戰:
在node1進行如下配置
[[email protected]~]#vim /etc/my.cnf.d/server.cnf
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnaucjMwMTMy8VMx0SMx0yNxAjMvwVbvNmLuRGZ19Gbj5CdrJmLsR3cmxGdhd3bvw1LcpDc0RHaiojIsJye.jpg)
在node2節點進行如下配置
[[email protected]~]#vim /etc/my.cnf.d/server.cnf
[[email protected]~]#systemctl start mariadb
[[email protected]~]#systemctl start mariadb
在node1和node2互相授權GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.62' IDENTIFIED BY '123456';
GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'joah'@'192.168.4.61' IDENTIFIED BY '123456';
在node1和node2指定masterMariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.62',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=422;
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.4.61',MASTER_USER='joah',MASTER_PASSWORD='123456',MASTER_LOG_FILE='master-log.000003',MASTER_LOG_POS=245;
在node1和node2啟動從伺服器MariaDB [(none)]> SHOW SLAVE STATUSG;
MariaDB [(none)]> START SLAVE IO_THREAD,SQL_THREAD;
測試MariaDB [(none)]> SHOW SLAVE STATUSG;
如果出現上述紅框中yes字樣就成功