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(机器人流程自动化)技术正以前所未有的速度重塑职场生态。财务对账、报表生成、跨系统数据搬运……这些曾经耗费人…