環境:
CentOS 7
MySQL 5.7.21
主master:172.16.69.131
從slave:172.16.69.132
1、首先把MySQL官網上下載的mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar上傳到服務器CentOS7。
2、安裝MySQL,配置防火牆。這裏不做講述,不會的或者忘記了可以參考《CentOS 7安裝MySQL 5.7》
3、配置主數據庫master
vi /etc/my.cnf
添加
log-bin=mysql-bin
server-id=1
然後開啓MySQL服務
systemctl start mysqld
此處跳過如何查看root用戶初始密碼、爲root用戶設置新密碼和添加遠程登錄用戶等步驟,都可以在上面的博文找到相應的操作。
進入主數據庫(172.16.69.131),爲從數據庫(172.16.69.132)同步主數據庫添加一個用戶權限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.16.69.132' IDENTIFIED BY 'MySQLadmin1!'; #分配複製權限
FLUSH PRIVILEGES;
show master status \G;
此信息留作備用(從數據庫需要)
然後配置從數據庫
1、vi /etc/my.cnf
添加
log-bin=mysql-bin
server-id=2 #不能跟其他數據庫重複,這裏僅不能跟主數據庫重複
開啓從數據庫,同理此處跳過如何查看root用戶初始密碼、爲root用戶設置新密碼和添加遠程登錄用戶等步驟,直接來到跟主從配置相關的操作。
stop slave; #若是數據庫已經開啓過主從同步,則需要停止,新安裝的數據庫不需要此步驟
change master to master_host='172.16.69.131',master_user='slave',master_password='MySQLadmin1!',master_log_file='mysql-bin.000001', master_log_pos=846;
將從數據庫指向主數據庫,用戶賬號爲主數據分配權限的用戶slave,master_log_file, master_log_pos的信息就是之前留作備用的主數據庫信息,這部分數據會變,每次同步的時候都需要在主數據庫上查看。
start slave; #配置完成,開啓同步
show slave status \G; #查看同步狀態
兩個yes則表示同步已經開啓。
這時,在主數據庫創建一個master_slave數據庫,則從數據庫會自動同步過來。
第二種是指定同步的數據庫
主數據庫
binlog-ignore-db #忽略同步日誌的數據庫
binlog-do-db #需要同步日誌的數據庫
同理,給與從數據庫同步複製的權限
GRANT FILE ON *.* TO 'slave'@'172.16.69.132' IDENTIFIED BY 'MySQLadmin1!';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'172.16.69.132' IDENTIFIED BY 'MySQLadmin1!';
FLUSH PRIVILEGES;
從數據庫
replicate-do-db #需要複製的數據庫
replicate-ignore-db #不需要複製的數據庫
log-slave-updates #從數據庫會同步更新主數據庫日誌
slave-skip-errors #跳過出現的錯誤
slave-net-timeout #從數據庫同步超時時間
stop slave;
change master to master_host='172.16.69.131',master_user='slave',master_password='MySQLadmin1!',master_log_file='mysql-bin.000002', master_log_pos=1478;
start slave;
這一步驟跟第一種方法一樣
此時在主數據庫創建master_slave,從數據庫就能看到同步了
參考資料:
CentOS 7安裝MySQL 5.7
MySQL5.6 數據庫主從(Master/Slave)同步安裝與配置詳解
MySQL主從複製與主主複製
寫在最後:
農曆新年就要到了,預祝大家新年快樂!