docker容器下mysql主从配置

article/2025/9/21 4:13:21

docker容器下mysql主从配置

知道的太多所以痛苦


文章目录

  • docker容器下mysql主从配置
  • 前言
  • 一、安装好docker容器
  • 二、docker配置mysql主从
    • 1.拉取mysql5.7
    • 2.运行mysql镜像
    • 3.配置my.cnf文件
    • 4.重启mysql主从数据库
    • 5.从数据库开启同步
  • 总结


前言

基于docker容器安装mysql并且配置主从(项目中可用于读写分离)


一、安装好docker容器

linux下安装docker

二、docker配置mysql主从

1.拉取mysql5.7

代码如下(示例):

docker pull mysql:5.7

2.运行mysql镜像

mysql主容器:

docker run -p 3306:3306 --name mysql-master  -v /mydata/mysql-master/conf:/etc/mysql/conf.d -v /mydata/mysql-master/logs:/logs -v /mydata/mysql-master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

mysql从容器:

docker run -p 3307:3306 --name mysql-slave  -v /mydata/mysql-slave/conf:/etc/mysql/conf.d -v /mydata/mysql-slave/logs:/logs -v /mydata/mysql-slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

3.配置my.cnf文件

在/mydata/mysql-master/conf下创建my.cnf文件:

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=103
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 指定需要同步的数据库名称  #binlog-do-db=
## 开启二进制日志功能  
#记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故 障时数据的无损失恢复。
log-bin=mall-mysql-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
#statement 记录所有的写操作到bin-log文件 缺点:sql语句执行set time=now() 会出现主从不一致  
#row 记录每行的变换  缺点:数据量大的时候,记录数据多
#mixed是statement和row的混合  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062#通用查询日志
#记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令, 对我们复原操作的实际场
#景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
general_log=ON  
general_log_file=/var/lib/mysql/mysql-general.log #慢查询日志
#记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
slow_query_log=ON 
slow_query_log_file=/var/lib/mysql/mysql-slow.log 
long_query_time=3 
#设置慢查询的阈值为3秒,超出此设定值的SQL即被记录到慢查询日志
log_output=FILE
max_allowed_packet=200M#错误日志
#记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的 状态,从而对服务器进行维护。
log-error=/var/lib/mysql/mysql-error.log

在/mydata/mysql-slave/conf下创建my.cnf文件:

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=104
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql  
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin  
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M  
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed  
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7  
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=all # relay_log配置中继日志
#用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。 从服务器通过读取中继#日志的内容,来同步主服务器上的操作。
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1

4.重启mysql主从数据库

在这里插入图片描述

此时可以在主数据库中查看同步状态

+-------------------+----------+--------------+------------------+-------------------+
| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mall-mysql-bin.000001 |      154 |              |      mysql       |                   |
+-------------------+----------+--------------+------------------+-------------------+

5.从数据库开启同步

使用上一步的position ,进行关联主数据库

change master to master_host='192.168.52.129', master_user='root', master_password='root', master_port=3306, master_log_file='mall-mysql-bin.000001', master_log_pos=154, master_connect_retry=30;

开启同步

start slave

查看slave状态
在这里插入图片描述

如果发现Slave_SQL_Running: No,这地方必须是两个yes才可以同步。

执行以下即可:STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; 
START SLAVE;

总结

以上即是docker下进行mysql主从复制的配置。


http://chatgpt.dhexx.cn/article/jPJRtg0D.shtml

相关文章

Linux mysql 主从 配置

在一篇文章《离线安装mysql数据库》,讲解了离线安装mysql数据库的过程,本文将讲解mysql数据库的主从配置方法。mysql数据库进行主从配置后,可以实现数据库的备份、同时应用也可以实现读写分离,提高应用的并发量。 1、主从原理 从《高性能my…

docker mysql 主从配置

准备:一台装有docker的虚拟机或者服务器 拉取mysql镜像: docker pull mysql:5.6 启动两个mysql容器 master docker run -p 1006:3306 --name mysql_master -v F:/mysql/mysql_master/conf:/etc/mysql -v F:/mysql/mysql_master/logs:/logs -v F:/mys…

mysql取消主从配置_mysql主从配置

搭建环境: master 192.168.127.131 slave 192.168.127.128 主从配置的前提:两个数据库的数据需要一模一样所以我们: 在主上面建立一个数据库 在这里我们用mysql备份一下 mysqldump db1 >123.sql (备份) 在主上面建立一个数据库db1需要登…

Mysql 主从配置

一、主服务称master,从服务器称slave 主服务器: master从服务器: slave 主从服务器必须要有相同的mysql配置,版本都需要一致,还需要建立一个一样的数据库。修改主服务my.cnf 配置文件 [rootlocalhost mysql]# vi /etc/my.cnf#主数据库端ID号…

mysql配置主从

一、部署mysql 1.1、先部署好两台mysql数据库,部署mysql可以查看我的文档 写文章-CSDN创作中心 二、开始配置mysql主从 2.1、主机配置 vim /etc/my.cnf 或者 vi /etc/my.cnf #增加一下配置 log-binmysql-bin server_id101 #选择增加的参数 binlog-do-db 数据库名…

mysql数据库主从配置

1、主从原理 主从原理大致有三个步骤: 在主库上把数据更改记录到二进制日志中(Binary Log)中,这些记录称为二进制日志事件。从库通过IO线程将主库上的日志复制到自己的中继日志(Relay Log)中。从库通过SQL线…

Mysql主从配置,亲手搭建,保证可用!

配置前准备 1、准备2个mysql环境 2、两个mysql网络互通 第一步 配置mysql配置文件【my.cnf】|【my.ini】 【master】配置如下 [mysqld] server-id 1 # 节点ID,确保唯一 log config log-bin mysql-bin #开启mysql的binlog日志功能,binlo…

REPL是什么?

“读取-求值-输出”循环(英语:Read-Eval-Print Loop,简称REPL)是一个简单的,交互式的编程环境 看图理解:

repr()

转:https://www.cnblogs.com/itdyb/p/5046415.html Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。

python replace函数

replace()是一个替换函数 其使用格式为 变量 .replace(要替换的值,替换后的值) 例如:替换空格(给字符串删除空格) 输出结果

python——replace函数

replace就像它的中文翻译,替换的意思,可以输入help(replace)看一下它的用法 replace(self, old, new, count-1, /),这个就是replace的基本用法,old就是指要替换的字符串,,new就是产…

正则表达式--replace

MDN解释: 返回一个由替换值替换一些或所有匹配的模式后的新字符串。 使用以下值作为替换参数 序列变量名代表的值1$$插入一个 “$”2$&插入匹配的子串3$插入当前匹配的子串左边的内容4$’插入当前匹配的子串右边的内容5$n假如第一个参数是 RegExp对象&#xff…

SublimeREPL无法运行,输出:“***Repl Closed***“

我的python3用的是python3.7.8,在Sublime上安装SublimeREPL后发现我的sublimeREPL打开后仅仅是输出了一行***Repl Closed***,对比其他人运行REPL的结果后,发现这个插件还没有运行程序就结束了。 解决方法 在sublime文件目录下Sublime Text …

replace/replaceAll

replace/replaceAll 在leetcode刷到替换空格的问题,一通反复比较,发现String对象中的replace和replaceAll虽然实现效果相同,但是执行用时和内存消耗略有差异;Be Like: 难道说底层实现有哪里不一样?让我来…

如何使用Node.js REPL

目录 1、Nodejs REPL 2、_特殊变量 3、向上箭头键 4、点命令 5、从JavaScript文件运行REPL 1、Nodejs REPL REPL代表Read-Evaluate-Print-Loop,是交互式解释器。 node命令是我们用来运行Node.js脚本的命令: node script.js 如果我们运行node命令…

Node.js的交互式解释器(REPL)

什么是交互式解释器 交互式解释器,就是交互的解释器,即每输入一行然后回车都会有所反应。 必要时可以拿node当计算器来使用。 REPL(Read Eval Print Loop:交互式解释器)表示一个电脑的环境,类似于电脑的cmd命令行,我们可以在其…

简单说说USB协议(三)四种传输方式

数据传输的大致步骤: 配置传输方法——选择事务——发送各种令牌、数据、握手包 传输方法 既然USB是用来进行数据传输的,那么必然会涉及到配置传输方法: 批量传输、中断传输、同步传输、控制传输。 1、批量传输 适用于数据量大&#xf…

USB协议详解第12讲(USB传输-初探)

目录 1.USB传输、事务、包的关系 2.USB传输类型 2.1控制传输 2.2同步传输 2.3批量传输 2.4中断传输 3.传输总结及后期内容 1.USB传输、事务、包的关系 USB传输、事务、包是从不同层次上去说明一次数据交互的三个概念。 举个例子可能更好些,"某领导和一…

USB 协议的科普

旧名称 新名称 最新名称 最大速度 2000.04 USB 2.0 480 Mbps 2008.11 USB 3.0 USB 3.1 Gen1 USB 3.2 Gen1 5 Gbps 2013.12 USB 3.1 USB 3.1 Gen2 USB 3.2 Gen2 10 Gbps 2017.09 USB 3.2 USB 3.2 Gen2x2 20 Gbps 英特尔 雷电 3 USB-C Thunder…

USB协议详解第1讲(核心概念通俗理解)

目录 0.概括 1.USB传输(Transfer) 2.事务(Transaction) 3.包(Pack)的概念 4.USB 主机(Host) 5.设备(Device) 6.配置(Configuration&#x…