前提:本教程隻備份指定資料庫mis
主伺服器IP:192.168.1.10
從伺服器IP:192.168.1.20
1:主伺服器鎖定資料庫,避免Position變化
flush tables with read lock;
2:主伺服器将要備份的資料庫導出到備份檔案,導入到從伺服器,使得兩個伺服器的資料庫有相同的初态,否則Slave_SQL_Running 不等于YES
3:備份完成後,解鎖主伺服器資料庫
unlock tables;
4:配置從伺服器資料庫配置檔案
[mysqld]
server-id = 2 # 伺服器唯一編号,比主伺服器小,主伺服器一般是1,必須
log-bin = mysql-bin # 開啟mysql binlog功能,二進制日志,必須
replicate_wild_do_table=mis.% # 隻同步mis 庫下的表,非必須
relay_log=mysqld-relay-bin # 記錄中繼日志,非必須
log-slave-updates=YES # 從伺服器同步後記錄日志,非必須
修改完成後重新開機mysql服務。
5:檢視主伺服器資料庫狀态
show master status

6:主伺服器建立允許從伺服器同步資料的賬戶:
建立使用者:CREATE USER 'bakuser'@'%' IDENTIFIED BY 'password';
授權使用者:GRANT REPLICATION SLAVE ON mis.* TO 'bakuser'@'%';
7:從伺服器開啟同步:
change master to
master_host='192.168.1.10',
master_user='bakuser',
master_password='password',
master_log_file='mysql-bin.000092',
master_log_pos=1167;
運作成功 --->配置完以上後,重新開機從伺服器mysql服務。
8:檢視從伺服器是否已經成功開啟同步:
show slave status
其中:Slave_IO_Running和Slave_SQL_Running的狀态都是YES,說明同步開啟成功。
到這一步,主從伺服器已配置完畢,更改主伺服器mis 資料庫内容,從伺服器也會相應更改,但是從伺服器更改時,主伺服器不會更改,是以要保住兩個資料互相一緻,需要配置主主伺服器
在主從配置的基礎上實作雙主備份
9:從伺服器建立允許主伺服器同步資料的賬戶:同步驟6
10:配置主伺服器資料庫配置檔案:同步驟4,server-id 得比從伺服器資料庫配置的小
11:記錄從伺服器二進制日志檔案名與位置:同步驟5
12:主伺服器開啟同步:同步驟7
13:重新開機mysqld服務後,檢視主伺服器是否已經成功開啟同步:同步驟8
問題:
1:Position 值變化原因:Position 值随着mysql 有增删改查 ,bin-log日志就增加,那麼Position 肯定會變化
答:FLUSH TABLE WITH READ LOCK; 鎖庫position就停了,配置完成前再解鎖可保證Position 同步變化
2:為什麼要設定replicate_wild_do_table(指定同步的資料庫)
答:replicate_do_db 跨資料執行sql 語句不會被執行,預設隻執行目前資料庫語句,replicate_wild_do_table可以確定需要同步的資料庫實時更新,不需要的資料庫被排除在外
3:Slave_IO_Running = Connecting
答:1:網絡不同,始終處于待連接配接狀态,互相ping 主從伺服器,觀察連接配接狀态,互相開啟端口3306 通訊;
2:使用者權限不夠,配置的使用者沒有配置允許同步資料,或者使用者允許連接配接的IP有所指定,可以改成正确的指定IP或者%(通配)
3:配置檔案問題,檢查以上配置是否都正常,檢查是否有【bind-address】(資料庫綁定了IP,指定IP才能通路,應當注釋掉)
4:Slave_IO_Running = No
答:主從同步配置錯誤,例如:啟動一次資料庫,就會産生新的mysql-bin 檔案,導緻配置的master_log_file 不可用,或者Position 變化導緻配置的master_log_pos 不可用
5:Slave_SQL_Running = No
答:主從資料庫初态内容不一緻照成的,例如:資料庫重新開機或者有增删改查等操作在配置未完成前,Position 變化導緻配置的master_log_pos 不可用
參考:https://www.cnblogs.com/yixiao21/p/8372214.html