Mysql主從同步配置方案(Centos7)
- 2019 年 10 月 3 日
- 筆記
最近在做項目高可用時,需要使用數據同步。由於只有雙節點,且採用主主同步可能存在循環同步的風險,故綜合考慮採用Mysql主從同步(Master-Slave同步)。
可能沒有接觸過Mysql數據同步時,可能會覺得數據同步很難,但你按照如下操作一遍之後,會發現原來同步如此簡單,畢竟我們只需要會配置,會排查問題,底層具體實現Mysql團隊早幫忙實現了。廢話不多說,直入話題:
(1)首先,保證有兩台設備(主、從),分別在兩台設備上安裝Mysql數據庫。安裝完成之後,
使用mysql -u[數據庫用戶名] -p[用戶密碼],若能夠登陸mysql則表示安裝成功。
(2)編輯mysql配置文件,路徑一般為/etc/mysql/mysql.conf.d/mysqld.cnf(用戶在安裝Mysql時指定的目錄,
如:/etc/my.conf等)。分別按要求在主、從mysql中的[mysqld]模塊下添加如下內容:
[mysqld]
default-storage-engine=innodb
innodb_file_per_table=1
collation-server=uft8_general_ci
init-connect=’SET NAMES uft8′
bind-address=0.0.0.0
log_bin=mysql-bin
relay_log=mysql-relay-bin
expire_logs_days=100
skip-slave-start=1
binlog_do_db=[需要同步的數據庫名稱]
binlog-ignore-db=mysql,sys,information_schema,performance_schema
server-id=[主填寫1,從填寫2]
auto-increment-increment=2
auto-increment-offset=1
open_files_limit=65535
mac_connections=1000
slave-skip-errors=all
(3)shell連接主、從服務器,mysql -u[數據庫用戶名] -p[用戶密碼],分別登錄到主、從節點mysql,創建同步用戶repl,執行如下命令:
grant all privileges on *.* to ‘repl’@’%’ identified by ‘repl’ with grant option;
然後exit退出Mysql操作頁,重新啟動Mysql服務,命令如下:
systemctl restart mysql.service
然後進入主節點Mysql,查看Mysql的File列和Positon列。執行命令:show master status;出現結果如下
(4)登錄到從服務器,mysql -u[數據庫用戶名] -p[用戶密碼]進入Mysql,執行:
stop slave;
reset slave;
change master to master_host='[主節點IP]’,master_user=’repl’,master_password=’repl’,master_log_file='[mysql-bin.000001,參考(3)中的File列]’,master_log_pos=[245,參考(3)中的Postion列];
exit;
執行systemctl restart mysql.service重啟Mysql服務。
(5)啟動從服務器slave庫,mysql -u[數據庫用戶名] -p[用戶密碼]進入從節點Mysql,執行如下命令:
start slave;
執行:show slave statusG;查看備份服務狀態。如果以下兩個狀態為Yes則表示主從同步成功。
接下來,大家就可以嘗試向主數據庫中插入一條數據,看是夠從數據庫中會自動增加該條數據,是不是有點小激動呢?趕緊測試下吧。
PS:若出現無法同步問題?
(1)請查看上圖中Master_Log_File屬性、Read_Master_Log_Pos屬性與主節點查詢結果是否一致。
(2)可能是從數據庫連接主數據庫超時,去吧連接延時改大一點吧。
(3)如果上述無法解決,請查看mysql日誌排查原因。