mysql5.6主從復制
首先創建一個給從服務器的用戶
GRANT REPLICATION SLAVE ON *.* to ‘從服務器用戶帳號‘@‘從服務器地址‘ identified by ‘從服務器用戶密碼’;
然後給這個從服務器用戶處理數據庫的權限
grant all privileges to 數據庫名.* to ‘從服務器用戶帳號‘@‘從服務器地址‘ identified by ‘從服務器用戶密碼’;
要多少個數據庫就重復寫多少次
接下來配置主服務器
修改 master 的my.cnf配置文件,在[mysqld]下添加如下配置:
[mysqld]
log-bin=/usr/local/mysql56/binlog/master-bin
log-bin-index=/usr/local/mysql56/binlog/master-bin.index
binlog-do-db=要同步的數據庫(多個換行重寫)
server-id=1
說明:
log-bin 配置的是開啟二進制日誌,並將日誌寫在配置的路徑上。記錄的日誌將以master-bin.000001 的方式進行記錄。
log-bin-index 配置的是二進制日誌記錄文件的目錄。該文件中每一行都是二進制日誌文件的路徑。
server-id是該MySQL服務器的服務ID,用於區分在主從配置中的其他服務器。
配置成功後,重啟mysqld服務。
註意:如果不定義log-bin的文件名,則會以hostname主機名命名,一旦主機名修改,則會因為找不見二進制文件報錯。所以最好還是顯示指定文件名。
修改 slave 的my.cnf配置文件,在[mysqld]下添加如下配置:
server-id=11
relay-log=/usr/local/mysql56/binlog/slave-relay-bin
relay-log-index=/usr/local/mysql56/binlog/slave-relay-bin.index
replicate-do-db=需要復制的數據庫(多個換行重寫)
server-id和master意義一樣,用於區分不同的mysql服務器。
relay-log用以記錄收到的中繼二進制日誌。relay-log-index用以保存收到的日誌路徑索引。如果不顯示指定文件名,則以hostname值命名。
保存後可以重啟mysqld服務。
在主數據庫輸入show master status,記下file和position的值,這個在從數據庫連接的時候要用
在從數據庫輸入
stop slave;
reset slave all;
change master to master_host=’主數據庫ip’, master_user=’從服務器用戶帳號’, master_password=’從服務器用戶密碼’, master_port=主數據庫端口, master_log_file=‘主數據庫的file’, master_log_pos=主數據庫的position;
然後 start slave;
之後show slave status \G;
在打印出來的狀態下,查看以下兩個參數的值:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果這兩個參數的值都是yes,則運行正常
不過這個發現主數據庫重啟之後,就會把file更新,這樣主從復制就斷了,不知道怎麽解決
mysql5.6主從復制