iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
1
AI & Data

一名合格的DBA要從底層一步步爬起系列 第 13

《Day13》打造MySQL Replication

  • 分享至 

  • xImage
  •  

Replication是複製的意思,這個架構會將主庫(master)的binlog傳送到從庫(slave),從庫會對這些日誌重新執行,保持主從庫之間資料同步,運用replication可以將查詢的動作指定到從庫,甚至可以直接在從庫做備份,減少主庫的效能問題。

以下是MySQL Replication架構。

https://ithelp.ithome.com.tw/upload/images/20200914/20129969yIaGDSzvb3.jpg
在主庫(master)提交事務後會記錄在binlog中,之後主庫(master)傳送binlog到從庫(slave)的relaylog,從庫(slave)會開始做資料的變更操作。

Relaylog與binlog檔案格式、內容都一樣,不同在於從庫在執行完relaylog的SQL之後,會自己刪除當前的relaylog,為了保證從庫crash重啟後I/O與SQL thread能知道從哪裡開始複製,MySQL會建立master.info和relay-log.info來記錄複製進度。
Master.info紀錄i/o thread讀取binlog的進度。
Relay-log.info紀錄sql thread讀取relay log的進度。

建立MySQL Replication

首先必須先建立兩台MySQL Server完成,完成後開始設定MySQL Replication。
在Master增添下列參數至my.cnf登入檔

vi /etc/my.cnf
[mysqld]
server-id=1
log-bin=/mysql/binlog/mybin

default-authentication-plugin=mysql_native_password

建立Replication使用者

(我們會透過這個用戶來完成replication動作)

mysql> create user 'rep'@'%' identified by '密碼';
mysql> grant replication slave on *.* to 'rep'@'%';

必須先將主從庫資料同步

mysqldump -uroot -p  --all-databases > /tmp/alldb.sql 

配置slave參數

Vi /etc/my.cnf
[mysqld]

server-id=2 #注意:不可與Master重複
log-bin=/mysql/binlog/mybin     
relay-log=/mysql/relaylog/relay.log

read-only=on
default-authentication-plugin=mysql_native_password

將主庫資料匯入

mysql -uroot -p < /tmp/alldb.sql

開始設定replication

先到master查看當前binlog

mysql> show master status;

Slave開始設定並啟動

mysql> change master to master_host='Master IP', master_user='rep', master_password='1qaz@WSX',master_log_file=’master 當前binlog’,master_log_pos=’master binlog pos’;
mysql> start slave;

檢查replication狀態

mysql> show slave status\G

若都紅框內都顯示YES代表正常。

https://ithelp.ithome.com.tw/upload/images/20200914/20129969JgfEuRLezc.jpg


上一篇
《Day12》認識MySQL View
下一篇
《Day14》熟悉MySQL 備份還原
系列文
一名合格的DBA要從底層一步步爬起30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言