主數(shù)據(jù)庫(kù)(Master)配置
1、修改mysql配置文件 etc/my.cnf 如下添加
[mysqld]
log-bin=mysql-bin (必須配置) 啟用二進(jìn)制日志
server-id=1 (必須配置) 為本臺(tái)服務(wù)器配置唯一的Server ID
binlog-do-db=mstest (可選配置)要同步的數(shù)據(jù)庫(kù)名,要同步多個(gè)數(shù)據(jù)庫(kù),就多加幾個(gè)replicate-db-db=數(shù)據(jù)庫(kù)名
binlog-ignore-db=mysql (可選配置)//要忽略的數(shù)據(jù)庫(kù)
重啟數(shù)據(jù)庫(kù)systemctl restart mariadb,因?yàn)樾薷呐渲梦募貑⒉派А?
2、授予用戶(hù) slave REPLICATION SLAVE權(quán)限和REPLICATION CLIENT權(quán)限,用于在主從庫(kù)之間同步數(shù)據(jù)。
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
3、查看服務(wù)器狀態(tài)
show master status;
###File和Position字段的值后面將會(huì)用到###
從數(shù)據(jù)庫(kù)(Slave)配置
1、和主(Master)一樣,在配置文件添加如下
server-id=101 ## 設(shè)置server_id,注意要唯一
log-bin=mysql-slave-bin ## 開(kāi)啟二進(jìn)制日志功能,以備Slave作為其它Slave的Master時(shí)使用
relay_log=edu-mysql-relay-bin ## relay_log配置中繼日志
replicate-do-db=mstest (可選配置)#在master端不指定binlog-do-db,在slave端用replication-do-db來(lái)過(guò)濾,要同步多個(gè)數(shù)據(jù)庫(kù),就多加幾個(gè)replicate-db-db=數(shù)據(jù)庫(kù)名
binlog-ignore-db=mysql (可選配置)//要忽略的數(shù)據(jù)庫(kù)
重啟數(shù)據(jù)庫(kù)systemctl restart mariadb,因?yàn)樾薷呐渲梦募貑⒉派А?
2、連接主服務(wù)器配置
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;
3、查看主從連接狀態(tài)
show slave status \G;
a):正常情況下,SlaveIORunning 和 SlaveSQLRunning 都是No,因?yàn)槲覀冞€沒(méi)有開(kāi)啟主從復(fù)制過(guò)程。
b):使用start slave開(kāi)啟主從復(fù)制過(guò)程,然后再次查詢(xún)主從同步狀態(tài)show slave status \G;。
c):SlaveIORunning 和 SlaveSQLRunning 都是Yes,說(shuō)明主從復(fù)制已經(jīng)開(kāi)啟。
此時(shí)可以測(cè)試數(shù)據(jù)同步是否成功。
- master_port:Master的端口號(hào),指的是容器的端口號(hào)
- master_user:用于數(shù)據(jù)同步的用戶(hù)
- master_password:用于同步的用戶(hù)的密碼
- master_log_file:指定 Slave 從哪個(gè)日志文件開(kāi)始復(fù)制數(shù)據(jù),即上文中提到的 File 字段的值
- master_log_pos:從哪個(gè) Position 開(kāi)始讀,即上文中提到的 Position 字段的值
- master_connect_retry:如果連接失敗,重試的時(shí)間間隔,單位是秒,默認(rèn)是60秒