實現目標
現在需要建立兩台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;
show master status;
設定Slave 主伺服器
修改my.cnf 檔案
vim /etc/my.cnf
[mysqld] server-id=202 #设置server-id,唯一值,唯一标识从库
重啟mysql服務
systemctl restart mysqld
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
其他相關參數:
master開啟二進位日誌後預設記錄所有庫所有表的操作,可以透過配置來指定只記錄指定的資料庫甚至指定的表的操作,具體在mysql設定檔的[mysqld]可新增修改如下選項:不同步哪些資料庫
binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema
只同步哪些資料庫,除此之外,其他不同步
binlog-do-db = game
以上是linux下建置mysql主從伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!