1.設(shè)置主服務(wù)器配置
必須在主服務(wù)器上啟用二進(jìn)制日志,因?yàn)槎M(jìn)制日志是將更改從主服務(wù)器復(fù)制到從服務(wù)器的基礎(chǔ),如果未啟用log-bin,則無法進(jìn)行復(fù)制
復(fù)制組內(nèi)的每個(gè)服務(wù)器必須配置有唯一的id,此id用于標(biāo)識(shí)組中的各個(gè)服務(wù)器,1到232-1之間的正整數(shù)。
配置:
[mysqld] log-bin=mysql-bin server-id=1 注意:在mysql8.0以上版本中,如果沒有設(shè)置server-id,或server-id為0,則主服務(wù)器將拒絕任何從屬服務(wù)器的鏈接 2.創(chuàng)建用于復(fù)制的賬戶
每個(gè)從服務(wù)器都使用MySQL的用戶名和密碼鏈接主服務(wù)器,因此在主服務(wù)器上必須有一個(gè)用戶賬戶,已供從服務(wù)器鏈接。
需要為該賬戶指定 REPLICATION SLAVE 權(quán)限
SQL:
CREATE USER 'repl'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; 注意:mysql8.0以上不支持直接在授予權(quán)限的時(shí)候指定用戶密碼
3.獲取主服務(wù)器的二進(jìn)制日志位置
要配置從屬服務(wù)器在正確的位置開始復(fù)制過程,您需要在其二進(jìn)制日志中記下主服務(wù)器的當(dāng)前坐標(biāo)。此過程需要使用 FLUSH TABLES WITH READ LOCK ,它會(huì)阻止innodb表的commit操作,如果計(jì)劃關(guān)閉主數(shù)據(jù)庫(kù)以創(chuàng)建數(shù)據(jù)快照,則可以跳過此過程,而是將二進(jìn)制日志索引文件的副本與數(shù)據(jù)快照一起存儲(chǔ)。
步驟:
![]() 4.創(chuàng)建數(shù)據(jù)庫(kù)快照
如果主數(shù)據(jù)庫(kù)包含現(xiàn)有數(shù)據(jù),則必須先將數(shù)據(jù)復(fù)制到每個(gè)從數(shù)據(jù)庫(kù)。
mysqldump -uroot -p --all-databases --master-data > dbdump.db
mysqladmin shutdown //關(guān)閉主服務(wù)器 tar cf /tmp/db.tar ./data zip -r /tmp/db.zip ./data //使用zip或tar打包源數(shù)據(jù)文件,從服務(wù)器要用 unlock tables //在執(zhí)行FLUSH TABLES WITH READ LOCK的客戶端中執(zhí)行該命令 5.從站設(shè)置
每個(gè)從站都必須具有唯一的服務(wù)器id——server_id。如果沒設(shè)置或與主服務(wù)器的server_id相同,需要在mysql.ini 或mysql.cnf中設(shè)置并指定唯一的server_id,然后重啟服務(wù)器
server_id=2 如果主服務(wù)器已有數(shù)據(jù),需要先將數(shù)據(jù)導(dǎo)入到從服務(wù)器
注意:如果沒有設(shè)置server-id,或server-id為0,則從服務(wù)器將拒絕鏈接到主服務(wù)器
要設(shè)置從服務(wù)器與主服務(wù)器進(jìn)行通信以完成復(fù)制,需要為從服務(wù)器配置必要的鏈接信息。
CHANGE MASTER TO MASTER_HOST='master_host_name', /**主服務(wù)器地址*/ MASTER_USER='repl', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mybinlog.000021', MASTER_LOG_POS=155; 不知道怎么的就搞成雙向同步了。。。。 |
|