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

Docker安裝MySQL集群全過(guò)程(主從復(fù)制)

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

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

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

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

1、首先通過(guò)下面的命令將主服務(wù)器實(shí)例創(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ùn)行成功。下面來(lái)修改一下對(duì)應(yīng)的my.cnf配置。

2、添加主服務(wù)器對(duì)應(yīng)配置文件,進(jìn)入到 /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ù)庫(kù)名稱
binlog-ignore-db=mysql

## 開(kāi)啟二進(jìn)制日志功能
log-bin=master-mysql-bin

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

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

## 二進(jìn)制日志過(guò)期清理時(shí)間。默認(rèn)值為0;表示不自動(dòng)清理.
expire_logs_days=7

## 跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷
## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫(kù)數(shù)據(jù)不一致
slave_skip_errors=1062

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

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

docker restart mysql-master

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

docker exec -it mysql-master /bin/bash

mysql -u root -p

show variables like '%character%';

已經(jīng)修改生效,說(shuō)明剛剛修改的配置文件沒(méi)問(wèn)題,進(jìn)行下一步。

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

# 交互式模式進(jìn)入容器內(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ù)器實(shí)例創(chuàng)建

1、和主服務(wù)器創(chuàng)建的命令一樣,個(gè)別掛載地址需要調(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ù)器對(duì)應(yīng)配置文件,進(jìn)入到 /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ù)庫(kù)名稱
binlog-ignore-db=mysql

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

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

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

## 二進(jìn)制日志過(guò)期清理時(shí)間。默認(rèn)值為0;表示不自動(dòng)清理.
expire_logs_days=7

## 跳過(guò)主從復(fù)制中遇到的所有錯(cuò)誤或指定類型的錯(cuò)誤,避免slave端復(fù)制中斷
## 如:1062錯(cuò)誤是指一些主鍵重復(fù),1032錯(cuò)誤是因?yàn)橹鲝臄?shù)據(jù)庫(kù)數(shù)據(jù)不一致
slave_skip_errors=1062

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

## log_slave_updates 表示slave將復(fù)制事件寫進(jìn)自己的二進(jìn)制日志
log_slave_updates=1

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

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

docker restart mysql-slave

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

三、主從搭建

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

show master status;

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

2、在從數(shù)據(jù)庫(kù)中配置主從復(fù)制,在從機(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ù)說(shuō)明:

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

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

show slave status \G;

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

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

Slave_IO_Running: No
Slave_SQL_Running: No

這兩個(gè)值均為No,說(shuō)明主從復(fù)制還未開(kāi)始。

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

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

start slave;

4、從數(shù)據(jù)庫(kù)開(kāi)啟主從配置后,查看一下?tīng)顟B(tài),看看是否啟用主從同步功能;

這里遇到了一個(gè)小坑,具體解決方案可參考:我這里主要是因?yàn)榉阑饓Φ膯?wèn)題導(dǎo)致。

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

最終效果如下如:

四、主從復(fù)制測(cè)試

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

2、從庫(kù)中查看是否同步;

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

3、使用客戶端再次進(jìn)行測(cè)試;

查詢從庫(kù):

至此,安裝完畢!

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    Docker大型項(xiàng)目容器化改造

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

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

    這篇文章主要介紹了docker訪問(wèn)外部https數(shù)字證書問(wèn)題,為了解決證書驗(yàn)證的問(wèn)題,我們需要在構(gòu)建 docker 鏡像的時(shí)候?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ò)使用舉例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • docker實(shí)現(xiàn)搭建emqx服務(wù)

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

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

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

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

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

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

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

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

最新評(píng)論