首页 > 数据库 >docker 配置MySQL主从复制

docker 配置MySQL主从复制

时间:2023-07-14 12:05:29浏览次数:38  
标签:主从复制 log 数据库 MySQL master mysql docker zhangsan

启动 mysql 容器(配置主服务器)

docker run -p 3307:3306 --name mysql-master \
-v /tmp/mysql/mysql-master/log:/var/log/mysql \
-v /tmp/mysql/mysql-master/data:/var/lib/mysql \
-v /tmp/mysql/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

docker ps     执行上列一条启动命令之后查看验证 -v映射的目录,-p映射的端口是否正常。
vim /tmp/mysql/mysql-master/conf/my.cnf  编辑配置文件加入如下内容

[mysqld]
#设置server_id 同一局域网中需要唯一
server_id=101
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#开启二进制日志功能
log-bin=mall-mysql-bin
#设置二进制日志使用内存的大小
binlog_cache_size=1M
#设置使用二进制日志的格式
binlog_format=mixed
#二进制日志过期清理时间,默认为零,表示不自动清理
expire_logs_days=7
#跳过主从复制中遇到的所有错误或指定错误的类型格式,避免slave端复制终端
#例如:1062错误是指一些主键重复,1032是因为主从数据库数据不一致
slave_skip_errors=1062

docker restart  mysql-master  		  重启mysql容器
docker ps   	  查看验证是否重启成功,重启失败就是配置文件错误,请排查配置文件是否编辑有误。
docker exec -it mysql-master /bin/bash    
mysql -uroot -p      			 输入上面指定的密码“root” 登入数据库
create user 'zhangsan'@'%' identified by '123456';    			创建用户
grant replication slave, replication client on *.* to 'zhangsan'@'%';   授权

配置MySQL从数据库

docker run -p 3308:3306 --name mysql-zhangsan \
-v /tmp/mysql/mysql-zhangsan/log:/var/log/mysql \
-v /tmp/mysql/mysql-zhangsan/data:/var/lib/mysql \
-v /tmp/mysql/mysql-zhangsan/conf/:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

docker ps     执行上列一条启动命令之后查看验证 -v映射的目录,-p映射的端口是否正常。
vim /tmp/mysql/mysql-zhangsan/conf/my.cnf

[mysqld]
#设置server_id 同一局域网中需要唯一 主机设置的101 从机设置的102 千万不要重复
server_id=102
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#开启二进制日志功能 以备zhangsan作为其他数据库实例的Master时使用
log-bin=mall-mysql-zhangsan1-bin
#设置二进制日志使用内存的大小
binlog_cache_size=1M
#设置使用二进制日志的格式
binlog_format=mixed
#二进制日志过期清理时间,默认为零,表示不自动清理
expire_logs_days=7
#跳过主从复制中遇到的所有错误或指定错误的类型格式,避免slave端复制终端
#例如:1062错误是指一些主键重复,1032是因为主从数据库数据不一致
slave_skip_errors=1062
#relay_log 配置中继日志
relay_log=mall-mysql-relay-bin
#表示salve将复制事件写进自己的二进制日志中
log-slave_updates=1
#设置从机为只读
read_only=1

docker restart  mysql-zhangsan       
docker ps                重启之后查看 STATUS 列表中的运行时间可验证是否重启成功。

在主数据库中查看信息并验证

mysql -uroot -p 
show master status;     执行该命令 拿到下图中的信息,用于下方配置主从复制

image.png

在从数据库中配置主从复制

docker exec -it mysql-zhangsan /bin/bash   登入从数据库容器
mysql -uroot -p      登入从数据库 执行下面命令

change master to master_host='192.168.XX.XX',\
master_user='zhangsan', master_password='123456',\
master_port=3307, master_log_file='mall-mysql-bin.000001', \
master_log_pos=623, master_connect_retry=30;

PS: 下列有参数说明的参考。

show slave status \G; 
在从数据库中执行验证主从同步状态,NO 表示还没开始,因为还未配置,如下图一所示:

start slave;
在从数据库中开启主从同步状态,(开启从数据库)
开启之后 查看下图中的 “NO” 是否变为 “Yes”  Yes 表示开始同步

image.png

主从复制测试

测试流程:
主库 新建库-使用库-新建表-插入数据  如下图一所示
从库 使用库-查看记录(读)	    如下图二所示

image.png image.png

主从复制参数说明

master_host	主数据库的IP地址
master_port	主数据库的运行端口
master_user	在主数据库创建的用于同步数据的用户账户
master_password	在主数据库创建的用于同步数据的用户账户的密码
master_log_file	指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数
master_log_pos	指定从数据库要从哪个位置开始复制数据,通过查看主数据库的数据,获取Position参数
master_connect_retry	连接失败重试的时间间隔,单位为妙。

标签:主从复制,log,数据库,MySQL,master,mysql,docker,zhangsan
From: https://blog.51cto.com/cyfang/6719961

相关文章

  • #SQL常见错误信息表 mysql导入数据出错常见错误
    mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成。错误之处,请大家指正。1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库......
  • docker基础知识
    前言我正在参加「掘金·启航计划」。Docker是一个开源的容器化平台,它提供了一种轻量级且可移植的方法来打包、分发和运行应用程序。通过使用Docker,开发人员可以将应用程序及其依赖项打包到称为容器的独立单元中,以便在不同的环境中运行,而无需担心环境差异和依赖项冲突。可以说doc......
  • 全方位对比 Postgres 和 MySQL (2023 版)
    全方位对比Postgres和MySQL(2023版)原创Bytebase昨天10:36阅读数9.4K本文被收录于专区数据库进入专区参与更多专题讨论 根据 2023年StackOverflow调研,Postgres已经取代MySQL成为最受敬仰和渴望的数据库。随着Postgres的发展势头愈......
  • 随笔(二十三)『docker MySql 主从复制』
    1、准备好带docker的虚拟机2、拉取mysql5.7镜像dockerpullmysql:5.73、创建主服务的映射mkdir-p/mydata/mysql_master/logmkdir-p/mydata/mysql_master/datamkdir-p/mydata/mysql_master/conftouch/mydata/mysql_master/conf/my.cnf4、创建从服务的映射mkdir......
  • windows Mysql 压缩包版本 安装
    Mysql现如今的版本都有安装版,但是我需要老的Mysql版本(5.7),恰好下载的是压缩版本,这里记录下过程安装Mysql压缩包版本,解压后得到一个文件夹,我是x64的,我放在了C:\ProgramFiles下然后将C:\ProgramFiles\mysql\bin放进系统环境变量,这样就可以在cmd窗口使用msql的命令了管理员......
  • Linux安装MySQL 5.7
    Linux安装MySQL5.71、上传到/usr/local,解压并重命名为mysqltar-zxvfmysql-5.7.26-linux-glibc2.12-x86_64.tar.gz​mvmysql-5.7.26-linux-glibc2.12-x86_64mysql2、创建mysql用户,并授予权限addusermysql​chownmysql:mysql-R/usr/local/mysql......
  • MySQL数据库迁移(直接复制文件)
    MySQL数据库迁移(直接复制文件)-简书(jianshu.com)看了几种方法:1、修改注册表的windows下迁移mysql数据-程序员丁先生-博客园(cnblogs.com)2、mysqldump指令将数据库表/数据保存成xx.sql文件存到本地的(157条消息)如何简单实现mysql数据库迁移_岁月呀的博客-CSDN博客......
  • mysql进阶
    mysql高级1.存储引擎1.mysql体系结构 2.存储引擎简介a.存储引擎就是存储数据,建立索引,更新查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型3.存储引擎的特点a.InnoDB:是一种兼顾高可靠性能的通用......
  • 【技术积累】Mysql中的SQL语言【技术篇】【三】
    聚合函数SUM函数在MySQL中,SUM函数是用于计算数值列的总和的聚合函数。它接受一个数值列作为参数,并返回该列中所有值的总和。以下是一个使用SUM函数的示例:假设我们有一个名为"orders"的表,其中有两个字段:"product"和"amount",用于记录不同产品的订单金额。现在我们希望计算出所有......
  • MySQL字符集与字符序实战
    一、字符序命名规则字符序是以对应的字符集名称开头、以_ci(不区分大小写)、_cs(区分大小写)、_bin(按编码值比较,区分大小写)等结尾。字符序的作用就是每种不同的字符集在比较时采用的不同的方法,例如:当会话的collation_connction设置为utf8_general_ci字符序时,字符a和字符A是等价的,而当......