濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解用Docker構建MySQL主從環(huán)境

詳解用Docker構建MySQL主從環(huán)境

熱門標簽:智能外呼系統(tǒng)如何部署 高德地圖標注在建線路 濟源電話外呼系統(tǒng)怎么樣 宿州防封外呼系統(tǒng)廠家 ai電銷機器人 如何開發(fā) 電話機器人服務差 電銷機器人對公司貢獻 蘭州語音電銷機器人軟件 山東400電話如何辦理

前言

本篇文章記錄我使用 docker-compose 以及 dockerfile 來構建基于 binlog 的 MySQL 主從環(huán)境。如果你嚴格按照文中的步驟進行配置,相信很快就可以搭建好一個基礎的 MySQL 主從環(huán)境。

介紹

MySQL 主從同步分為 3 個步驟:

  • master 節(jié)點將數(shù)據(jù)的更新記錄寫到 binary log 中。
  • slave 節(jié)點開啟 IO 線程連接 master 節(jié)點,請求獲取指定 binary log 文件的指定位置之后的日志。
  • master 節(jié)點的 binary log dump 線程將指定的 binary log 信息推送給 slave 節(jié)點。
  • slave 節(jié)點的 IO 線程接收到消息后,將日志內(nèi)容寫入 relay log 文件。
  • slave 節(jié)點的 SQL 線程檢測到 relay log 新增了內(nèi)容,馬上解析 relay log 文件生成相應的 SQL 語句,并將這些 SQL 語句重放到數(shù)據(jù)庫,保證主從數(shù)據(jù)一致性。

配置

創(chuàng)建目錄結構

首先先搞定目錄結構,我的目錄結構如下,如果想按照自己的想法來組建目錄,在下文中的 docker-compose.yaml 文件與 Dockerfile 文件要注意修改文件路徑。

配置 docker-compose 模版文件

version: "3"
services:
 mysql-master:
 build:
  context: ./
  dockerfile: mysql/master/Dockerfile
 container_name: mysql-master
 volumes:
  - ./mysql/master/data:/var/lib/mysql
 restart: always
 ports:
  - 3305:3306
 links:
  - mysql-slave

 mysql-slave:
 build:
  context: ./
  dockerfile: mysql/slave/Dockerfile
 container_name: mysql-slave
 volumes:
  - ./mysql/slave/data:/var/lib/mysql
 restart: always
 ports:
  - 3306:3306

配置 master 節(jié)點的 cluster.cnf 文件以及 Dockerfile 文件

[mysqld]
server_id=100
binlog-ignore-db=mysql
log-bin=replicas-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
slave_skip_errors=1062

# 我的 MySQL 為 8.x,需要如下配置
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
FROM mysql:latest
ADD ./mysql/master/cluster.cnf /etc/mysql/conf.d/cluster.cnf
ENV MYSQL_ROOT_PASSWORD=password

配置 slave 節(jié)點的 cluster.cnf 文件以及 Dockerfile 文件

[mysqld]
server_id=101
binlog-ignore-db=mysql
binlog_cache_size=1M
binlog_format=mixed
slave_skip_errors=1062
relay_log=replicas-mysql-relay-bin
log_slave_updates=1
read_only=1

# 我的 MySQL 為 8.x,需要如下配置
default_authentication_plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
FROM mysql:latest
ADD ./mysql/slave/cluster.cnf /etc/mysql/conf.d/cluster.cnf
ENV MYSQL_ROOT_PASSWORD=password

創(chuàng)建容器

docker-compose up -d mysql-master mysql-slave

運行上述命令進行容器創(chuàng)建,如果構建時間過長,可以考慮更換鏡像源,例如下面幾個國內(nèi)優(yōu)質(zhì)鏡像源:

網(wǎng)易: http://hub-mirror.c.163.com

阿里云: http://&lt ;你的ID>.mirror.aliyuncs.com

中國科學技術大學: http://docker.mirrors.ustc.ed...

構建完成之后,使用 docker ps 命令查看一下容器是否正常運行,出現(xiàn)如下情形則可以認為已經(jīng)構建成功。

配置 slave 節(jié)點

首先使用 docker 命令進入到 mysql-master 容器中,再登錄到 mysql 輸入 show master status 命令獲取主庫狀態(tài),這里我們要關心兩個參數(shù) File 以及 Position ,之后配置從庫會用到這兩個參數(shù)。

接下來使用 docker 命令進入 mysql-slave 容器,再登錄到 mysql 輸入以下語句進行與 mysql-master 連接。

CHANGE MASTER TO
 MASTER_HOST='mysql-master',
 MASTER_USER='root',
 MASTER_PASSWORD=你設置的密碼,
 MASTER_LOG_FILE=上一步得到的 File 參數(shù),
 MASTER_LOG_POS=上一步得到的 Position 參數(shù);

輸入完成后再鍵入 start slave 命令啟動 slave 服務。啟動之后輸入 show slave status \G 命令查看 slave 節(jié)點狀態(tài),出現(xiàn)如下情形可認為配置成功。

測試主從節(jié)點同步狀態(tài)

登錄到 mysql-master 節(jié)點,創(chuàng)建一個全新的庫,創(chuàng)建成功之后,切換到 mysql-slave 節(jié)點,輸入 show databases; 命令,查看是否成功同步,出現(xiàn)如下情形則配置成功。其他操作可以自己嘗試,這里不再做演示。

總結

這是我自己嘗試搭建 MySQL 主從架構所記錄的步驟,到此這篇關于詳解用Docker構建MySQL主從環(huán)境的文章就介紹到這了,更多相關Docker構建MySQL主從內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:衡水 南寧 晉中 巴中 佛山 畢節(jié) 云南 安陽

巨人網(wǎng)絡通訊聲明:本文標題《詳解用Docker構建MySQL主從環(huán)境》,本文關鍵詞  詳解,用,Docker,構建,MySQL,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解用Docker構建MySQL主從環(huán)境》相關的同類信息!
  • 本頁收集關于詳解用Docker構建MySQL主從環(huán)境的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    周宁县| 沅江市| 宽甸| 东丰县| 衢州市| 漯河市| 黔南| 姚安县| 金昌市| 大邑县| 湟源县| 福泉市| 深水埗区| 纳雍县| 彭水| 鹿邑县| 毕节市| 罗源县| 措美县| 武强县| 吕梁市| 三门县| 巢湖市| 信宜市| 浮山县| 鄂托克旗| 无极县| 辽宁省| 卓尼县| 思南县| 崇仁县| 长兴县| 印江| 雅安市| 阿拉善左旗| 诸暨市| 湖北省| 永胜县| 墨竹工卡县| 龙泉市| 云阳县|