阿里云服務器環境部署 四 MySQL主從配置

安裝MySQL?
?

導入mysql鏡像

docker load -i /opt/dockerinstall/mysql/mysql-8.1.0.tar

docker run --privileged=true --name mysql8 --restart=unless-stopped -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf/:/etc/mysql/conf.d -v /usr/local/mysql/mysql-files:/var/lib/mysql-files -d mysql:latest

docker ps

在容器中登錄mysql

docker exec -it mysql8 /bin/bash
?mysql -u root -p123456

對root用戶進行本地授權和配置密碼

use mysql

update user set host = '%' where user = 'root' and host='localhost';

grant all PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;

select host,user from user where user = 'root';

flush privileges;

ALTER user 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;



mysql> exit;
Bye
bash-4.4# exit;

安裝mysql 客戶端?
sudo yum install -y mysql


可以訪問了
創建數據庫

create database?business_chatgpt;
?

導入表結構:

mysql -uroot -h172.16.108.44 -P3306 -p***** business_chatgpt < /opt/dockerinstall/mysql/table.sql

MySQL主從配置


由于擔心單點的mysql會有風險,所以需要部署一個mysql 的slave
由于已經在44上部署了mysql,所以只能修改配置后在43上再部署一個mysql的從庫

?

第一步:修復主庫配置

你的現有主庫容器?缺少關鍵的主從復制配置,需要補充以下內容:

1. 創建主庫配置文件

在44宿主機?/usr/local/mysql/conf?目錄下創建?my.cnf?文件:
?

[mysqld]
# 主庫核心配置
# 主庫唯一標識(必須)
server-id = 1
# 二進制日志配置(必須)
log-bin = mysql-bin
# 推薦使用ROW模式保證數據一致性
binlog_format = ROW# GTID 配置(MySQL 8 推薦)
# 開啟全局事務標識
gtid_mode = ON
# 強制GTID一致性
enforce_gtid_consistency = ON# 允許所有IP連接(生產環境建議限制IP)
bind-address = 0.0.0.0
port = 3306# 日志管理
# 7天 日志生命周期
binlog_expire_logs_seconds = 604800 
# 單個binlog文件大小
max_binlog_size = 2G
# 每個連接binlog緩存
binlog_cache_size = 2M# 性能優化
# 平衡性能與可靠性
innodb_flush_log_at_trx_commit = 2
# 降低磁盤同步頻率
sync_binlog = 1000

docker ps?



2. 重啟主庫容器
docker restart mysql8

?

第二步:創建主庫復制賬號
?

mysql -uroot -h172.16.108.44 -P3306 -p*****? ? // 登錄mysql
?

-- 執行 SQL
CREATE USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'Replica*****';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;

第三步:準備從庫容器

在43服務器上

導入mysql鏡像

docker load -i /data/dockerinstall/mysql/mysql-8.1.0.tar

1. 創建從庫配置文件

mkdir -p /usr/local/mysql/{conf,data,logs,mysql-files}

chmod -R 777 /usr/local/mysql

在宿主機?/usr/local/mysql/conf?目錄下創建?my.cnf

[mysqld]
# 必須全局唯一
server-id = 2
relay-log = relay-bin
read_only = ON
super_read_only = ON# 安全增強
skip_name_resolve = ON
log_bin_trust_function_creators = ON# 性能優化
innodb_buffer_pool_size = 1G  # 根據內存調整
sync_binlog = 1000
innodb_flush_log_at_trx_commit = 2



啟動命令
?

docker run --privileged=true --name mysql8-slave --restart=unless-stopped -e MYSQL_ROOT_PASSWORD=***** -p 3306:3306 -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf/:/etc/mysql/conf.d -v /usr/local/mysql/mysql-files:/var/lib/mysql-files -d mysql:latest

docker ps

1. 主庫創建數據快照(主庫機器)

docker exec mysql8 mysqldump -uroot -p****? --all-databases ?--single-transaction ?--master-data=2 ?--flush-logs ?--hex-blob ? --set-gtid-purged=ON ?> master_full_$(date +%F).sql

scp master_full_2025-03-19.sql root@bigdata43:/data/dockerinstall/mysql/

3. 從庫機器導入數據
?

# 導入數據
docker exec -i mysql8-slave mysql -uroot -p**** < /data/dockerinstall/mysql/master_full_2025-03-19.sql


?

四、配置主從復制

1. 獲取主庫連接信息
# 主庫機器執行
docker exec mysql8 mysql -uroot -p**** -e "SHOW MASTER STATUS\G"

記錄:

  • File:?mysql-bin.00000X

  • Position:?XXX

  • 或使用 GTID 自動定位
    ?

2. 配置復制通道(從庫機器)
docker exec -it mysql8-slave mysql -uroot -p123456CHANGE MASTER TO
MASTER_HOST='172.16.108.44',
MASTER_PORT=3306,
MASTER_USER='replica',
MASTER_PASSWORD='Replica@1234',
MASTER_AUTO_POSITION=1,
MASTER_CONNECT_RETRY=10,
GET_MASTER_PUBLIC_KEY=1;--------------------------------------------------
遇到問題:
問題1:
ERROR 1777 (HY000): CHANGE REPLICATION SOURCE TO SOURCE_AUTO_POSITION = 1 cannot be executed because @@GLOBAL.GTID_MODE = OFF.
參考:Mysql8 MHA高可用搭建之主從復制配置-CSDN博客

1.在所有主從實例結構中執行:
set?global?ENFORCE_GTID_CONSISTENCY = WARN;
##說明,這是一個警告模式,如果有還沒有執行完的sql
2.如果沒有警告,所有實例中執行:
set global ENFORCE_GTID_CONSISTENCY = ON;
主:

從:

3.在所有實例中執行:
set global GTID_MODE = OFF_PERMISSIVE;

4.在所有實例中執行:
set global GTID_MODE = ON_PERMISSIVE;

5,在所有主從實例中執行,檢查是否還有事務沒有結束:
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
#注意value一定要為0

6.檢查slave的binlog點位,如果還沒有應用完binlog,則需等待
show slave status\G;

7.在所有實例中執行:
set global GTID_MODE = ON;

?

8、再次執行上面的sql就ok

------------------------------------------------------------------------------------------------------------

?

六、驗證與監控
?



安裝mysql 客戶端?
sudo yum install -y mysql

1. 基礎驗證
docker exec mysql8-slave mysql -uroot -p123456 -e "SHOW SLAVE STATUS\G" | grep -E 'Running|Behind|Error'
期望輸出:

2、在從庫執行
SHOW SLAVE STATUS\G;

三、GTID 深度驗證

1. 對比主從 GTID 集合
?

主庫執行
SELECT @@GLOBAL.gtid_executed AS master_gtid;

從庫執行
SELECT @@GLOBAL.gtid_executed AS slave_gtid;

正常情況
從庫的?slave_gtid?應包含主庫的?master_gtid,且兩者差異僅為主庫新產生的事務。

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

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

相關文章

[RH342]iscsi配置與排錯

[RH342]iscsi配置與排錯 1. 服務端配置1.1 安裝targetcli1.2 準備磁盤1.3 服務端配置1.4 防火墻配置 2. 客戶端配置2.1 安裝客戶端軟件2.2 配置客戶端2.3 連接登錄服務端2.4 掛載使用 3. 安全驗證擴展3.1 服務端3.2 客戶端 4. 常見的排錯點4.1 服務端常見錯誤4.2 客戶端常見錯誤…

服裝零售行業數字化時代的業務與IT轉型規劃P111(111頁PPT)(文末有下載方式)

服裝零售行業數字化時代的業務與IT轉型規劃P111 詳細資料請看本解讀文章的最后內容。 隨著數字化技術的迅猛發展&#xff0c;服裝零售行業正經歷著前所未有的變革。本文將對《服裝零售行業數字化時代的業務與IT轉型規劃P111》進行詳細解讀&#xff0c;探討未來幾年內該行業的…

基于javaweb的SSM+Maven寵物領養寵物商城流浪動物管理系統與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

PostgreSQL 數據庫中導入大量數據

在 PostgreSQL 數據庫中導入大量數據,可根據數據來源和格式選擇不同的方法。以下為你詳細介紹幾種常見的方式: 1. 使用 COPY 命令(適用于本地數據文件) COPY 命令是 PostgreSQL 內置的高效數據導入工具,適合處理本地的數據文件。 步驟 準備數據文件 確保你的數據文件格…

C++語法之命名空間二

A.h頭文件中代碼&#xff1a; namespace a {void 輸出(); }; A.cpp源文件中代碼&#xff1a; #include <iostream> #include "A.h" void a::輸出() {std::cout << "A.h里的輸出函數" << std::endl; } B.h頭文件中代碼&#xff1a; …

基于FPGA的DDS連續FFT 仿真驗證

基于FPGA的 DDS連續FFT 仿真驗證 1 摘要 本文聚焦 AMD LogiCORE IP Fast Fourier Transform (FFT) 核心,深入剖析其在 FPGA 設計中的應用。該 FFT 核心基于 Cooley - Tukey 算法,具備豐富特性,如支持多種數據精度、算術類型及靈活的運行時配置。文中詳細介紹了其架構選項、…

美團Leaf分布式ID生成器使用教程:號段模式與Snowflake模式詳解

引言 在分布式系統中&#xff0c;生成全局唯一ID是核心需求之一。美團開源的Leaf提供了兩種分布式ID生成方案&#xff1a;號段模式&#xff08;高可用、依賴數據庫&#xff09;和Snowflake模式&#xff08;高性能、去中心化&#xff09;。本文將手把手教你如何配置和使用這兩種…

Swift 并發任務的協作式取消

在 Swift 并發&#xff08;Swift Concurrency&#xff09;中&#xff0c;任務&#xff08;Task&#xff09;不會被強行終止&#xff0c;而是采用**協作式取消&#xff08;cooperative cancellation&#xff09;**機制。這意味著任務會被標記為“已取消”&#xff0c;但是否真正…

大數據(1.1)紐約出租車大數據分析實戰:從Hadoop到Azkaban的全鏈路解析與優化

目錄 一、背景與數據價值? ?二、技術選型與組件分工? ?三、數據準備與預處理? 四、實戰步驟詳解? ?1. 數據上傳至HDFS ?2. Hive數據建模與清洗? 4?.2.1 建表語句&#xff08;分區表按年份&#xff09;?&#xff1a; ?4?.2.2 數據清洗&#xff08;剔除無效…

代碼隨想錄刷題day50|(回溯算法篇)131.分割回文串▲

目錄 一、回溯算法基礎知識 二、分割回文串思路 2.1 如何切割 2.2 判斷回文 2.3 回溯三部曲 2.4 其他問題 三、相關算法題目 四、總結 一、回溯算法基礎知識 詳見&#xff1a;代碼隨想錄刷題day46|&#xff08;回溯算法篇&#xff09;77.組合-CSDN博客 二、分割回文…

VS Code PowerShell、Windows PowerShell、CMD 的區別與聯系

VS Code PowerShell、Windows PowerShell、CMD 的區別與聯系? VS Code PowerShell、Windows PowerShell、CMD 的區別與聯系&#xff1a; 一、核心概念對比 名稱 全稱 類型 定位 VS Code PowerShell Visual Studio Code PowerShell 代碼編輯器集成終端 開發/腳本編寫…

關于Unity的CanvasRenderer報錯

MissingReferenceException: The object of type ‘CanvasRenderer’ has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.UI.GraphicRaycaster.Raycast (UnityEng…

C++編譯流程

編譯器其實就是一個翻譯器&#xff0c;把我們的文件內容翻譯成機器能夠看懂的指令&#xff0c;但如何合理翻譯是核心。 C語言編譯 需要經過以下幾步&#xff1a; 詞法分析&#xff1a;掃描代碼&#xff0c;確定單詞類型&#xff0c;比如是變量還是函數&#xff0c;是標識符還…

python學智能算法(八)|決策樹

【1】引言 前序學習進程中&#xff0c;已經對KNN鄰近算法有了探索&#xff0c;相關文章鏈接為&#xff1a; python學智能算法&#xff08;七&#xff09;|KNN鄰近算法-CSDN博客 但KNN鄰近算法有一個特點是&#xff1a;它在分類的時候&#xff0c;不能知曉每個類別內事物的具…

使用 OpenCV 拼接進行圖像處理對比:以形態學操作為例

圖像處理在計算機視覺中起著至關重要的作用&#xff0c;而 OpenCV 作為一個強大的圖像處理庫&#xff0c;提供了豐富的函數來實現各類圖像處理任務。形態學操作&#xff08;Morphological Operations&#xff09;是其中常用的技術&#xff0c;尤其適用于二值圖像的處理。常見的…

版本控制器Git ,Gitee如何連接Linux Gitee和Github區別

&#x1f4d6; 示例場景 假設你和朋友在開發一個「在線筆記網站」&#xff0c;代碼需要頻繁修改和協作&#xff1a; 只用本地文件管理 每次修改后手動復制文件&#xff0c;命名為 v1.html、v2.html 問題&#xff1a;無法追蹤具體改動內容&#xff1b;多人修改易沖突&#xff1…

使用DeepSeek翻譯英文科技論文,以MarkDown格式輸出,使用Writage 3.3.1插件轉換為Word文件

一、使用DeepSeek翻譯英文科技論文&#xff0c;以MarkDown格式輸出 以科技論文“Electrical Power System Sizing within the Numerical Propulsion System Simulation”為例。 關于Writage 3.3.1的進一步了解&#xff0c;可發送郵件至郵箱pyengine163.com. 首先&#xff0c;打…

【NPU 系列專欄 3.0 -- scale-out 和 scale-in 和 scale-up 和 scale-down

文章目錄 Overview1. Scale-out 和 Scale-in (橫向擴展/縮減)舉例:AI SoC 中的 Scale-out 和 Scale-in2. Scale-up 和 Scale-down (縱向擴展/縮減)舉例:AI SoC 中的 Scale-up 和 Scale-down對比總結Overview 本文會 以 AI SoC 為例 詳細介紹什么是 scale-out 和 scale-i…

Spring Boot 集成 Quartz 實現定時任務(Cron 表達式示例)

Spring Boot 集成 Quartz 實現定時任務&#xff08;Cron 表達式示例&#xff09; 前言1. 添加 Quartz 依賴2. 創建 Quartz 任務3. 配置 Quartz 任務調度4. 啟動 Spring Boot 觀察定時任務執行5. Quartz Cron 表達式詳解6. 結論 前言 在 Spring Boot 項目中&#xff0c;我們經常…

智能汽車圖像及視頻處理方案,支持視頻智能拍攝能力

美攝科技&#xff0c;作為智能汽車圖像及視頻處理領域的先行者&#xff0c;憑借其卓越的技術實力和前瞻性的設計理念&#xff0c;為全球智能汽車制造商帶來了一場視覺盛宴的革新。我們自豪地推出——美攝科技智能汽車圖像及視頻處理方案&#xff0c;一個集高效性、智能化、畫質…