假設如今有三臺主機,兩臺主庫分別爲master1,master2,一臺從庫slavemysql
1,在主庫上分別開啓二進制日誌,而且配置不一樣server-id;sql
[mysqld]ide
log-bin=mysql-binspa
server-id=1日誌
2,分別在兩臺主庫建立一個專用於複製的用戶,而且賦予複製權限;
server
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';虛擬機
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';it
3,分別在兩個主庫執行狀態查詢,而且記錄查詢狀態;io
SHOW MASTER STATUS;innodb
分別記錄file,position,假設master1查詢結果爲file1,pos1,master2查存結果爲file2,pos2
4,配置從庫
1),設置以下兩個變量值爲table;
set global master_info_repository='TABLE';
set global relay_log_info_repository='TABLE';
2),分別執行以下設置語句:
CHANGE MASTER TO
MASTER_HOST='master1,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='file1',
MASTER_LOG_POS=rpos1 for channel 'master1';
CHANGE MASTER TO
MASTER_HOST='master2,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='file2',
MASTER_LOG_POS=rpos2 for channel 'master2';
3),啓動從庫複製
同時啓動:
start slave;
也能夠分別啓動:
start slave for channel 'master1';
start slave for channel 'master2';
同時中止:
stop slave;
也能夠分別中止:
stop slave for channel 'master1';
stop slave for channel 'master2';
注意:若是經過虛擬機來操做的過程當中,有拷貝虛擬機的狀況,好比經過拷貝master1來建立虛slave,
那麼極可能會出現從庫不能啓動問題,此時須要在從庫執行如下操做:
1,清空從庫如下表格:
slave_master_info
slave_relay_log_info
slave_worker_info
innodb_index_stats
innodb_table_stats
2,中止mysqld服務,刪除數據目錄下的auto.cnf文件,從新啓動mysqld服務;
3,繼續配置從庫。