基于 docker 的mysql 5.7 主备集群搭建

news2025/2/5 7:39:43

创建挂载目录和配置文件

  • 主节点
mkdir -p /mysql_master/mysql/log
mkdir -p /mysql_master/mysql/data
mkdir -p /mysql_master/mysql/conf
vim /mysql_master/mysql/conf/my.cnf
[mysqld]
datadir=/var/lib/mysql #MySQL 数据库文件存放路径
server_id = 1 #指定数据库服务器的唯一标识。同一个复制组下的所有实例的server_id都必须唯一
log-bin= mysql-bin #开启MySQL的bin log日志功能,自定义的值将作为bin log的名称的前缀信息
binlog_ignore_db=mysql #设置不需要同步的库(多个数据库设置可以写多行)
binlog_ignore_db=sys
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
# binlog_do_db #设置需要同步的库(多个数据库设置可以写多行)
relay_log_recovery=on #当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。
read-only=0 #1表示将MySQL设置为只读状态
relay_log=mysql-relay-bin 
sync_binlog=1 #事务提交后立即写入二进制日志,而不是放内存中,避免主服务器故障时事务没有写入日志,最好设为1,但是插入速度很慢,该参数的有效值为0 、1、N, 默认:0 查询语句: select @@sync_binlog;
innodb_flush_log_at_trx_commit=1 #每次事务提交后立即将日志写入磁盘的配置 默认:1 查询语句: select @@innodb_flush_log_at_trx_commit;
log-slave-updates=on
auto-increment-offset=1 #自增值
auto-increment-increment=2 #漂移值,也就是步长(也就是你准备搞几个实例)
binlog_cache_size=100M #日志的缓存大小
binlog_format=mixed #设置bin-log日志文件格式为:mixed,防止主键重复
expire_logs_days=7 #设置bin-log日志文件保存的天数
slave_skip_errors=ddl_exist_errors,1032 #slave_skip_errors选项有四个可用值,分别为:off,all,ErorCode,ddl_exist_errors。
master_info_repository=table
relay_log_info_repository=table
slave-parallel-type=LOGICAL_CLOCK #DATABASE:默认值,基于库的并行复制方式 LOGICAL_CLOCK:基于组提交的并行复制方式
slave-parallel-workers=20
max_allowed_packet=1024M
log-bin-trust-function-creators=1
max_connections=1000
max_user_connections=500
wait_timeout=31536000
interactive_timeout=31536000
sql_mode =STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
  • 从节点
mkdir -p /mysql_slave/mysql/log
mkdir -p /mysql_slave/mysql/data
mkdir -p /mysql_slave/mysql/conf
vim /mysql_slave/mysql/conf/my.cnf
[mysqld]
datadir=/var/lib/mysql #MySQL 数据库文件存放路径
server_id = 2 #指定数据库服务器的唯一标识。同一个复制组下的所有实例的server_id都必须唯一
log-bin= mysql-bin #开启MySQL的bin log日志功能,自定义的值将作为bin log的名称的前缀信息
replicate_ignore_db=mysql #设置不需要同步的库
replicate_ignore_db=sys
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
# replicate_do_db #设置需要同步的库
# replicate_ignore_table #设置不需要同步的表
# replicate_do_table #设置需要同步的表
relay_log_recovery=on #当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。
read-only=1 #1表示将MySQL设置为只读状态
relay_log=mysql-relay-bin 
sync_binlog=1 #事务提交后立即写入二进制日志,而不是放内存中,避免主服务器故障时事务没有写入日志,最好设为1,但是插入速度很慢,该参数的有效值为0 、1、N, 默认:0 查询语句: select @@sync_binlog;
innodb_flush_log_at_trx_commit=1 #每次事务提交后立即将日志写入磁盘的配置 默认:1 查询语句: select @@innodb_flush_log_at_trx_commit;
log-slave-updates=on
auto-increment-offset=1 #自增值
auto-increment-increment=2 #漂移值,也就是步长(也就是你准备搞几个实例)
binlog_cache_size=100M #日志的缓存大小
binlog_format=mixed #设置bin-log日志文件格式为:mixed,防止主键重复
expire_logs_days=7 #设置bin-log日志文件保存的天数
slave_skip_errors=ddl_exist_errors,1032 #slave_skip_errors选项有四个可用值,分别为:off,all,ErorCode,ddl_exist_errors。
master_info_repository=table
relay_log_info_repository=table
slave-parallel-type=LOGICAL_CLOCK #DATABASE:默认值,基于库的并行复制方式 LOGICAL_CLOCK:基于组提交的并行复制方式
slave-parallel-workers=20
max_allowed_packet=1024M
log-bin-trust-function-creators=1
max_connections=1000
max_user_connections=500
wait_timeout=31536000
interactive_timeout=31536000
sql_mode =STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

Mysql 容器启动

  • 拉取镜像
docker pull mysql:5.7
  • 启动主节点
docker run -p 33061:3306 --name mysql_master \
-v /mysql_master/mysql/log:/var/log/mysql \
-v /mysql_master/mysql/data:/var/lib/mysql \
-v /mysql_master/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
  • 启动从节点
docker run -p 33062:3306 --name mysql_slave \
-v /mysql_slave/mysql/log:/var/log/mysql \
-v /mysql_slave/mysql/data:/var/lib/mysql \
-v /mysql_slave/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
--restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

Mysql主从复制设置

主节点设置
  • 进入容器
docker exec -it mysql_master /bin/bash
  • 连接mysql
mysql -uroot -p123456
  • 设置主备同步的专用帐号
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
  • 刷新权限
flush privileges;
  • 查看用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 
  • 查询master的状态,记录File、Position的值,File表示当前日志文件名称,Position表示当前日志的位置,用于从节点日志同步
show master status;
从节点设置
  • 进入容器
docker exec -it mysql_slave /bin/bash
  • 连接mysql
mysql -uroot -p123456
  • 设置主节点连接,master_host为主节点容器IP(docker inspect mysql_master查看ip),master_user为主备账号,master_password为主备账号密码,master_log_file和master_log_pos为主节点容器中通过show master status查出来的File和Position值
change master to master_host='172.18.0.2',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=600;
  • 启动同步
start slave; 
  • 查看从节点状态
show slave status\G;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2292192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

金山打字游戏2010绿色版,Win7-11可用DxWnd完美运行

金山打字游戏2010绿色版,Win7-11可用DxWnd完美运行 链接:https://pan.xunlei.com/s/VOIAYCzmkbDfdASGJa_uLjquA1?pwd67vw# 进入游戏后,如果输入不了英文字母(很可能是中文输入状态),就按一下“Shift”键…

爬虫学习笔记之Robots协议相关整理

定义 Robots协议也称作爬虫协议、机器人协议,全名为网络爬虫排除标准,用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件,一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…

(10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例

(1) 先介绍下后面的代码里要用到的基础函数: 以及: (2) 接着给出现代版的 读写 socket 参数的系统函数 : 以及: (3) 给出 一言的 范例代码,获取…

【玩转 Postman 接口测试与开发2_016】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(上)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证1 契约测试的概念2 契约测试的工作原理3 契约测试的分类4 DeepSeek 给出的契约测试相关背景5 契约测试在 Postman 中的创建方法6 API 实例的基本用法7 API 实例的类型实…

day8-面向对象

目录 面向对象1、面向对象介绍2、类和对象类和对象类的几个补充注意事项 3、封装 面向对象 1、面向对象介绍 ⭐️面向对象介绍: 面向:拿、找对象:能干活的东西面向对象编程:拿东西过来做对应的事情 面向对象编程的例子&#x…

【Java】位图 布隆过滤器

位图 初识位图 位图, 实际上就是将二进制位作为哈希表的一个个哈希桶的数据结构, 由于二进制位只能表示 0 和 1, 因此通常用于表示数据是否存在. 如下图所示, 这个位图就用于标识 0 ~ 14 中有什么数字存在 可以看到, 我们这里相当于是把下标作为了 key-value 的一员. 但是这…

【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

文章目录 介绍GloVe 介绍核心思想共现矩阵1. 共现矩阵的定义2. 共现概率矩阵的定义3. 共现概率矩阵的意义4. 共现概率矩阵的构建步骤5. 共现概率矩阵的应用6. 示例7. 优缺点优点缺点 **总结** 目标函数训练过程使用预训练的GloVe词向量 优点应用总结 个人主页:道友老…

如何获取sql数据中时间的月份、年份(类型为date)

可用自带的函数month来实现 如: 创建表及插入数据: create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份: select MONTH(begindate)…

NSSCTF Pwn [NISACTF 2022]ezpie 题解

下载 exeinfo checksec 32位 NX PIE开启 查看main函数: 后门函数: 发现已经给出了main函数地址 因为开启了PIE 所以IDA中 后门函数减去main函数的后三位就是偏移 给出的函数加上这个数就是后门函数地址 exp: from pwn import *p remote(…

【01】共识机制

BTF共识 拜占庭将军问题 拜占庭将军问题是一个共识问题 起源 Leslie Lamport在论文《The Byzantine Generals Problem》提出拜占庭将军问题。 核心描述 军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。随着…

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…

【R语言】环境空间

一、环境空间的特点 环境空间是一种特殊类型的变量,它可以像其它变量一样被分配和操作,还可以以参数的形式传递给函数。 R语言中环境空间具有如下3个特点: 1、对象名称唯一性 此特点指的是在不同的环境空间中可以有同名的变量出现&#x…

惰性函数【Ⅱ】《事件绑定的自我修养:从青铜到王者的进化之路》

【Ⅱ】《事件绑定的自我修养:从青铜到王者的进化之路》 1. 代码功能大白话(给室友讲明白版) // 青铜写法:每次都要问浏览器"你行不行?" function addEvent青铜版(element, type, handler) {if (window.add…

Vue3的el-table-column下拉输入实时查询API数据选择的实现方法

由于本人对el-table-column有下拉输入选择的要求&#xff0c;根据网上搜索的资料及本人优化&#xff0c;推出我比较满意的方法&#xff0c;供各位读者参考使用。 效果图 el-table-column写法 <el-table-columnlabel"货品编号"align"center"prop"…

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程

本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练&#xff0c;数据集是自制图像数据。废话不多说&#xff0c;下面进入训练步骤教程。 注&#xff1a;本人使用linux服务器进行展示&#xff0c;Windows环境大差不差。另外&#xff0…

RFID涉密载体管控系统|支持国产化、自主研发

涉密载体管理系统DW-S402是一套成熟系统&#xff0c;是用于对各种涉密载体进行有效管理&#xff0c;实现对载体的智能化、规范化、标准化管理&#xff0c;广泛应用于保密、机要单位以及企事业单位等有载体保管需求的行业。 用户为对文件资料、存储介质等管理严格的单位&#x…

BUU14 [极客大挑战 2019]PHP1

用dirsearch扫描文件&#xff0c;扫了一万年什么也没扫出来 从网上看的wp&#xff0c;他们扫出来www.zip 这里直接用上了&#xff0c;以后有空再扫一遍 下载www.zip 在index.php中 说明要输入select 打开class.php <?php include flag.php;error_reporting(0);class…

数据分析师使用Kutools for Excel 插件

数据分析师使用Kutools for Excel 插件 Kutools for Excel 是一款功能强大的 Excel 插件&#xff0c;旨在提高 Excel 用户的工作效率&#xff0c;简化复杂的操作。它提供了超过 300 个增强功能&#xff0c;帮助用户快速完成数据管理、格式化、排序、分析等任务&#xff0c;特别…

【高级篇 / IPv6】(7.2) ❀ 04. 在60E上配置ADSL拨号宽带上网(IPv4) ❀ FortiGate 防火墙

【简介】除了单位用户以外&#xff0c;大部分个人用户目前使用的仍然是30E、50E、60E系列防火墙&#xff0c;固件无法达到目前最高版本7.6&#xff0c;这里以最常用的60E为例&#xff0c;演示固件版本7.2下实现ADSL拨号宽带的IPv6上网。由于内容比较多&#xff0c;文章分上、下…

基于LMS算法的自适应滤波器设计与MATLAB实现

1. 引言 自适应滤波器是信号处理领域的重要工具&#xff0c;能够根据输入信号的统计特性自动调整滤波器参数。其中&#xff0c;最小均方&#xff08;LMS&#xff09;算法因其计算简单、易于实现的特点&#xff0c;成为最常用的自适应滤波算法之一&#xff0c;广泛应用于噪声消…