1. 程式人生 > >Mysql主從同步配置方案(Centos7)

Mysql主從同步配置方案(Centos7)

  最近在做專案高可用時,需要使用資料同步。由於只有雙節點,且採用主主同步可能存在迴圈同步的風險,故綜合考慮採用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 status\G;檢視備份服務狀態。如果以下兩個狀態為Yes則表示主從同步成功。

       

 

   接下來,大家就可以嘗試向主資料庫中插入一條資料,看是夠從資料庫中會自動增加該條資料,是不是有點小激動呢?趕緊測試下吧。

  PS:若出現無法同步問題?

(1)請檢視上圖中Master_Log_File屬性、Read_Master_Log_Pos屬性與主節點查詢結果是否一致。

(2)可能是從資料庫連線主資料庫超時,去吧連線延時改大一點吧。

(3)如果上述無法解決,請檢視mysql日誌排查原