目標:搭建兩臺MySQL服務器,一臺做爲主服務器,一臺做爲從服務器,實現主從複製html
環境:
主數據庫: 192.168.1.1
從數據庫: 192.168.1.2mysql
mysql安裝可參考:http://www.javashuo.com/article/p-zbbcomgp-be.htmlsql
配置步驟:數據庫
一、保證兩個數據庫中的庫和數據是一致的;服務器
二、在主數據中建立一個同步帳號(可不建立使用現有的),若是僅僅爲了主從複製建立帳號,只須要授予REPLICATION SLAVE權限。
1)、建立一個帳號,帳號:master 密碼: 123456網絡
CREATE USER 'master'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'master'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
三、配置主數據庫
1)要主數據庫,你必需要啓用二進制日誌(binary logging),而且建立一個惟一的Server ID,這步驟可能要重啓MySQL。
2)主服務器發送變動記錄到從服務器依賴的是二進制日誌,若是沒啓用二進制日誌,複製操做不能實現(主庫複製到從庫)。
3)複製組中的每臺服務器都要配置惟一的Server ID,取值範圍是1到(232)−1,你本身決定取值。
4)配置二進制日誌和Server ID,你須要關閉MySQL和編輯my.cnf或者my.ini文件,在 [mysqld] 節點下添加配置。
5)下面是啓用二進制日誌,日誌文件名以「mysql-bin」做爲前綴,Server ID配置爲1,以下:spa
[mysqld] log-bin=mysql-bin server-id=1 #網絡上還有以下配置 #binlog-do-db=mstest //要同步的mstest數據庫,要同步多個數據庫,就多加幾個replicate-db-db=數據庫名 #binlog-ignore-db=mysql //要忽略的數據庫 innodb_flush_log_at_trx_commit=1 sync_binlog=1
四、重啓mysql.net
五、查看主服務器狀態:日誌
cd /usr/local/mysql/bin ./mysql -uroot -p mysql> show master status;
注意:記錄好File和Position,後面要用
code
六、配置從數據庫:
1)從服務器,同理,要分配一個惟一的Server ID,須要關閉MySQL,修改好後再重啓,以下:
[mysqld] server-id=2 #能夠指定要複製的庫 replicate-do-db=test-xxx #在master端不指定binlog-do-db,在slave端用replication-do-db來過濾 replicate-ignore-db=mysql #忽略的庫 #網上還有下面配置 #relay-log=mysqld-relay-bin
2)配置鏈接主服務器的信息:
進入sqlplus:
cd /usr/local/mysql/bin
./mysql -uroot -p
mysql> stop slave; mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.1.1', -> MASTER_USER='master', -> MASTER_PASSWORD='123456', -> MASTER_PORT=3309, -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=154; mysql> start slave;
3)查看狀態
mysql> show slave status \G;
Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.1 Master_User: master Master_Port: 3309 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2950 Relay_Log_File: localhost-relay-bin.000007 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test-xxx Replicate_Ignore_DB: mysql ... Seconds_Behind_Master: 0 #表示已同步 ...
4)若 Slave_SQL_Running: no 請重複執行如下內容,直至yes:
stop slave; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave;
參考的資料:
一、https://blog.csdn.net/envon123/article/details/76615059 二、https://blog.csdn.net/xiaoxinla/article/details/7679578