docker高級篇1-dockeran安裝mysql主從複製

来源:https://www.cnblogs.com/kaigejava/archive/2022/12/16/16987482.html
-Advertisement-
Play Games

大家好,咱們前面通過十篇的文章介紹了docker的基礎篇,從本篇開始,咱們的《docker學習系列》將要進入到高級篇階段(基礎篇大家可以查看之前發佈的文章)。 咱們先來介紹:docker複雜方式安裝軟體。通過按照mysql\redis兩個案例來講解 Docker複雜安裝說明,兩個案例: 1:安裝my ...


大家好,咱們前面通過十篇的文章介紹了docker的基礎篇,從本篇開始,咱們的《docker學習系列》將要進入到高級篇階段(基礎篇大家可以查看之前發佈的文章)。

咱們先來介紹:docker複雜方式安裝軟體。通過按照mysql\redis兩個案例來講解

Docker複雜安裝說明,兩個案例:

1:安裝mysql主從複製

2:安裝redis集群

本文咱們就先來實現第一個案例:mysql主從複製

f2f6cd061076b10def7e4d82efea9fc0.png

 

大家好,我是凱哥Java(kaigejava),樂於分享,每日更新技術文章,歡迎大家關註“凱哥Java”,及時瞭解更多。讓我們一起學Java。也歡迎大家有事沒事就來和凱哥聊聊~~~

安裝mysql主從搭建步驟:

1:新建主伺服器容器實例3307

命令

docker run -p 3307:3306 --name mysql-master \

-v /mydata/mysql-master/log:/var/log/mysql \

-v /mydata/mysql-master/data:/var/lib/mysql \

-v /mydata/mysql-master/conf:/etc/mysql \

-e MYSQL_ROOT_PASSWORD=root \

-d mysql:5.7

2:進入/mydata/mysql-master/conf目錄下新建my.cnf

修改配置:

cd /mydata/mysql-master/conf

vim my.cnf

## 輸入以下內容

[mysqld]

## 設置server_id,同一區域網中需要唯一

server_id=101

## 指定不需要同步的資料庫名稱

binlog-ignore-db=mysql  

## 開啟二進位日誌功能

log-bin=mall-mysql-bin  

## 設置二進位日誌使用記憶體大小(事務)

binlog_cache_size=1M  

## 設置使用的二進位日誌格式(mixed,statement,row)

binlog_format=mixed  

## 二進位日誌過期清理時間。預設值為0,表示不自動清理。

expire_logs_days=7  

## 跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷。

## 如:1062錯誤是指一些主鍵重覆,1032錯誤是因為主從資料庫數據不一致

slave_skip_errors=1062

註意文件許可權應該是644

3:修改完配置之後重啟master實例

修改完mysql配置後,記得重啟實例

docker restart mysql-master

如果重啟失敗,查看是否因為my.conf文件寫錯導致。

或者查看錯誤日誌: docker logs 容器id

45ae4951650045b830ac9fd85d270495.png

 

修改後,重新啟動容器。

6bd2e69bbd7b3425623a5977f1cc6416.png

 

4:進入mysql-master容器

進入到mysql-master。然後登錄mysql試試。

在前臺顯示進入容器:

docker exec -it mysql-master /bin/bash

進入容器後,登錄mysql:

mysql -uroot -p

5:master容器實例內創建數據同步用戶

mysql創建用戶及密碼命令:

命令模板:CREATE USER '用戶名'@'可以訪問的ip' IDENTIFIED BY '密碼'

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

賦權命令模板:GRANT REPLICATION 許可權 on 訪問ip埠 TO '用戶名'@‘ip’

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

6:新建從伺服器容器實例3308

命令:

docker run -p 3308:3306 --name mysql-slave \

-v /mydata/mysql-slave/log:/var/log/mysql \

-v /mydata/mysql-slave/data:/var/lib/mysql \

-v /mydata/mysql-slave/conf:/etc/mysql \

-e MYSQL_ROOT_PASSWORD=root \

-d mysql:5.7

區別:

1:修改了宿主機的埠映射

2:修改了容器名稱

3:修改了數據捲掛載的目錄

5ebf4f748e01a2a5eef0db00072b4786.png

 

7:進入/mydata/mysql-slave/conf目錄下新建my.cnf

修改配置:

cd /mydata/mysql-slave/conf

vim my.cnf

## 輸入以下內容

[mysqld]

## 設置server_id,同一區域網中需要唯一

server_id=102

## 指定不需要同步的資料庫名稱

binlog-ignore-db=mysql  

## 開啟二進位日誌功能,以備Slave作為其它資料庫實例的Master時使用

log-bin=mall-mysql-slave1-bin  

## 設置二進位日誌使用記憶體大小(事務)

binlog_cache_size=1M  

## 設置使用的二進位日誌格式(mixed,statement,row)

binlog_format=mixed  

## 二進位日誌過期清理時間。預設值為0,表示不自動清理。

expire_logs_days=7  

## 跳過主從複製中遇到的所有錯誤或指定類型的錯誤,避免slave端複製中斷。

## 如:1062錯誤是指一些主鍵重覆,1032錯誤是因為主從資料庫數據不一致

slave_skip_errors=1062  

## relay_log配置中繼日誌

relay_log=mall-mysql-relay-bin  

## log_slave_updates表示slave將複製事件寫進自己的二進位日誌

log_slave_updates=1  

## slave設置為只讀(具有super許可權的用戶除外)

read_only=1

重新賦權

8:修改完配置後重啟slave實例

修改完mysql配置後,記得重啟實例

docker restart mysql-slave

9:在主資料庫這查看主從同步狀態

在mysql主庫的鏡像中,進入主mysql,然後執行命令:

show master status;

10:進入mysql-slave容器

進入到mysql-master。然後登錄mysql試試。

在前臺顯示進入容器:

docker exec -it mysql-slave /bin/bash

進入容器後,登錄mysql:

mysql -uroot -p

11:在從資料庫中配置主從複製

在mysql從庫的鏡像中,進入從mysql,然後執行命令公式:

change master to master_host='宿主機ip', master_user='在主庫上創建用於主從同步的用戶賬號', master_password='在主資料庫創建的用於同步數據的用戶密碼', master_port=master庫的埠, master_log_file='masterlog文件名稱', master_log_pos=當前開始點, master_connect_retry=重試;

公式說明:見註釋

master_host:主資料庫的ip地址

master_port:主資料庫的埠

master_user:在主資料庫創建的用於同步數據的用戶賬號

master_password:在主資料庫創建的用於同步數據的用戶的密碼

master_log_file:指定從資料庫要複製數據的日誌文件。通過查看主資料庫的狀態,獲取File參數;

master_log_pos:指定從資料庫從哪個位置開始複製數據,通過查看主數據的狀態,獲取Position參數

master_connect_retry:連接失敗充值的時間間隔,單位:秒

12:在從資料庫中查看主從同步狀態

查看主從同步第二中方法

 

show slave status \G;

b1ec773e369c953086788867cd746710.png

86fd45001b5ee441b8dc280518cb6b1a.png

13:在從資料庫中開啟主從同步

進入從資料庫的mysql後,開啟主從同步:

start slave;

14:查看從資料庫狀態發現已經同步

7fafaff4793774d5d5765a4ffd166f49.png

 

15:主從複製測試

 

 

結束語

如操作有問題歡迎去 我的 ​​​ 個人博客(www.kaigejava.com)​​​​留言或者  ​​​ 微信公眾號(凱哥Java)​​​​留言交流哦。

 

直通車,本系列教程已發佈文章,快速到達,《Docker學習系列》教程已經發佈的內容如下:

【圖文教程】Windows11下安裝Docker Desktop

【填坑】在windows系統下安裝Docker Desktop後遷移鏡像位置

【Docker學習系列】Docker學習1-docker安裝

【Docker學習系列】Docker學習2-docker設置鏡像加速器

【Docker學習系列】Docker學習3-docker的run命令幹了什麼?docker為什麼比虛擬機快?

【Docker學習系列】Docker學習2-常用命令之啟動命令和鏡像命令

【Docker學習系列】Docker學習系列3:常用命令之容器命令

【Docker學習系列】Docker學習4-常用命令之重要的容器命令

【Docker教程系列】Docker學習5-Docker鏡像理解

【Docker教程系列】Docker學習6-Docker鏡像commit操作案例

【Docker學習教程系列】7-如何將本地的Docker鏡像發佈到阿裡雲

【Docker學習教程系列】8-如何將本地的Docker鏡像發佈到私服?

「Docker學習系列教程」9-Docker容器數據捲介紹

「Docker學習系列教程」10-Docker容器數據捲案例

Docker學習11-Docker常規方式安裝軟體

【Docker學習教程系列彙總】筆記及遇到問題解決文章



 

本文來自博客園,作者:kaizi1992,轉載請註明原文鏈接:https://www.cnblogs.com/kaigejava/p/16987482.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 小程式中實現頁面跳轉 對標簽綁定點擊事件 data是點擊時傳入的參數 <view bindtap="clickMe" data-nid="123" data-name="SD" >點我跳轉</view> /** * 用戶點擊事件 */ clickMe(e){ console.log(e) var n ...
  • 我要說的是我們改變 num屬性 的類型,無論是由 Integer改成Long,還是由Long改成Integer,只要num的值在Integer取值範圍內,就不會影響hessian序列化。 ...
  • 股票分析 需求:股票分析 使用tushare包獲取某股票的歷史行情數據。 輸出該股票所有收盤比開盤上漲3%以上的日期。 輸出該股票所有開盤比前日收盤跌幅超過2%的日期。 假如我從2010年1月1日開始,每月第一個交易日買入1手股票,每年最後一個交易日賣出所有股票,到今天為止,我的收益如何? impo ...
  • 前言 明天就是擁抱情人節,情侶們會在公開的場合擁抱,向世人宣告你倆的愛意,也讓這個寒冷的冬天變得格外溫馨。到了年底依然能熱情擁抱,也見證了兩人情意如昔。 今天子川就給大家帶來就是的利用Python製作表白神器,記得發給自己的心儀對象。廢話不多說直接開整~ 開發工具 Python版本: 3.6 相關模 ...
  • 本文介紹如何使用 Pandas Profiling 的比較報告功能,分析兩個數據集的分佈差異,完成數據探索分析 (EDA) 的完整流程,為後續分析做準備。 ...
  • 作者:耿宗傑 前言 關於pprof的文章在網上已是汗牛充棟,卻是千篇一律的命令介紹,鮮有真正實操的,本文將參考Go社區資料,結合自己的經驗,實戰Go程式的性能分析與優化過程。 優化思路 首先說一下性能優化的一般思路。系統性能的分析優化,一定是從大到小的步驟來進行的,即從業務架構的優化,到系統架構的優 ...
  • 前言 網易雲的Vip音樂下載下來,格式不是mp3/flac這種通用的音樂格式,而是經過加密的ncm文件。只有用網易雲的音樂App才能夠打開。於是想到可不可以把.ncm文件轉換成mp3或者flac文件,上google查了一下,發現有不少人已經做了這件事,但沒有發現C語言版本的,就想著寫一個純C語言版本 ...
  • pandas 為什麼學習pandas numpy已經可以幫助我們進行數據的處理了,那麼學習pandas的目的是什麼呢? numpy能夠幫助我們處理的是數值型的數據,當然在數據分析中除了數值型的數據還有好多其他類型的數據(字元串,時間序列),那麼pandas就可以幫我們很好的處理除了數值型的其他數據! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...