1. 程式人生 > >mysql5.6主從復制

mysql5.6主從復制

索引 ica 報錯 ges 發現 主機 name set 處理

首先創建一個給從服務器的用戶

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主從復制