mysql主從同步

HuangQiaoqi發表於2024-06-30

mysql主從同步

image-20240630184934967

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;



相關文章