MySQL | MySQL 主從複製

一、簡介

MySQL 主從複製是 MySQL 自帶的一個功能,他是藉助 bin-log日誌文件裏面的
SQL 命令實現主從複製,我們在 Master 端執行了一條命令,在 Salve 端
也會執行一遍,從而達到主從複製的效果,通過主從複製可以實現數據備份,
故障轉移,MySQL集羣,高可用,讀寫分離。

Slave 數據庫生成兩個線程,一個 I/O 線程,一個 SQL 線程,I/O 線程請求主庫bin-log,
將得到的 bin- log 日誌寫到 relay_log(中繼日誌) 文件,主庫會生成一個 log Dump 線程,用來給從庫IO線程傳 bin-log,SQL 線程會讀取 relay_log 文件中的日誌,並生成具體操作,從而實現主從操作的一致性,從而實現讀寫分離。

二、基於 Docker 實現 MySQL 主從複製

1、安裝 MySQL

運行 MySQL 容器,這裏我們運行兩個,一個是主(master)數據庫,一個是從(slave) 數據庫。

主數據庫:

docker run --name master -e MYSQL_ROOT_PASSWORD=roof -p 3306:3306 -d mysql:5.7

從數據庫:

docker run --name slave -e MYSQL_ROOT_PASSWORD=roof -p 3307:3306 -d mysql:5.7

在這裏插入圖片描述

2、配置主數據庫 master

修改主數據庫文件,進入容器內部

docker exec -it master /bin/bash
cd /etc/mysql

安裝 vim,以便修改配置文件

apt-get update
apt-get install vim

進入 mysql 配置文件

vim my.cnf

添加以下配置

[mysqld]
# 設置同一局域網內唯一ID
server-id=100  
# 開啓二進制日誌功能
log-bin=mysql-bin

重啓 MySQL 服務

service mysql restart

啓動 Docker 容器

docker start master

驗證是否配置成功,執行以下 SQL 命令,查詢配置中的 server_id

show VARIABLES like '%server_id%';

在這裏插入圖片描述
查詢同步的文件和行數

SHOW MASTER status;

在這裏插入圖片描述

2、配置從數據庫 slave

同理配置主數據庫,添加以下配置,重啓 MySQL 和 Docker 即可。

[mysqld]
# 設置同一局域網內唯一ID
server_id = 102
# 日誌文件同步方式
log-bin = mysql-bin
# 需要同步的數據庫
binlog-do-db = test

在 Master 數據庫執行以下命令

SHOW MASTER status;

在這裏插入圖片描述
我們可以看到 File 和 Position,然後在 Slave 數據庫執行以下命令,使從節點同步主節點數據,File 和 Position 要和主節點相同。

change master to master_host='106.13.1.171', 
master_user='root', master_password='roof', 
master_port=3306, master_log_file='mysql-bin.000001',
master_log_pos= 154, master_connect_retry=30;

開始主從複製

START SLAVE;

查看效果

SHOW SLAVE STATUS;

在這裏插入圖片描述
有兩個 Yes 成功!我們可以在 Master 數據庫創建一個數據庫 test 進行測試, Slave 就會自動同步主數據庫數據。

ABOUT

我的 Github:Github
CSDN: CSDN
個人網站: sirius blog
E-mail: [email protected]

推薦閱讀
史上最全,最完美的 JAVA 技術體系思維導圖總結,沒有之一!
全站導航 | 我爲什麼要寫這些博客?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章