MySql主從部署

MySql主從部署

1、操作環境

硬件環境:香橙派5 aarch64架構
軟件環境:Ubuntu 22.04.3 LTS
軟件版本:mysql-8.0.42
操作方式:mysql_1,mysql_2容器
主節點:mysql_1
啟動命令:docker run --name mysql_master \-p 3308:3306 \-v /data/Test/mysql_master/data:/var/lib/mysql \-v /data/Test/mysql_master/conf:/etc/mysql/conf.d \-v /data/Test/mysql_master/logs:/var/log/mysql \-v /etc/localtime:/etc/localtime:ro \-e MYSQL_ROOT_PASSWORD=test0123 \-e MYSQL_DATABASE=myappdb \-e MYSQL_USER=myuser \-e MYSQL_PASSWORD=test0123 \--restart=always \-d mysql:8.0.42 \--default-authentication-plugin=mysql_native_password \--character-set-server=utf8mb4 \--collation-server=utf8mb4_unicode_ci從節點:mysql_2
啟動命令:docker run --name mysql_slave \-p 3309:3306 \-v /data/Test/mysql_slave/data:/var/lib/mysql \-v /data/Test/mysql_slave/conf:/etc/mysql/conf.d \-v /data/Test/mysql_slave/logs:/var/log/mysql \-v /etc/localtime:/etc/localtime:ro \-e MYSQL_ROOT_PASSWORD=test0123 \-e MYSQL_DATABASE=myappdb \-e MYSQL_USER=myuser \-e MYSQL_PASSWORD=test0123 \--restart=always \-d mysql:8.0.42 \--default-authentication-plugin=mysql_native_password \--character-set-server=utf8mb4 \--collation-server=utf8mb4_unicode_ci

2、配置操作

2.1、主節點配置

(1)、my.cnf配置(容器/etc/mysql/conf.d/my.cnf,宿主機/data/Test/mysql_master/conf/master.cnf)
[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
# 設置時區
default-time_zone = '+8:00'
#設置密碼驗證規則
authentication_policy=mysql_native_password
# 限制導入和導出的數據目錄
# 為空,不限制導入到處的數據目錄;
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
skip-name-resolve# 開啟logbin
log_bin=binlog
# binlog日志格式
binlog_format=ROW
# mysql主從備份serverId
server_id=1#參數優化,避免mysql占用太多內存
# 減少緩沖池大小
innodb_buffer_pool_size = 64M
# 降低臨時表大小
tmp_table_size = 16M
# 設置最大連接數
max_connections = 10

可選參數

# 0表示讀寫 (主機),1表示只讀(從機)
read-only=0#設置日志文件保留的時長,單位是秒
binlog_expire_logs_seconds=6000#控制單個二進制日志大小。此參數的最大和默認值是1GB
max_binlog_size=20#設置不要復制的數據庫
binlog-ignore-db=test#設置需要復制的數據庫,不寫參數則默認全部記錄,可以填寫多個
binlog-do-db=需要復制的主數據庫名字
例如:
binlog-do-db=dbtest01
binlog-do-db=dbtest02#設置binlog格式
binlog_format=STATEMENT
(2)、主節點數據庫創建用戶
#進入容器內部
docker exec -it mysql_master /bin/bash
#登錄mysql
mysql -u root -p
#查看數據庫
show databases;
#切換到mysql庫
use mysql;
#創建master用戶
create USER 'master'@'%' IDENTIFIED BY 'root';
grant all on *.* to 'master'@'%';
FLUSH PRIVILEGES;

2.2、從節點配置

(1)、server.cnf配置(容器/etc/mysql/conf.d/server.cnf,宿主機的/data/Test/mysql_2/conf/server.cnf)

[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
# 設置時區
default-time_zone = '+8:00'
#設置密碼驗證規則
authentication_policy=mysql_native_password
# 限制導入和導出的數據目錄
# 為空,不限制導入到處的數據目錄;
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake
skip-name-resolve#server_id不要和主庫的server_id相同就行
server_id=2
#一般從數據庫作為讀數據庫
default-storage-engine=MyISAM
(2)、從節點數據庫創建用戶
#進入容器內部
docker exec -it mysql_slave /bin/bash
#登錄mysql
mysql -u root -p
#查看數據庫
show databases;
#切換到mysql庫
use mysql;
#創建slave用戶
create USER 'slave'@'%' IDENTIFIED BY 'root';
grant all on *.* to 'slave'@'%';
FLUSH PRIVILEGES;

2.3、配置數據同步

(1)、登錄master節點數據庫
#查看master節點binlog日志狀態
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |      841 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
(1)、登錄slave節點數據庫
#停止slave
stop slave;#查看master節點binlog日志狀態,MASTER_LOG_FILE、MASTER_LOG_POS根據master數據庫查詢信息配置CHANGE MASTER TO MASTER_HOST = '172.17.0.5', #hostMASTER_PORT = 3306,#MASTER_USER = 'master',#binlogMASTER_PASSWORD = 'passwd',#binlogMASTER_LOG_FILE = 'binlog.000003',#binlog1MASTER_LOG_POS = 841;#啟動slave
start slave;#查看slave庫狀態
mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 172.17.0.5Master_User: slaveMaster_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000003Read_Master_Log_Pos: 841Relay_Log_File: 4b87ab620b91-relay-bin.000002Relay_Log_Pos: 323Relay_Master_Log_File: binlog.000003Slave_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: 841Relay_Log_Space: 540Until_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: 61357c39-2e76-11f0-9f6f-0242ac110005Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica 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: 
1 row in set, 1 warning (0.01 sec)

2.4、測試

(1)、master節點創建測試表及插入數據
mysql -u root -h 127.0.0.1 -p -P3308#登錄master節點創建簡單數據表
CREATE TABLE `test` (`id` int NOT NULL AUTO_INCREMENT,`Test_str` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;mysql> show tables;
+-------------------+
| Tables_in_myappdb |
+-------------------+
| test              |
+-------------------+
1 row in set (0.00 sec)mysql> select * from test;
Empty set (0.00 sec)mysql> INSERT INTO test (Test_str) VALUES( '1');
Query OK, 1 row affected (0.02 sec)mysql> select * from test;
+----+----------+
| id | Test_str |
+----+----------+
|  1 | 1        |
+----+----------+
1 row in set (0.00 sec)
(2)、slave節點查看數據同步
mysql -u root -h 127.0.0.1 -p -P3309mysql> use myappdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+-------------------+
| Tables_in_myappdb |
+-------------------+
| test              |
+-------------------+
1 row in set (0.01 sec)mysql> select * from test;
+----+----------+
| id | Test_str |
+----+----------+
|  1 | 1        |
+----+----------+
1 row in set (0.01 sec)

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

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

相關文章

Redis——Redis進階命令集詳解(下)

本文詳細介紹了Redis一些復雜命令的使用,包括Redis事務相關命令,如MULTI、EXEC、DISCARD 和 WATCH ,發布訂閱操作命令,如PUBLISH 、SUBSCRIBE 、PSUBSCRIBE ,BitMap操作命令,如SETBIT、GETBIT、BITCOUNT、BITOP,HyperL…

C#使用socket報錯 System.Net.Sockets.SocketException:“在其上下文中,該請求的地址無效。

bind: 在其上下文中,該請求的地址無效。問題定位 程序中運行socket服務端程序時,綁定的IP地址無效,即請求的IP地址在你的機子上找不到。原因有以下幾種可能: 1)server端綁定的IP地址不是本機的IP地址。 2)之…

計算機底層入門 05 匯編學習環境通用寄存器內存

2.3 匯編學習環境我們通過上一章筆記,得知 計算機好像 只會通過位運算 進行 數字的加法。 而機器語言的魅力就是 位運算,解析規則。它們也都是通過 電路 來進行實現的。這就是 計算機最底層的本質了!!! 匯編語言 所謂的…

Java學習---Spring及其衍生(上)

在 Java 開發領域,Spring 生態占據著舉足輕重的地位。從最初的 Spring 框架到后來的 SpringBoot、SpringMVC 以及 SpringCloud,每一個組件都在不同的場景下發揮著重要作用。本文將深入探討這幾個核心組件,包括它們的定義、原理、作用、優缺點…

LVGL應用和部署(個人開發嵌入式linux產品)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】隨著經濟越來越走向常態化發展,將來的公司基本是兩個趨勢,一個是公司越做越大,越來越趨向于壟斷;另外…

CPU,減少晶體管翻轉次數的編碼

背景 以4比特為單位,共16個數。仔細思考狀態轉換過程中的晶體管翻轉次數。 0000 0001,1 0010,2 0011,1 0100,3 0101,1 0110,2 0111,1 1000,4 1001,1 1010&…

LLM 中的 溫度怎么控制隨機性的?

LLM 中的 溫度怎么控制隨機性的? 在LLM的解碼過程中,溫度(Temperature)通過調整token概率分布的“陡峭程度”來控制隨機性:溫度越低,概率分布越陡峭(高概率token的優勢越明顯),隨機性越低;溫度越高,分布越平緩(高低概率token的差異被縮小),隨機性越高。 溫度,…

freemodbus使用

文章目錄? **CubeMX配置**1. UART配置(RS485通信)2. Timer配置(RTU字符間隔檢測)3. GPIO配置(RS485方向控制)? **STM32F103 RS485 FreeModbus RTU 配置概覽****1?? CubeMX硬件配置****2?? FreeModb…

【Ansible】Ansible 管理 Elasticsearch 集群啟停

一、集群節點信息 通過 Ansible inventory 定義的集群節點分組如下:[es](Elasticsearch 節點) 192.168.100.150192.168.100.151192.168.100.152[logstash](Logstash 節點) 192.168.100.151[kibana](Kibana …

Effective Python 第15條 不要過分依賴給字典添加條目時所用的順序

引言:字典順序的重要性 在Python編程中,字典(dict)是一種常用的數據結構,用于存儲鍵值對。然而,字典的迭代順序問題常常困擾著開發者。從Python 3.7開始,字典保證了鍵的插入順序,這一…

事務隔離級別和傳播方式

事務隔離級別 事務隔離級別是數據庫系統中控制事務間相互影響程度的重要機制。不同的隔離級別在數據一致性保證和系統性能之間提供不同的權衡選擇。下面我將詳細解析四種標準隔離級別、它們能解決的問題以及可能存在的并發問題。 一、四種標準隔離級別 1. 讀未提交 (Read Uncom…

不同地區的主要搜索引擎工具

研究seo,想匯總一下不同國家的搜索引擎工具,順帶了解一下這些公司提供的服務。 韓國:NAVER——>LINE 日本: 我還不知道,如果你知道可以評論告訴我 俄羅斯:yandex yandex有點像本土化的google 搜索引擎 郵箱 網盤 在…

實操:AWS CloudFront的動態圖像轉換

概述 適用于 Amazon CloudFront 的動態圖像轉換(前身為無服務器圖像處理器),通過 Amazon CloudFront 的全球內容分發網絡(CDN)實現實時圖像處理。此 AWS 解決方案可幫助您優化視覺內容交付,同時顯著降低運營…

Spring Boot 實戰詳解:從靜態資源到 Thymeleaf 模板引擎

Spring Boot 憑借其 "約定大于配置" 的理念,極大簡化了 Java 應用開發流程。本文將從 Spring Boot 核心特性出發,詳細解析靜態資源映射規則、Thymeleaf 模板引擎的使用,并結合完整實戰案例,幫助開發者快速上手 Spring B…

docker的鏡像與推送

docker build# 1. 基本構建命令(使用當前目錄的 Dockerfile) docker build .# 2. 指定 Dockerfile 路徑和構建上下文 docker build -f /path/to/Dockerfile /path/to/build/context# 3. 為鏡像設置名稱和標簽 docker build -t my-image:latest .# 4. 設置…

計算機網絡學習----域名解析

在互聯網世界中,我們習慣通過域名(如www.example.com)訪問網站,而非直接記憶復雜的 IP 地址(如 192.168.1.1)。域名與 IP 地址之間的轉換過程,就是域名解析。它是互聯網通信的基礎環節&#xff…

構建高性能推薦系統:MixerService架構解析與核心實現

——深入剖析推薦服務的分層設計、工作流引擎與高可用策略 一、整體架構與分層設計 該推薦服務采用經典分層架構模式?7,各層職責清晰: ?HTTP接口層? 支持 GET/POST 請求解析,自動映射參數到 RcmdReq 協議對象統一錯誤處理:參…

【安全漏洞】隱藏服務器指紋:Nginx隱藏版本號配置修改與重啟全攻略

?? 隱藏服務器指紋:Nginx配置修改與重啟全攻略 你是否知道,默認情況下Nginx會在HTTP響應頭中暴露版本號?這個看似無害的Server: nginx/1.x.x字段,實則可能成為黑客的"藏寶圖"。今天我們就來揭秘如何通過簡單配置提升服務器安全性,并手把手教你完成Windows環境…

構建RAG智能體(2):運行狀態鏈

在現代AI應用開發中,如何讓聊天機器人具備記憶能力和上下文理解是一個核心挑戰。傳統的無狀態對話系統往往無法處理復雜的多輪對話場景,特別是當用戶需要提供多種信息來完成特定任務時。 本文就來討論一下如何利用runnable來編排更有趣的語言模型系統&a…

RPA認證考試全攻略:如何高效通過uipath、實在智能等廠商考試

rpa認證考試有什么作用?數字洪流席卷全球,企業效率之爭已進入秒級戰場。當重復性工作吞噬著創造力,RPA(機器人流程自動化)技術正以前所未有的速度重塑職場生態。財務對賬、報表生成、跨系統數據搬運……這些曾經耗費人…