寫在最前邊 :php
本次測試,屬於我的練習的過程,只有過程, 沒有總結.mysql
測試環境 :sql
os : windows 7數據庫
mysql : 5.5.47 windows
環境 : phpstudy 2016服務器
複製的基本步驟:ide
1 配置一個數據庫實例做爲master測試
2 配置一個數據庫實例做爲slave.spa
3 將slave鏈接到master日誌
實驗環境說明 :
本次實驗使用的phpstudy自帶的mysql,
須要的準備工做,
將phpstudy目錄下的mysql文件夾總體複製一份,拷貝到當前目錄下便可,原始的做爲master,複製的做爲slave,
測試的目錄結構大體以下:
E:\
---phpsudy
---- MYSQL
---- MYSQL1
重點 : 在拷貝的MYSQL1文件夾中,注意修改配置文件的相關,參數,一些默認的文件存儲路徑,避免在啓動實例的時候,提示一些沒必要要的錯誤.
****** 配置 master my.ini 實例 *******
# 以下是比較關鍵的信息, 在my.ini文件中添加沒有的便可. # 這個是終端鏈接的端口 [client] port=3306 [mysqld] # 這個是實例啓動時端口 port=3306 # 這個是數據存放的目錄 basedir="E:/phpStudy/MySQL/" datadir="E:/phpStudy/MySQL/data/" # 這些關於日誌的配置 log-bin =master-bin log-bin-index = master-bin.index # 服務的id號 server-id = 1
修改後請重啓服務.
****** 配置 slave my.ini 實例 *******
## 以下是比較關鍵的信息, 在my.ini文件中添加沒有的便可. # 這個是終端鏈接的端口 [client] port=3307 [mysqld] # 這個是實例啓動時端口 port=3307 # 這個是數據存放的目錄,注意此處的目錄不一樣於master的目錄 master(MYSQL) <----> slave(MYSQL1) basedir="E:/phpStudy/MySQL1/" datadir="E:/phpStudy/MySQL1/data/" # 這些關於日誌的配置, relay-log-index 中繼日誌索引文件 ; relay-log 中繼日誌文件. relay-log-index = slave-relay-bin.index relay-log = slave-relay-bin # 服務的id號 server-id = 2
修改後請重啓服務.
啓動master mysql
經過dos,手動進入目錄 phpstudy->mysql->bin ,目錄下 ,執行 mysqld.exe 不須要加載任何參數.
---- 建立一個複製用於
master > create user repl_user;
master > grant replication slave on *.* to repl_user identified by 'xyzzy';
****** 鏈接 master 與 slave *****
在slave服務下
mysql> change master to -> master_host ='192.168.1.3', # 這個是我本地局域網內的ip地址, -> master_port=3306, # master的端口 -> master_user ='repl_user', # 在master 上建立的能夠複製的帳號. -> master_password='xyzzy'; Query OK, 0 rows affected (0.22 sec)
mysql> start slave; #啓動slave 服務 Query OK, 0 rows affected (0.00 sec)
********** 測試環節 ********
1 master 和slave的狀態,
show master status\g;
show slave status\G;
2 測試數據 (在master服務下執行.)
2.1 建立數據庫
mysql> create table tal(text text); Query OK, 0 rows affected (0.14 sec)
2.2 插入數據
mysql> insert into tal values("zhangchao"); Query OK, 1 row affected (0.09 sec)
2.3 強制刷新日誌文件
mysql> flush logs; Query OK, 0 rows affected (0.24 sec)
2.4 驗證結果(在slave服務下)
mysql> select * from tal; +-----------------+ | text | +-----------------+ | zhangchao | +-----------------+
容易出錯的地方 :
一 在鏈接 master 和slave的環節中,
master_host 實際生產環境中配置的是一個外網環境的ip地址,爲了測試,我就用本地的了,
有些書上寫的是 master_host = master_id ; 這樣的寫法, 致使的結果是 在slave服務器上提示錯誤,
在show slave status ,提示沒法正常鏈接遠程主機, 這個是按照課本實際時出現的錯誤,
二 在配置環節中,
log-bin 和 log-bin-index 建議是手寫一個, 若是是系統分配的會是主機名稱, 若是系統環境有所改動,
那麼複製時,slave就會找不到相應的日誌文件.