Docker MySQL 主從複製詳解

一、Docker MySQL 主從複製概述

MySQL 主從複製是實現 MySQL 資料庫高可用性的重要手段之一。當主機宕機時,從機可以頂替主機繼續提供服務,從而保證整個服務的連續性和穩定性。Docker 是一種輕量級容器技術,可以更好地實現 MySQL 主從部署的靈活性和可移植性。接下來本文將為您詳細介紹 Docker MySQL 主從複製的實現步驟和注意事項。

二、Docker MySQL 主從複製環境搭建

1、首先拉取 MySQL 鏡像

docker pull mysql

2、創建主節點容器,並指定容器名為 mysql-master

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

3、創建從節點容器,並指定容器名為 mysql-slave

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

4、進入主節點容器,運行以下命令開啟二進位日誌

docker exec -it mysql-master bash
# 進入 MySQL 管理員模式
mysql -u root -p123456
# 開啟二進位日誌
use mysql;
update user set host = '%' where user = 'root';
set global binlog_format = 'ROW';
set global log_slave_updates = on;
create user 'slave'@'%' identified by '123456';
grant replication slave on *.* to 'slave'@'%';
# 退出 MySQL 管理員模式及容器
exit
exit

5、進入從節點容器,運行以下命令配置主從關係

docker exec -it mysql-slave bash
# 進入 MySQL 管理員模式
mysql -u root -p123456
# 配置主從關係
CHANGE MASTER TO
    MASTER_HOST='主節點 IP 或域名',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql-bin.000001', # 根據主節點的 binlog_filename 參數修改
    MASTER_LOG_POS=154; # 根據主節點的 binlog_position 參數修改
# 啟動同步
start slave;
# 查看同步狀態
show slave status\G;
# 退出 MySQL 管理員模式及容器
exit
exit

三、Docker MySQL 主從複製注意事項

1、主從節點之間的網路要求必須是互通的,可以通過 docker network 或自定義網路解決。

2、在配置主從關係時,要關閉防火牆或設置防火牆的規則,以免影響主從節點之間的正常通信。

3、在開啟主節點的二進位日誌時,一定要注意 binlog_format 的設置,一般推薦設置為 ROW 模式。

4、在啟動同步時,一定要注意 MASTER_LOG_FILE 和 MASTER_LOG_POS 參數的設置,這兩個參數是同步的關鍵。

5、MySQL 主從複製是非同步的,因此有一定的延遲,可根據應用場景進行調整和優化。

四、總結

本文介紹了 Docker MySQL 主從複製的實現步驟和注意事項。希望本文能夠對您在開發和運維過程中遇到的 MySQL 主從相關問題有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193141.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 14:59
下一篇 2024-12-01 14:59

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • docker-ce-18.03.1.ce-1.el7.centos.x86_64需要pigz這個依賴的解決方案

    當我們在linux centos系統中安裝docker-ce-18.03.1.ce-1.el7.centos.x86_64時,有時可能會遇到「nothing provides pi…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27
  • 如何解決Docker+k8s報錯413 Request Entity Too Large

    對於使用Docker容器和Kubernetes集群的開發人員,在處理HTTP請求時,常常會遇到413 Request Entity Too Large的報錯。這通常是由於請求的大小…

    編程 2025-04-27
  • docker-compose編寫用法介紹

    本文將詳細介紹docker-compose編寫的各個方面,包括語法、常見命令等等,旨在幫助讀者更好的了解如何使用docker-compose。 一、docker-compose的語…

    編程 2025-04-27
  • 如何使用MySQL欄位去重

    本文將從多個方面為您詳細介紹如何使用MySQL欄位去重並給出相應的代碼示例。 一、SELECT DISTINCT語句去重 MySQL提供了SELECT DISTINCT語句,通過在…

    編程 2025-04-27

發表回復

登錄後才能評論