標籤:mysql主從同步
一.mysql主從同步
方案:一主一從
一主多從
主從(主)從
master slave
172.30.13.8 資料庫服務 172.30.13.191 資料庫服務
slave角色的資料庫伺服器上一定要有主要資料庫伺服器上的庫、表 表結構一致
(從資料庫伺服器一定要有主要資料庫伺服器的庫和表)
1.配置master資料庫伺服器
1.1 開啟binlog 日誌(必須啟用)
1.2 授權使用者可以從 slave 資料庫伺服器串連自己 有拷貝資料的許可權
mysql -uroot -p999
grant replication slave on *.* to [email protected]"172.30.13.191" identified by "321";
show master status; //查詢配置slave時所需的log相關資訊
1.3 指定自己server_id值 (範圍:0-255)
[[email protected] ~]# cat /etc/my.cnf
[mysqld]
log-bin=plj
server_id=8
[[email protected] ~]# service mysql restart
配置slave資料庫伺服器
1 指定自己server_id值
2 開啟binlog 日誌(可選項)
[[email protected] Desktop]# cat /etc/my.cnf
[mysqld]
log-bin
server_id=191
[[email protected] Desktop]# service mysql restart
show master status; //查看當前使用的binlog日誌資訊
3 指定自己做誰的從資料庫伺服器
mysql -uroot -p123
mysql> change master to
-> master_host="172.30.13.8",
-> master_user="plj",
-> master_password="321",
-> master_log_file="plj.000001",
-> master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.08 sec)
mysql> mysql> show slave status\G;
Slave_IO_Running: No
Slave_SQL_Running: No
mysql> start slave;
mysql> mysql> show slave status\G;
Slave_IO_Running: YES
Slave_SQL_Running: YES
二、主從同步的工作原理
master.info 記錄串連主要資料庫伺服器的資訊
主機名稱-relay-bin.000001 中繼日誌sql語句
主機名稱-relay-bin.index 記錄已有的中繼記錄檔名
relay-log.info 記錄使用的記錄檔資訊
Slave_IO_Running: YES 負責把主要資料庫伺服器binlog 日誌裡的sql語句,複製到自己原生relay-bin記錄檔裡
Slave_SQL_Running: YES 負責執行原生relay-bin日誌,檔案裡的sql語句
測試:從資料庫伺服器能否自動同步主要資料庫伺服器上資料。
mysql -h172.30.13.8 -u使用者名稱 -p密碼
註:change master to ...即可以指定主伺服器,也可以用來修改已經指定好的伺服器資訊
三、故障排除
1.Slave_IO_Running: NO
物理裝置未連上
防火牆
selinux
授權資訊有誤
2.Slave_SQL_Running: NO
主從庫和表結構不一致
主必須啟用bin-log日誌
四:指定同步庫和表
1.授權同步處理的使用者時必須是*.*
2.在主要資料庫端設定允許從資料庫伺服器備份自己哪些庫資料;
vim /etc/my.cnf
binlog-do-db=name //只讓從資料器備份自己的哪個庫
binlog-ignore-db=name //不讓從資料器備份自己的哪個庫
註:上面兩個選項不可以同時使用
或,在從資料庫伺服器端設定自己備份主要資料庫哪些資料;
vim /etc/my.cnf
replicate-do-db=mysql //指定只備份主要資料庫伺服器上的哪個庫
replicate-ignore-db=mysql //只不備份主要資料庫伺服器上的哪個庫
二、範例1:主 > 從(主) > 從
1.兩台主伺服器先設定授權(否則開啟日誌功能後,所設定的內容將同步到從伺服器,造成安全隱患)
grant replication slave on *.* to [email protected]"172.30.13.191" identified by "321";
grant replication slave on *.* to [email protected]"172.30.13.192" identified by "321";
show master status;(查詢正在使用的記錄檔和i點)
2.兩台主伺服器開啟日誌(bin-log)和設定id(server_id=)
3.從(主)伺服器在my.cnf中添加log-slave-updates語句,此項添加後,將會將同步的slave日誌內容同步到本地日誌內,否則將無法進行主從從實驗
4.從伺服器配置詳見上面主從同步;
本文出自 “劉福” 部落格,請務必保留此出處http://liufu1103.blog.51cto.com/9120722/1656835
mysql主從同步