mysql主從同步
1.1 介紹
# 什麼是mysql主從同步
MySQL 主從複製(Master-Slave Replication)是一種資料複製技術,用於在多個資料庫伺服器之間的資料同步。在主從複製架構中,一個伺服器被設定為主伺服器(Master),充當資料來源,其他伺服器被設定為從伺服器(Slave),用來複制主伺服器的資料。
# 主從同步的優點
# 1.高可用性:
透過將主資料庫的資料複製到一個或多個從資料庫,可以在主資料庫故障時快速切換到從資料庫,以實現系統的高可用性和容錯能力,從而保證系統的持續可用性。
# 2.提高整體效能和吞吐量:
透過將讀請求分散到多個從伺服器上進行處理,從而減輕了主伺服器的負載壓力,提高資料庫系統的整體效能和吞吐量。主伺服器主要負責寫操作,而從伺服器主要負責讀操作,從而分擔了主伺服器的壓力。
# 3.資料備份和恢復:
透過主從同步,可以將主伺服器上的資料非同步複製到從伺服器上,從而實現資料備份和災難恢復的需求。在應對意外資料丟失、災難恢復或誤操作時,可以使用從伺服器作為資料的備份源來進行資料恢復。
1.2 搭建步驟
# 1.準備兩臺伺服器(這裡以docker容器作為伺服器)
-主:121.37.184.182 33306
-從:121.37.184.182 33307
# 2.建立資料夾,做目錄對映
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
touch /home/mysql/my.cnf
mkdir /home/mysql1
mkdir /home/mysql1/conf.d
mkdir /home/mysql1/data/
touch /home/mysql1/my.cnf
# 3.配置mysql配置檔案(十分重要)
# 主配置
[mysqld]
server-id=1 # id唯一
log-bin=mysql-bin # 啟用二進位制日誌
secure-file-priv= /var/lib/mysql
binlog-ignore-db=mysql # 表示忽略的庫名
binlog-do-db=mytest # 表示需要執行同步的庫名(可以寫多個)
binlog-do-db=mytest1
# 從配置
[mysqld]
server-id=2
relay-log=relay-bin
read-only=1 # 只讀
# 4.啟動mysql容器,並做埠和目錄對映
docker run -di -v /root/mysql/data/:/var/lib/mysql -v /root/mysql/my.cnf:/etc/mysql/my.cnf -v /root/mysql/conf.d:/etc/mysql/conf.d -p 33306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql:8
docker run -di -v /root/mysql1/data/:/var/lib/mysql -v /root/mysql1/conf.d:/etc/mysql/conf.d -v /root/mysql1/my.cnf:/etc/mysql/my.cnf -p 33307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql:8
# 5.在從庫設定主庫地址以及同步地址
CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.37.184.182',
SOURCE_USER='root',
SOURCE_PASSWORD='123456',
SOURCE_LOG_FILE='mysql-bin.000004',
SOURCE_PORT=33306,
SOURCE_LOG_POS=1548;