在docker下進行mysql的主從復制

搭建步驟

1、拉取鏡像

docker pull mysql:latest

2、查看鏡像

docker images

3、創建啟動容器

Master

docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

Slave

docker run -p 3307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

MySQL 主數據庫端口為 3306,容器名稱為 mysql-master,默認密碼為 123456,-d 為后臺運行。

MySQL 從數據庫端口為 3307,容器名稱為 mysql-slave,默認密碼為 123456,-d 為后臺運行。

4、配置Master

進入容器:

docker exec -it mysql-master /bin/bash

修改配置文件:

cd /etc/mysqlvim my.cnf

找不到vim命令解決:

# 更新包
apt-get update
# 安裝vim
apt-get install vim -y

修改配置文件,添加如下配置:

# 同一局域網內注意要唯一
server-id=1 
# 開啟二進制日志功能,二進制文件名稱
log-bin=master-bin
# 二進制日志格式,有row、statement、mixed三種格式,row指的是把改變的內容復制過去,而不是把命令在從服務器上執行一遍,statement指的是在主服務器上執行的SQL語句,在從服務器上執行同樣的語句。MySQL默認采用基于語句的復制,效率比較高。mixed指的是默認采用基于語句的復制,一旦發現基于語句的無法精確的復制時,就會采用基于行的復制。
binlog-format=ROW
# 同步的數據庫名稱,如果不配置,表示同步所有的庫
binlog-do-db=數據庫名

重啟容器:

docker restart mysql-master

5、配置Slave

進入容器:

docker exec -it mysql-slave /bin/bash

修改配置文件如下:

# 同一局域網內注意要唯一
server-id=2
# 開啟二進制日志功能,二進制文件名稱
log-bin=slave-bin
# 二進制文件的格式
binlog-format=ROW 

重啟容器:

docker restart mysql-slave

6、開啟 Master-Slave 主從復制

進入 master 容器或者通過 MySQL 客戶端工具,執行 show master status 查看 master 狀態,記錄相關信息。

#進入容器
docker exec -it 容器名 /bin/bash
#輸入密碼,進入mysql
mysql -u root -p 
mysql->show master status;
-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
| master-bin.000007 |      156 |              |                  |                   |

查看 master 容器的獨立IP:

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-maste
172.17.0.4

進入slave容器或者通過MySQL客戶端工具,執行如下命令:

change master to master_host='172.17.0.4', master_user='root', master_password='123456', master_port=3306, master_log_file='master-bin.000007', master_log_pos=156, master_connect_retry=60,get_master_public_key=1;
  • master_host:master的容器獨立IP
  • master_port:master的容器端口號
  • master_user:用于同步數據的用戶
  • master_password:用于同步數據的用戶密碼
  • master_log_file:指定 Slave 從哪個日志文件開始復制數據,即上文中提到的 File 字段的值
  • master_log_pos:從哪個 Position 開始讀,即上文中提到的 Position 字段的值
  • master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒
  • get_master_public_key=1:是mysql8.0有密碼校驗才要進行設置的

啟動 slave:

start slave

查看 slave 狀態:

show slave status \G;
————————————————————————————
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 172.17.0.4Master_User: rootMaster_Port: 3306Connect_Retry: 30Master_Log_File: master-bin.000007Read_Master_Log_Pos: 4187Relay_Log_File: a40ee670e244-relay-bin.000002Relay_Log_Pos: 4356Relay_Master_Log_File: master-bin.000007Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 4187Relay_Log_Space: 4572Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1Master_UUID: 77e35acb-bfb0-11eb-9513-0242ac110002Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0Network_Namespace: 

看到 Slave_IO_Running: Yes,Slave_SQL_Running: Yes 說明啟動成功了。

7、關閉主從

進入 slave 容器 mysql 客戶端,這樣表示就不同步了

stop slave;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40544.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40544.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

企業權限管理(十)-用戶詳情

用戶詳情 UserController findById方法 Controller RequestMapping("/user") public class UserController {Autowiredprivate IUserService userService;//查詢指定id的用戶RequestMapping("/findById.do")public ModelAndView findById(String id) thro…

Sublime Text 4 Build 4151 4152 發布及注冊方法

Sublime Text 是一個商業代碼編輯器。它原生支持許多編程語言和標記語言,用戶可以通過插件來擴展它的功能,這些插件通常是由社區建立的,并以自由軟件許可證的形式維護。為了方便插件,Sublime Text 有一個 Python API。 Sublime T…

【劍指Offer 57】和為s的連續正數序列,Java解密。

LeetCode 劍指Offer 75道練習題 文章目錄 劍指Offer:和為s的連續正數序列示例:限制:解題思路:劍指Offer:和為s的連續正數序列 【題目描述】 輸入一個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。 序列內的數字由小到大排列,不同序列按照首…

糖尿病視網膜病變,黃斑病變,年齡相關檢測研究(Matlab代碼)

💥💥💞💞歡迎來到本博客????💥💥 🏆博主優勢:🌞🌞🌞博客內容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ??座右銘&a…

VMware虛擬安裝Ubuntu,然后切換Ubuntu內核版本

無論你選擇哪種方法,一旦進入 GRUB 引導菜單,你應該能夠選擇需要的內核版本并啟動系統。 打開終端:你可以通過按下 Ctrl Alt T 快捷鍵來打開終端。 使用 sudo:切換內核需要管理員權限,因此你需要使用 sudo 命令。首…

分類預測 | MATLAB實現CNN-BiGRU-Attention多輸入分類預測

分類預測 | MATLAB實現CNN-BiGRU-Attention多輸入單輸出分類預測 目錄 分類預測 | MATLAB實現CNN-BiGRU-Attention多輸入單輸出分類預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 Matlab實現CNN-BiGRU-Attention多特征分類預測,卷積雙向門控循環…

解決“先commit再pull”造成的git沖突

一、問題場景 在分支上修改了代碼然后commit(沒有push),此時再git pull,拉下了別人的修改,但是報錯無法merge 二、解決步驟 1.在idea下方工具欄選擇git -> log,可以看到版本變化鏈表,右鍵…

【文件上傳】大文件分片上傳、斷點續傳、秒傳前后端實現

1、大文件上傳面臨的問題: 在傳統的文件上傳中,由于文件過大,導致網絡傳輸時間長,這過程中會遇到網絡不穩定或者不小心關閉的瀏覽器(電腦)的情況,從而導致文件上傳中斷。中斷之后,又…

題解:ABC277C - Ladder Takahashi

題解:ABC277C - Ladder Takahashi 題目 鏈接:Atcoder。 鏈接:洛谷。 難度 算法難度:普及。 思維難度:入門。 調碼難度:入門。 綜合評價:簡單。 算法 深度優先搜索簡單圖論 思路 把每…

【Apollo】賦能移動性:阿波羅自動駕駛系統的影響

前言 Apollo (阿波羅)是一個開放的、完整的、安全的平臺,將幫助汽車行業及自動駕駛領域的合作伙伴結合車輛和硬件系統,快速搭建一套屬于自己的自動駕駛系統。 開放能力、共享資源、加速創新、持續共贏是 Apollo 開放平臺的口號。百度把自己所擁有的強大、…

動態內存分配及管理——C語言

目錄 一、為什么存在動態內存分配 二、動態內存函數介紹 2.1 malloc 2.2 free 2.3 calloc 2.4 realloc 三、常見的動態內存錯誤 3.1 對NULL指針的解引用操作 3.2 對動態開辟空間的越界訪問 3.3 對非動態開辟內存使用free釋放 3.4 使用free釋放一塊動態開辟內存的一部…

搭建Web服務器并用cpolar發布至公網訪問

本地電腦搭建Web服務器并用cpolar發布至公網訪問 文章目錄 本地電腦搭建Web服務器并用cpolar發布至公網訪問前言1. 首先在電腦安裝PHPStudy、WordPress、cpolar2. 安裝cpolar,進入Web-UI界面3. 安裝wordpress4. 進入wordpress網頁安裝程序5. 利用cpolar建立的內網穿…

TensorFlow2.1 模型訓練使用

文章目錄 1、環境安裝搭建2、神經網絡2.1、解決線性問題2.2、FAshion MNIST數據集使用 3、卷積神經網絡3.1、卷積神經網絡使用3.2、ImageDataGenerator使用3.3、貓狗識別案例3.4、參數優化 1、環境安裝搭建 鏈接: Windows 安裝Tensorflow2.1、Pycharm開發環境 2、神經網絡 1…

【數據結構】堆(Heap)

一、堆的概念及結構 1、概念 堆(Heap)是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵 完全二叉樹的 數組對象。 堆是非線性數據結構,相當于一維數組,有兩個直接后繼。 如果有一個關鍵碼的集合K { k?,k?&#xff0c…

“深入解析JVM:探索Java虛擬機的內部工作原理“

標題:深入解析JVM:探索Java虛擬機的內部工作原理 摘要:本文將深入解析Java虛擬機(JVM)的內部工作原理,包括類加載、內存管理、垃圾回收、即時編譯等關鍵概念。通過對這些概念的詳細講解和示例代碼的演示&a…

關于openfeign調用時content-type的問題

問題1描述: 今天在A服務使用openfeign調用B服務的時候,發現經常會偶發性報錯。錯誤如下: 情況為偶發,很讓人頭疼。 兩個接口如下: A服務接口: delayReasonApi.test(student);就是使用openfeign調用B服務的…

K8S常用命令

1.1 查看集群信息: kubectl cluster-info: 顯示集群信息。 kubectl config view: 顯示當前kubectl配置信息。1.2 查看資源狀態: kubectl get pods: 查看所有Pod的狀態。 kubectl get deployments: 查看所有部署的狀態。 kubectl get services: 查看所有…

Php“牽手”shopee商品詳情頁數據采集方法,shopeeAPI接口申請指南

shopee詳情接口 API 是開放平臺提供的一種 API 接口,它可以幫助開發者獲取商品的詳細信息,包括商品的標題、描述、圖片等信息。在電商平臺的開發中,詳情接口API是非常常用的 API,因此本文將詳細介紹詳情接口 API 的使用。 一、sh…

Python接口自動化之request請求封裝

我們在做自動化測試的時候,大家都是希望自己寫的代碼越簡潔越好,代碼重復量越少越好。那么,我們可以考慮將request的請求類型(如:Get、Post、Delect請求)都封裝起來。這樣,我們在編寫用例的時候…

Python文件操作教程,Python文件操作筆記

文件的打開與關閉 想一想: 如果想用word編寫一份簡歷,應該有哪些流程呢? 打開word軟件,新建一個word文件寫入個人簡歷信息保存文件關閉word軟件 同樣,在操作文件的整體過程與使用word編寫一份簡歷的過程是很相似的…