前言
最近在做項(xiàng)目高可用時(shí),需要使用數(shù)據(jù)同步。由于只有雙節(jié)點(diǎn),且采用主主同步可能存在循環(huán)同步的風(fēng)險(xiǎn),故綜合考慮采用Mysql主從同步(Master-Slave同步)。
可能沒有接觸過Mysql數(shù)據(jù)同步時(shí),可能會(huì)覺得數(shù)據(jù)同步很難,但你按照如下操作一遍之后,會(huì)發(fā)現(xiàn)原來同步如此簡單,畢竟我們只需要會(huì)配置,會(huì)排查問題,底層具體實(shí)現(xiàn)Mysql團(tuán)隊(duì)早幫忙實(shí)現(xiàn)了。
廢話不多說,直入話題:
(1)首先,保證有兩臺(tái)設(shè)備(主、從),分別在兩臺(tái)設(shè)備上安裝Mysql數(shù)據(jù)庫。安裝完成之后,
使用mysql -u[數(shù)據(jù)庫用戶名] -p[用戶密碼],若能夠登陸mysql則表示安裝成功。
(2)編輯mysql配置文件,路徑一般為/etc/mysql/mysql.conf.d/mysqld.cnf(用戶在安裝Mysql時(shí)指定的目錄,
如:/etc/my.conf等)。分別按要求在主、從mysql中的[mysqld]模塊下添加如下內(nèi)容:
[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=[需要同步的數(shù)據(jù)庫名稱]
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連接主、從服務(wù)器,mysql -u[數(shù)據(jù)庫用戶名] -p[用戶密碼],分別登錄到主、從節(jié)點(diǎn)mysql,創(chuàng)建同步用戶repl,執(zhí)行如下命令:
grant all privileges on *.* to 'repl'@'%' identified by 'repl' with grant option;
然后exit退出Mysql操作頁,重新啟動(dòng)Mysql服務(wù),命令如下:
systemctl restart mysql.service
然后進(jìn)入主節(jié)點(diǎn)Mysql,查看Mysql的File列和Positon列。執(zhí)行命令:show master status;
出現(xiàn)結(jié)果如下
(4)登錄到從服務(wù)器,mysql -u[數(shù)據(jù)庫用戶名] -p[用戶密碼]進(jìn)入Mysql,執(zhí)行:
stop slave;
reset slave;
change master to master_host='[主節(jié)點(diǎn)IP]',master_user='repl',master_password='repl',master_log_file='[mysql-bin.000001,參考(3)中的File列]',master_log_pos=[245,參考(3)中的Postion列];
exit;
執(zhí)行systemctl restart mysql.service
重啟Mysql服務(wù)。
(5)啟動(dòng)從服務(wù)器slave庫,mysql -u[數(shù)據(jù)庫用戶名] -p[用戶密碼]進(jìn)入從節(jié)點(diǎn)Mysql,執(zhí)行如下命令:
執(zhí)行:show slave status\G;
查看備份服務(wù)狀態(tài)。如果以下兩個(gè)狀態(tài)為Yes則表示主從同步成功。
接下來,大家就可以嘗試向主數(shù)據(jù)庫中插入一條數(shù)據(jù),看是夠從數(shù)據(jù)庫中會(huì)自動(dòng)增加該條數(shù)據(jù),是不是有點(diǎn)小激動(dòng)呢?趕緊測試下吧。
PS:若出現(xiàn)無法同步問題?
(1)請查看上圖中Master_Log_File屬性、Read_Master_Log_Pos屬性與主節(jié)點(diǎn)查詢結(jié)果是否一致。
(2)可能是從數(shù)據(jù)庫連接主數(shù)據(jù)庫超時(shí),去吧連接延時(shí)改大一點(diǎn)吧。
(3)如果上述無法解決,請查看mysql日志排查原因。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- MySQL 主從同步,事務(wù)回滾的實(shí)現(xiàn)原理
- MySQL數(shù)據(jù)庫主從同步實(shí)戰(zhàn)過程詳解
- MySQL主從同步中的server-id示例詳解
- MySQL主從同步延遲的原因及解決辦法
- MySQL主從同步機(jī)制與同步延時(shí)問題追查過程
- MySQL數(shù)據(jù)庫的主從同步配置與讀寫分離
- Mysql主從同步Last_IO_Errno:1236錯(cuò)誤解決方法
- Mysql主從同步的實(shí)現(xiàn)原理
- 詳解Mysql主從同步配置實(shí)戰(zhàn)
- 詳解windows下mysql的主從同步
- 詳解MySQL數(shù)據(jù)庫設(shè)置主從同步的方法
- Mysql數(shù)據(jù)庫的主從同步配置