兩台主機,都是vmware建立的系統:
第一台當Master:192.168.1.7
CentOS7 x64 安裝WHM/cPanel Apache+Nginx(反向代理)+PHP7.2+MySQL5.7
第二台當Slave:192.168.1.100
Win10 x64 安裝 Wnmp3.2 Nginx+PHP7.2+MariaDB10.3
192.168.1.7設定Master
第一台登入WHM/cPanel介面,再從左方功能列開啟phpMyAdmin,點上方Replication,建立Master,按照指示把資料加入/ect/my.cnf,重啟MySQL服務後,成功建立
在Master上建立Slave的使用者帳號
這裡直接下SQL語法建立
CREATE USER 'replication_User'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_User'@'%';
flush privileges;
權限設定
192.168.1.100建立Slave
直接從192.168.1.100/phpmyadmin登入phpMyAdmin,點上方Replication,建立Slave,按照指示在my.ini增加一行server-id=1547290769,(詳細內容:https://110bbq.com/_demo/slave_my.ini
重啟MySQL服務後,開始登入,如下圖
送出後 問題來了
顯示 Unable to read master log position. Possible privilege problem on master.
還有一堆Warning資訊(我想應該是登入失敗連帶產生的問題)
到這裡就不知道該怎麼解,還請有經驗的先進指教(持續google中...orz
補充:有確認Msater/Slave互相ping得到對方port3306
問題解決了,主要原因是:Master我有指定要同步的資料庫,但是我在Slave沒有先建立一份一樣的資料庫XD(天啊!超蠢!! 我記得有爬到一篇文有特別提到,如果Master是運作狀態下,最好先鎖住資料表,拋出sql資料給Slave建立完成,並且確認有連上後(主要確認 Slave_IO_Running和Slave_SQL_Running這兩項都要"Yes")再解除鎖定。
次要原因:Slave第一次聯接時要帶入Master兩項很重要的資訊>File和Position
這兩個資訊在Master上執行SHOW MASTER STATUS即可查到,然後在Slave上執行以下命令:
(PS:master_log_file的值對應Master的File,master_log_pos對應Master的Position)
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='192.168.1.7', MASTER_PORT=3306, MASTER_USER='replication_User', MASTER_PASSWORD='password', master_log_file='mysql-bin.000005', master_log_pos=2419;
START SLAVE;
基本上是上述這兩件事情沒做好,所以才出錯(我天真的以為只要Slave連上了剩下的"它們"會自己搓到好XD 原來還是要先手動同步第一次)
完成!有圖有真相~
以上粗略說明,而且因為爬文太多沒記住那些教學資訊是在哪看到的,沒能註上出處還請見諒,
另外就是想把vm回溯從頭做一次正確步驟(驗證自己不是亂矇),但是從早弄到現在,精神有點負荷不了,晚點再補上...orz