ubuntu12.04(64位)中mysql5.6.28(64位)主從複製
阿新 • • 發佈:2019-02-09
1.配置master主伺服器
在主伺服器上建立一個使用者‘repl’,並允許其他slave伺服器可以通過遠端訪問master,通過該使用者讀取二進位制日誌,實現資料同步。
use mysql;
create user repl; //建立新使用者
grant all privileges on *.* to 'repl'@'%' identified by 'mysql' with grant option; //可供遠端客戶端工具連線
FLUSH PRIVILEGES;
//repl使用者必須具有REPLICATION SLAVE許可權,除此之外沒有必要新增不必要的許可權,密碼為mysql。
//這裡%是萬用字元,表示任何slave伺服器的server都可以以repl使用者登陸主伺服器。當然你也可以指定固定Ip。
grant replication slave on *.* to 'repl'@'%' identified by 'mysql';
FLUSH PRIVILEGES;
2.修改主伺服器master
#vim /usr/local/mysql/my.cnf
[mysqld]
server-id=131 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
log-bin=master-bin //[必須]啟用二進位制日誌
log-bin-index=master-bin.index
3.檢視日誌
show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 120 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
重啟MySQL服務
4.修改從伺服器slave
#vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-bin=master-bin //[不是必須]啟用二進位制日誌
server-id=132 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重啟MySQL服務
change master to master_host='192.168.17.131',master_port=3306,master_user='repl',master_password='mysql',master_log_file='master-bin.000001',master_log_pos=120;
//master_host: 主伺服器ip
//master_user: 第1部中建立的使用者名稱
//master_password: 第1部中建立的密碼
//master_log_file: 主伺服器產生的日誌,第3部中查詢的File
//master_log_pos: 第3部中查詢的Position
6.開啟slave
start slave;
7.檢查從伺服器複製功能狀態
show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 //主伺服器地址
Master_User: mysync //授權帳戶名,儘量避免使用root
Master_Port: 3306 //資料庫埠,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步讀取二進位制日誌的位置,大於等於Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此狀態必須YES
Slave_SQL_Running: Yes //此狀態必須YES
......
在主伺服器上建立一個使用者‘repl’,並允許其他slave伺服器可以通過遠端訪問master,通過該使用者讀取二進位制日誌,實現資料同步。
use mysql;
create user repl; //建立新使用者
grant all privileges on *.* to 'repl'@'%' identified by 'mysql' with grant option; //可供遠端客戶端工具連線
FLUSH PRIVILEGES;
//repl使用者必須具有REPLICATION SLAVE許可權,除此之外沒有必要新增不必要的許可權,密碼為mysql。
//這裡%是萬用字元,表示任何slave伺服器的server都可以以repl使用者登陸主伺服器。當然你也可以指定固定Ip。
grant replication slave on *.* to 'repl'@'%' identified by 'mysql';
FLUSH PRIVILEGES;
2.修改主伺服器master
#vim /usr/local/mysql/my.cnf
[mysqld]
server-id=131 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
log-bin=master-bin //[必須]啟用二進位制日誌
log-bin-index=master-bin.index
3.檢視日誌
show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 120 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
重啟MySQL服務
4.修改從伺服器slave
#vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-bin=master-bin //[不是必須]啟用二進位制日誌
server-id=132 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
重啟MySQL服務
5.slave連線master
//master_host: 主伺服器ip
//master_user: 第1部中建立的使用者名稱
//master_password: 第1部中建立的密碼
//master_log_file: 主伺服器產生的日誌,第3部中查詢的File
//master_log_pos: 第3部中查詢的Position
6.開啟slave
start slave;
7.檢查從伺服器複製功能狀態
show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 //主伺服器地址
Master_User: mysync //授權帳戶名,儘量避免使用root
Master_Port: 3306 //資料庫埠,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步讀取二進位制日誌的位置,大於等於Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此狀態必須YES
Slave_SQL_Running: Yes //此狀態必須YES
......
注:Slave_IO及Slave_SQL程序必須正常執行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
8.測試
在master 建立一個數據庫product,然後在從伺服器上檢視product,若是存在說明,主從複製已經配置成功。
目前的配置master上只能負責寫操作,slave上只能負責讀操作,若是在slave上進行寫操作,就會發生異常。