實現目標
現在需要建立兩台MySQL伺服器(一主一從),一台作為主伺服器,一台作為從伺服器,主伺服器進行寫入操作,從伺服器進行讀取操作。
工作流程
主伺服器:
開啟二進位日誌
設定唯一的server-id
取得master二進位日誌檔案名稱及位置
建立一個用於slave和master通訊的使用者帳號。
從伺服器:
配置唯一的server-id
使用master指派的使用者帳號讀取master二進位日誌
啟用slave服務。
(免費學習影片教學推薦:mysql影片教學)
#準備工作
##主從資料庫版本最好一樣主從資料庫內資料保持一致主資料庫:192.168.244.201 : 3306從資料庫:192.168.244.202 : 3306##開始設定
設定Master 主伺服器
找到主資料庫的設定檔my.cnf(Windows中是my.ini),我的在/etc/my.cnf在[mysqld]部分插入如下兩行:
[mysqld] log-bin=mysql-bin #开启二进制日志 server-id=201 #设置server-id,唯一值,标识主机
重啟mysql服務
systemctl restart mysqld
建立用於主從同步的帳號/密碼
進入MySQL : mysql -u root -p 回車輸入密碼。 我建立的使用者名叫「master_root」密碼是「MySql@6688」【注意:由於之前把密碼改成支援簡單密碼123456的了,導致這裡新建使用者出現一些問題,說密碼不符合策略等,後來乾脆我重裝mysql,使用預設複雜密碼了,就沒有這麼多問題了。習慣就好其實。 】
下面我都用的%,沒有寫具體ip,你可以自行決定。#创建用户(IP为可访问该master的IP,任意IP就写'%') mysql> CREATE USER 'master_root'@'192.168.244.202' IDENTIFIED BY 'MySql@6688'; #分配权限(IP为可访问该 master的IP,任意IP就写'%') mysql> GRANT REPLICATION SLAVE ON *.* TO 'master_root'@'192.168.244.202'; #刷新权限 mysql>flush privileges;查看master狀態,記錄二進位檔案名稱(mysql-bin.000001)和位置(154).後面配從函式庫要用。
show master status;
設定Slave 主伺服器
修改my.cnf 檔案
vim /etc/my.cnf
[mysqld] server-id=202 #设置server-id,唯一值,唯一标识从库
重啟mysql服務
systemctl restart mysqld登入進入mysql,執行同步sql語句(主伺服器名,用於主從的用戶名,密碼,二進位檔案名,位置)
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.244.201', -> MASTER_USER='master_root', -> MASTER_PASSWORD='MySql@6688', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=154;
啟動slave同步進程
mysql>start slave;
#檢視slave狀態
show slave status\G注意後面不要分號;否則最後一行顯示報錯如下:
ERROR: No query specified當Slave_IO_Running和Slave_SQL_Running都為YES的時候就表示主從同步設定成功了。 接下來就可以進行一些驗證了,例如在主master資料庫的test資料庫的一張表中插入一條數據,在slave的test庫的相同數據表中查看是否有新增的數據即可驗證主從複製功能是否有效,還可以關閉slave(mysql>stop slave;),然後再修改master,看slave是否也相應修改(停止slave後,master的修改不會同步到slave),就可以完成主從複製功能的驗證了。
其他相關參數:
master開啟二進位日誌後預設記錄所有庫所有表的操作,可以透過配置來指定只記錄指定的資料庫甚至指定的表的操作,具體在mysql設定檔的[mysqld]可新增修改如下選項:不同步哪些資料庫
binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema
只同步哪些資料庫,除此之外,其他不同步
binlog-do-db = game如之前查看master狀態時就可以看到只記錄了test庫,忽略了manual和mysql庫。
以上是linux下建置mysql主從伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!