【mysql】【docker】mysql8-互為主從

🌸🌸 Linux/docker-compose/mysql8 互為主從 優雅部署 🌸🌸

  • 記錄下兩臺Linuxmysql需要熱備份,互為主從,后期加上keepalived實現高可用切換

  • 參考博客:答 案

🌸 一、準備文件

在這里插入圖片描述

  • 這里有個問題,新版mysql配置文件位置可能有變動,可以安裝下進入看下位置,確認下
    • 我這里是/etc/mysql/conf.d/my.cnf,編寫docker-compose時不要寫錯
    • 注意8.0.31my.cnf,有些博主寫的mysql.confmysql讀取不了
    • 后面啟動后查看是否配置成功,若沒有,則說明沒有成功
      在這里插入圖片描述
  1. master(看下注釋,不要盲目復制,不然后面更改要重啟,麻煩)
[mysqld]
# 設置服務器唯一標識號
server-id=1
# 啟用二進制日志,后面是名稱,隨意更改
log-bin=master-bin
# 指定需要復制的數據庫 為空則所有數據庫都復制
# binlog-do-db=
# 指定需要忽略的數據庫 
binlog-ignore-db=ttt
# 指定二進制日志的格式為行級別
binlog-format=row
# 啟用 GTID 模式
gtid-mode=ON
# 強制 GTID 一致性檢查
enforce-gtid-consistency=ON
  1. slave(看下注釋,不要盲目復制,不然后面更改要重啟,麻煩)
[mysqld]
# 設置服務器唯一標識號
server-id=2
# 啟用二進制日志,后面是名稱,隨意更改
log-bin=slave-bin
# 指定需要復制的數據庫 為空則所有數據庫都復制
# binlog-do-db=
# 指定需要復制的數據庫
binlog-ignore-db=ttt
# 指定二進制日志的格式為行級別
binlog-format=row
# 啟用 GTID 模式
gtid-mode=ON
# 強制 GTID 一致性檢查
enforce-gtid-consistency=ON
  1. docker-compose(注意這里不要用tab進行格式化,請使用空格)
  • master
version: '3'
services:mysql-master:image: mysql:8.0.31container_name: mysql-masterenvironment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123456  # MySQL root 用戶的密碼MYSQL_DATABASE: ttt  # 要創建的數據庫名稱ports:- "3308:3306"  # 映射到從服務器的端口volumes:- ./mysql-master/data:/var/lib/mysql  # 掛載數據目錄- ./mysql-master/log:/var/log/mysql  # 掛載日志目錄- ./mysql-master/config/:/etc/mysql/conf.d/  # 掛載從服務器的配置文件,注意版本,可能不同command:# 主服務器的命令參數,配置文件寫了,這里可以不寫,若配置文件沒有掛載成功,這里可以寫一下# --server-id=1 # --log-bin=master-bin # --binlog-ignore-db=ttt # --binlog-format=row # --gtid-mode=ON # --enforce-gtid-consistency=ON  # 將mysql8.0默認密碼策略 修改為 原先 策略 (mysql8.0對其默認策略做了更改 會導致密碼無法匹配)--default-authentication-plugin=mysql_native_password--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1privileged: true
  • slave
version: '3'
services:mysql-slave:image: mysql:8.0.31container_name: mysql-slaveenvironment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123456  # MySQL root 用戶的密碼MYSQL_DATABASE: ttt  # 要創建的數據庫名稱ports:- "3310:3306"  # 映射到從服務器的端口volumes:- ./mysql-slave/data:/var/lib/mysql  # 掛載數據目錄- ./mysql-slave/log:/var/log/mysql  # 掛載日志目錄- ./mysql-slave/config/:/etc/mysql/conf.d/  # 掛載從服務器的配置文件,注意版本,可能不同command: # 主服務器的命令參數,配置文件寫了,這里可以不寫,若配置文件沒有掛載成功,這里可以寫一下# --server-id=3# --log-bin=slave-bin # --binlog-ignore-db=ttt # --binlog-format=row # --gtid-mode=ON # --enforce-gtid-consistency=ON  # 將mysql8.0默認密碼策略 修改為 原先 策略 (mysql8.0對其默認策略做了更改 會導致密碼無法匹配)--default-authentication-plugin=mysql_native_password--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1privileged: true

🌸 二、啟動容器

  • mysql文件夾下執行
    • docker-compose up -d
    • 也可指定運行哪一個docker-compose up -d mysql-master mysql-slave
    • 看下配置文件有沒有掛載成功,以下說明成功,若沒有掛載成功,可嘗試在docker-composecommand加配置,一樣的效果,都是需要重啟的,command是啟動時設置配置項,文件中已有注釋。
      在這里插入圖片描述

🌸 三、配置主從信息

  • 主要兩步
  1. 進入主容器,獲取主服務器狀態信息
#進入容器內部
docker-compose exec mysql-master bash#輸入用戶密碼
mysql -u root -p#為了避免從服務復制出現權限不足的情況需要執行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';# 查看狀態
SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+------------------------------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+-------------------+----------+--------------+------------------+------------------------------------------+
| master-bin.000003 |      197 |              | ttt              | d732688d-197d-11ef-b514-0242ac120003:1-6 |
+-------------------+----------+--------------+------------------+------------------------------------------+
  1. 進入從容器,在服務下執行開始監聽復制
#進入容器
docker-compose exec mysql-slave bash#輸入用戶密碼
mysql -u root -p#配置從服務器復制
CHANGE MASTER TO MASTER_HOST='192.168.1.xxx', MASTER_USER='root', MASTER_PASSWORD='123456',MASTER_PORT=3310, MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=197;# 開啟復制
START SLAVE;#查看主從配置狀態
SHOW REPLICA STATUS\G;
  • 以下為成功
    在這里插入圖片描述

🌸 四、配置互為主從

  • 第三步反過來
  1. 進入從容器,獲取主服務器狀態信息
  2. 進入主容器,在服務下執行開始監聽復制

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

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

相關文章

圖形學初識--直線插值算法

文章目錄 為什么需要插值算法?插值算法是什么?有哪些常見的插值算法呢?1. 線性插值(Linear Interpolation)2. 多項式插值(Polynomial Interpolation)3. 樣條插值(Spline Interpolati…

Blazor 下支持 Azure AD 的多套登錄方案

比如上圖配置了兩套不同的登錄方案,各有自己的 TenantId 和 ClientId ,要同時支持他們的登錄(其實在同一套 TenantId 和 ClientId 里面配置多個登錄賬戶不就好了,但是......那套登錄的管理是在客戶自己的Azure AD賬戶管理下的&…

SpringBoot3 解決NoResourceFoundException: No static resource favicon.ico.異常

SpringBoot3 解決NoResourceFoundException: No static resource favicon.ico.異常 spring boot3項目中瀏覽器中訪問報錯找不到favicon.ico,雖然不影響使用,用api工具也可以忽略這個異常,但是防止瀏覽器訪問時出現異常干擾日志,所…

oracle數據庫解析過高分析

解析非常高,通過時間模型可以看到解析占比非常高 解析大致可以分為硬解析( hard parse)、軟解析( soft parse)和軟軟解析( soft soft parse)。如,執行一條 SQL 的時候,如…

星型模型和雪花模型的區別

星型模型和雪花模型都是數據倉庫設計中常用的維度建模方法,它們之間的主要區別在于數據組織結構、數據冗余度、查詢效率、可擴展性和正規化程度等方面: 星型模型 結構特點:星型模型中,一個中心的事實表連接多個維度表&#xff0…

在電腦中,Apple Mobile Device Support程序是什么?

Apple Mobile Device Support 是一項關鍵的后臺服務,它為 Windows 用戶提供了與蘋果 iOS 設備(包括 iPhone、iPad 和 iPod)順暢互動的能力。這項服務的核心功能是為iTunes軟件提供必要的支持,使得用戶能夠將他們的移動設備與電腦連…

Google Find My Device:科技守護,安心無憂

在數字化的時代,我們的生活與各種智能設備緊密相連。而 Google Find My Device 便是一款為我們提供安心保障的實用工具。 一、Find My Decice Netword的定義 谷歌的Find My Device Netword旨在通過利用Android設備的眾包網絡的力量,幫助用戶安全的定位所…

HTML5 歷史、地理位置處理、全屏處理

目錄 歷史HistoryAPI地理位置處理GeolocationAPI全屏處理FullscreenAPIHistoryAPI window.history 對象 window.history 是瀏覽器提供的一個內置對象,它提供了對瀏覽器歷史記錄的訪問和操作能力。通過這個對象,開發者可以實現無刷新頁面跳轉、添加新的瀏覽歷史條目等,從而提…

STM32F4_HAL控制GPIO輸出——跑馬燈實驗

1、GPIO工作模式 1.1 端口輸入數據寄存器(IDR) 1.2 端口輸出數據寄存器(ODR) 1.3 端口置位/復位寄存器(BSRR) 為什么有了 ODR 寄存器,還要這個 BSRR 寄存器呢?我們先看看 BSRR 的寄…

23種設計模式(持續輸出中)

一.設計模式的作用 設計模式是軟件從業人員長期總結出來用于解決特定問題的通用性框架,它提高了代碼的可維護性、可擴展性、可讀性以及復用性。 二.設計模式 1.工廠模式 工廠模式提供了創建對象的接口,而無需制定創建對象的具體類,工廠類…

hive表在HDFS的每個文件的大小加大

配置參數: spark.hadoop.hive.exec.orc.default.stripe.size78643200 spark.hadoop.orc.stripe.size78643200 spark.hadoopRDD.targetBytesInPartition78643200 spark.hadoop.hive.exec.dynamic.partition.modenonstrict spark.sql.sources.partitionOverwriteMode…

華為OD機試 - 剩余銀飾的重量(Java 2024 C卷 100分)

華為OD機試 2024C卷題庫瘋狂收錄中,刷題點這里 專欄導讀 本專欄收錄于《華為OD機試(JAVA)真題(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一題都有詳細的答題思路、詳細的代碼注釋、樣例測試…

【Python】 如何對對象列表進行排序,有點意思

在Python中,我們經常需要對對象列表進行排序,這可以通過多種方式實現。當對象是一個自定義類實例時,排序通常基于對象的一個或多個屬性。Python提供了內置的sorted()函數和列表的sort()方法,它們都允許我們指定一個排序的關鍵字。…

iPhone徹底刪除的照片怎么恢復?專業技巧助您解憂

在使用iPhone的過程中,我們可能會因為誤操作或其他原因將一些重要的照片徹底刪除。然而,即使照片被徹底刪除,也并不意味著它們就永遠消失了,它們只是被打上了“可覆蓋的空間”的標簽。 在照片被新數據覆蓋之前,我們仍…

C語言學習【C控制語句:循環】

C語言學習【C控制語句:循環】 while循環 /* 根據用戶鍵入的整數求和 */#include "stdio.h"int main(void) {long num;long sum 0L; /* 把sum初始化為0 */int status;printf("Please enter an integer to be summed");printf(&quo…

基于微信小程序的校園捐贈系統的設計與實現

校園捐贈系統是一種便捷的平臺,為校園內的各種慈善活動提供支持和便利。通過該系統,學生、教職員工和校友可以方便地進行捐贈,并了解到相關的項目信息和捐助情況。本文將介紹一個基于Java后端和MySQL數據庫的校園捐贈系統的設計與實現。 技術…

Java日期Date和LocalDateTime的工具類

Date package com.qiangesoft.utils.date;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 日期工具類** author lq* date 2024-05-23*/ public class DateUtil {public static final String[] CHINESE_WEEK_DAY new String[]{&q…

Excel 公式積累

1.獲取當前位置的左側單元格 引用當前單元格左側的第一個單元格:OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1) ROW()返回當前單元格的行號,COLUMN()返回當前單元格的列號。 ADDRESS函數可以根據指定行號和列號獲得工作表中的某個單元格的地址。例如…

go全部版本下載目錄

linux安裝教程: Download and install - The Go Programming Language rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gzexport PATH$PATH:/usr/local/go/bin go version 全部版本下載目錄: All releases - Th…

鴻蒙本機通信

demo地址 https://github.com/MartinLi89/WanHarmony 目前只學到一部分,不正確的地方,還望大家指正,我會及時更新,謝謝,歡迎評論留言 線程內通信,線程間通信,進程間通信 本篇帖子中描述的比較寬…