1. 程式人生 > >ubuntu12.04(64位)中mysql5.6.28(64位)主從複製

ubuntu12.04(64位)中mysql5.6.28(64位)主從複製

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服務


5.slave連線master

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
                    ......

注:Slave_IO及Slave_SQL程序必須正常執行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。

8.測試

在master 建立一個數據庫product,然後在從伺服器上檢視product,若是存在說明,主從複製已經配置成功。

目前的配置master上只能負責寫操作,slave上只能負責讀操作,若是在slave上進行寫操作,就會發生異常。