1.設置主服務器配置
必須在主服務器上啓用二進制日誌,由於二進制日誌是將更改從主服務器複製到從服務器的基礎,若是未啓用log-bin,則沒法進行復制
複製組內的每一個服務器必須配置有惟一的id,此id用於標識組中的各個服務器,1到2³²-1之間的正整數。
配置:
[mysqld]
log-bin=mysql-bin
server-id=1
注意:在mysql8.0以上版本中,若是沒有設置server-id,或server-id爲0,則主服務器將拒絕任何從屬服務器的連接mysql
2.建立用於複製的帳戶
每一個從服務器都使用MySQL的用戶名和密碼連接主服務器,所以在主服務器上必須有一個用戶帳戶,已供從服務器連接。
須要爲該帳戶指定 REPLICATION SLAVE 權限
SQL:
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
注意:mysql8.0以上不支持直接在授予權限的時候指定用戶密碼
3.獲取主服務器的二進制日誌位置
要配置從屬服務器在正確的位置開始複製過程,您須要在其二進制日誌中記下主服務器的當前座標。此過程須要使用 FLUSH TABLES WITH READ LOCK ,它會阻止innodb表的commit操做,若是計劃關閉主數據庫以建立數據快照,則能夠跳過此過程,而是將二進制日誌索引文件的副本與數據快照一塊兒存儲。
步驟:
4.建立數據庫快照
若是主數據庫包含現有數據,則必須先將數據複製到每一個從數據庫。
mysqldump -uroot -p --all-databases --master-data > dbdump.db
mysqladmin shutdown //關閉主服務器
tar cf /tmp/db.tar ./data
zip -r /tmp/db.zip ./data //使用zip或tar打包源數據文件,從服務器要用
unlock tables //在執行FLUSH TABLES WITH READ LOCK的客戶端中執行該命令
5.從站設置
每一個從站都必須具備惟一的服務器id——server_id。若是沒設置或與主服務器的server_id相同,須要在mysql.ini 或mysql.cnf中設置並指定惟一的server_id,而後重啓服務器
若是主服務器已有數據,須要先將數據導入到從服務器
注意:若是沒有設置server-id,或server-id爲0,則從服務器將拒絕連接到主服務器
要設置從服務器與主服務器進行通訊以完成複製,須要爲從服務器配置必要的連接信息。
CHANGE MASTER TO
MASTER_HOST='master_host_name', /**主服務器地址*/
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mybinlog.000021',
MASTER_LOG_POS=155;
不知道怎麼的就搞成雙向同步了。。。。sql