欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker安裝MySQL集群全過程(主從復制)

 更新時間:2025年07月15日 09:09:13   作者:搬運Gong  
本文介紹通過Docker實現(xiàn)數(shù)據(jù)庫主從集群部署,涵蓋網(wǎng)絡(luò)創(chuàng)建、my.cnf配置、復制設(shè)置及測試,解決防火墻等常見問題,確保數(shù)據(jù)同步可靠

為確保生產(chǎn)環(huán)境中的數(shù)據(jù)安全與可靠性,數(shù)據(jù)庫普遍采用主從集群架構(gòu)(一主一從)進行部署。

本文將系統(tǒng)闡述如何利用Docker鏡像實現(xiàn)數(shù)據(jù)庫集群的容器化部署,并完整記錄各配置環(huán)節(jié)的具體實現(xiàn)步驟。

一、主服務(wù)實例創(chuàng)建(可以先創(chuàng)建docker網(wǎng)絡(luò))

1、首先通過下面的命令將主服務(wù)器實例創(chuàng)建完成

docker run -d -p 3306:3306 --privileged=true \
-v /appData/mysql/master/log:/var/log/mysql \
-v /appData/mysql/master/data:/var/lib/mysql \
-v /appData/mysql/master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-master mysql:5.7

主服務(wù)器運行成功。下面來修改一下對應(yīng)的my.cnf配置。

2、添加主服務(wù)器對應(yīng)配置文件,進入到 /appData/mysql/master/conf 目錄下,此目錄已掛載到容器內(nèi)部,新建 my.cnf 文件,并添加如下內(nèi)容:

## 設(shè)置編碼字符集
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8

## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=101

## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql

## 開啟二進制日志功能
log-bin=master-mysql-bin

## 設(shè)置二進制日志使用內(nèi)存大小(事務(wù))
binlog_cache_size=1M

## 設(shè)置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed

## 二進制日志過期清理時間。默認值為0;表示不自動清理.
expire_logs_days=7

## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

進入到容器,檢查一下配置文件是否掛載成功。

3、配置文件添加完畢后,重啟主服務(wù)器

docker restart mysql-master

查看編碼字符集是否修改成功:

docker exec -it mysql-master /bin/bash

mysql -u root -p

show variables like '%character%';

已經(jīng)修改生效,說明剛剛修改的配置文件沒問題,進行下一步。

4、進入到主服務(wù)器的容器中,創(chuàng)建slave用戶并授權(quán),用來同步數(shù)據(jù)使用

# 交互式模式進入容器內(nèi)部
docker exec -it mysql-master /bin/bash

# 使用root 用戶登錄mysql服務(wù)器
mysql -uroot -p

# 創(chuàng)建slave用戶并授權(quán)
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

二、從服務(wù)器實例創(chuàng)建

1、和主服務(wù)器創(chuàng)建的命令一樣,個別掛載地址需要調(diào)整一下,如果是在不同的服務(wù)器上,可直接執(zhí)行;

docker run -d -p 3307:3306 --privileged=true \
-v /appData/mysql/slave/log:/var/log/mysql \
-v /appData/mysql/slave/data:/var/lib/mysql \
-v /appData/mysql/slave/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-slave mysql:5.7

2、添加從服務(wù)器對應(yīng)配置文件,進入到 /appData/mysql/slave/conf 目錄下,此目錄已掛載到容器內(nèi)部,新建 my.cnf 文件,并添加如下內(nèi)容:

## 設(shè)置編碼字符集
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
[mysqld]
character_set_server=utf8
## 設(shè)置server_id,同一局域網(wǎng)中需要唯一
server_id=102

## 指定不需要同步的數(shù)據(jù)庫名稱
binlog-ignore-db=mysql

## 開啟二進制日志功能,以備slave作為其他數(shù)據(jù)庫實例的master時使用
log-bin=slave-mysql-bin

## 設(shè)置二進制日志使用內(nèi)存大小(事務(wù))
binlog_cache_size=1M

## 設(shè)置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed

## 二進制日志過期清理時間。默認值為0;表示不自動清理.
expire_logs_days=7

## 跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
## 如:1062錯誤是指一些主鍵重復,1032錯誤是因為主從數(shù)據(jù)庫數(shù)據(jù)不一致
slave_skip_errors=1062

## relay_log 配置中繼日志
relay_log=slave-mysql-relay-bin

## log_slave_updates 表示slave將復制事件寫進自己的二進制日志
log_slave_updates=1

## slave 設(shè)置為制度(具有super權(quán)限的用戶除外)
read_only=1

3、重啟從服務(wù)器實例

docker restart mysql-slave

4、和主服務(wù)器一樣,登入mysql,使用命令行查看配置文件是否生效。

三、主從搭建

1、在主服務(wù)器中,查看當前主服務(wù)器情況,如下:

show master status;

這里的信息很重要,主要作用是告訴從機同步的位置。

2、在從數(shù)據(jù)庫中配置主從復制,在從機的mysql命令行中,執(zhí)行以下命令:

change master to master_host='192.168.152.128', master_user='slave', master_password='123456',master_port=3306,master_log_file='master-mysql-bin.000001',master_log_pos=617,master_connect_retry=30;

參數(shù)說明:

  • master_host:主數(shù)據(jù)庫的|P地址;
  • master_port:主數(shù)據(jù)庫的運行端口:
  • master_user:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶賬號;
  • master_password:在主數(shù)據(jù)庫創(chuàng)建的用于同步數(shù)據(jù)的用戶密碼;
  • master_log_file:指定從數(shù)據(jù)庫要復制數(shù)據(jù)的日志文件,通過査看主數(shù)據(jù)的狀態(tài),獲取File參數(shù);
  • master_log_pos:指定從數(shù)據(jù)庫從哪個位置開始復制數(shù)據(jù),通過査看主數(shù)據(jù)的狀態(tài),獲Position參數(shù);
  • master_connect_retry:連接失敗重試的時間間隔,單位為秒。

執(zhí)行完畢以后,查看一下從機的主從同步狀態(tài):

show slave status \G;

這里命令的結(jié)尾使用了 “\G” 的形式,則是以下面這種類似于json的格式展示出來的,因為內(nèi)容較多,如果以表格的形式展現(xiàn),不易于閱讀。

從圖中可以看到,兩個狀態(tài)值:

Slave_IO_Running: No
Slave_SQL_Running: No

這兩個值均為No,說明主從復制還未開始。

下面,繼續(xù)進行后續(xù)操作。

3、在從數(shù)據(jù)庫中開啟主從同步,執(zhí)行下面的命令:

start slave;

4、從數(shù)據(jù)庫開啟主從配置后,查看一下狀態(tài),看看是否啟用主從同步功能;

這里遇到了一個小坑,具體解決方案可參考:我這里主要是因為防火墻的問題導致。

如果經(jīng)過多次調(diào)整,仍不生效,記得使用《重啟大法》,通常情況下,可以給你意外驚喜。

最終效果如下如:

四、主從復制測試

1、在主數(shù)據(jù)庫中,新建數(shù)據(jù)庫、表以及插入信息;

2、從庫中查看是否同步;

發(fā)現(xiàn),數(shù)據(jù)已經(jīng)完美同步。

3、使用客戶端再次進行測試;

查詢從庫:

至此,安裝完畢!

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker鏡像的制作,上傳,拉取和部署操作(利用阿里云)

    Docker鏡像的制作,上傳,拉取和部署操作(利用阿里云)

    這篇文章主要介紹了Docker鏡像的制作,上傳,拉取和部署操作(利用阿里云),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker 清理環(huán)境操作

    Docker 清理環(huán)境操作

    這篇文章主要介紹了Docker 清理環(huán)境操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker搭建PHP運行環(huán)境完整步驟(圖文教程)

    Docker搭建PHP運行環(huán)境完整步驟(圖文教程)

    PHP是一種廣泛使用的編程語言,被用于Web開發(fā)和服務(wù)器管理等各種用途,而Docker則是一種非常流行的容器化平臺,可以方便地管理應(yīng)用程序和環(huán)境,這篇文章主要給大家介紹了關(guān)于Docker搭建PHP運行環(huán)境的完整步驟,需要的朋友可以參考下
    2023-09-09
  • Docker大型項目容器化改造

    Docker大型項目容器化改造

    今天小編就為大家分享一篇關(guān)于Docker大型項目容器化改造,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 解決docker訪問外部https數(shù)字證書問題

    解決docker訪問外部https數(shù)字證書問題

    這篇文章主要介紹了docker訪問外部https數(shù)字證書問題,為了解決證書驗證的問題,我們需要在構(gòu)建 docker 鏡像的時候?qū)?nbsp;ca-certificates 根證書裝上,需要的朋友可以參考下
    2022-09-09
  • Docker compose安裝部署創(chuàng)建自定義網(wǎng)絡(luò)使用舉例

    Docker compose安裝部署創(chuàng)建自定義網(wǎng)絡(luò)使用舉例

    這篇文章主要為大家介紹了Docker compose安裝部署創(chuàng)建自定義網(wǎng)絡(luò)使用舉例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • docker實現(xiàn)搭建emqx服務(wù)

    docker實現(xiàn)搭建emqx服務(wù)

    這篇文章主要介紹了docker實現(xiàn)搭建emqx服務(wù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解docker進行數(shù)據(jù)掛載的三種模式

    詳解docker進行數(shù)據(jù)掛載的三種模式

    Docker?提供了三種方式將數(shù)據(jù)從宿主機掛載到?Docker容器中:?volumes、bind?mounts、tmpfs?,這篇文章主要介紹了docker進行數(shù)據(jù)掛載的三種模式,需要的朋友可以參考下
    2022-05-05
  • 通過Docker創(chuàng)建CentOS容器的實現(xiàn)步驟

    通過Docker創(chuàng)建CentOS容器的實現(xiàn)步驟

    本文主要介紹了Docker創(chuàng)建CentOS容器,使用文內(nèi)的腳本可以快速創(chuàng)建CentOS 7.8虛擬系統(tǒng)集群,并通過SSH(Secure Shell)遠程工具連接,感興趣的可以了解一下
    2021-11-11
  • 使用Docker搭建ELK日志系統(tǒng)的方法示例

    使用Docker搭建ELK日志系統(tǒng)的方法示例

    這篇文章主要介紹了使用Docker搭建ELK日志系統(tǒng)的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論