首页 > 其他分享 >docker my5.7 主从部署

docker my5.7 主从部署

时间:2023-03-11 11:33:31浏览次数:53  
标签:slave log ## 数据库 master mysql docker my5.7 主从

主配置文件:

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

运行主mysql:

docker run -d --name=mysql-master --privileged=true -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf mysql:5.7

 参数解释:

--privileged=true  ## 保证数据卷都有权限

主Mysql创建同步用户:

登录主mysql:

docker exec -it mysql-master /bin/bash

mysql -u root -p

创建同步用户:

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

 

 

从配置文件:

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

运行从mysql:

docker run -d --name=mysql-slave --privileged=true -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf mysql:5.7

 

 

主数据库中查看主从同步状态

show master status;

 

 

 

进入从数据库配置主从复制:

进入从数据库

docker exec -it mysql-slave /bin/bash

mysql -u root -p

切换从数据库的主数据库

change master to master_host='192.168.61.102',master_user='salve',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=617,master_connect_retry=30;

参数说明:

master_host:主数据库的IP地址

master_port:主数据库的运行端口

master_user:在主数据库创建的用于同步的用户账号

master_password:在主数据库创建的用于同步的用户密码

master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据库的状态,获取File参数

master_log_pos:指定从数据库从那个位置开始复制数据,通过查看主数据库的状态,获取Position参数

master_connect_retry:链接失败重试的时间间隔,单位秒

 

执行完之后查看从数据库的状态

show slave status \G;

启动从数据库的主从同步

start slave;

执行命令:show slave status \G;

 

 

测试主从

主机操作数据库和数据表,查看从库是否有变化...

 

标签:slave,log,##,数据库,master,mysql,docker,my5.7,主从
From: https://www.cnblogs.com/badboy61/p/17205308.html

相关文章

  • docker——Error response from daemon: manifest for java:8 not found
    华为linux版本用docker拉取java8报错一开始以为网络问题。但是pingwww.baidu.com没问题。百度查看华为解析  更换安装命令dockerpullopenjdk:8      ......
  • Docker安装
    背景最近接手了几个项目,发现项目的部署基本上都是基于Docker的,幸亏在几年前已经熟悉的Docker的基本使用,没有抓瞎。这两年随着云原生的发展,Docker在云原生中的作用使得它也......
  • docker-compose
    docker-compose是基于docker的开源项目,托管于github上,由python实现,调用docker服务的API负责实现对docker容器集群的快速编排,即通过一个单独的yaml文件,来定义一组相关的容......
  • Dockerfile
    dockerbuild命令用于使用Dockerfile创建镜像。-f:指定要使用的Dockerfile路径;-t:镜像的名字及标签,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多......
  • docker镜像的上传和拉取
    dockerhub网站:https://hub.docker.com/登陆/登出Docker镜像仓库#语法dockerlogin[OPTIONS][SERVER]dockerlogout[OPTIONS][SERVER]#选项-u:登陆的用户......
  • Docker Network命令
    列出所有网络--dockernetworkls#dockernetworklsNETWORKIDNAMEDRIVERSCOPE3a7ff82cf61bbridgebridgelocal81ec257be06bhost......
  • Docker安装RabbitMQ
    Docker安装RabbitMQ1、准备工作准备挂载目录创建/opt/rabbitmq目录,集中管理RabbitMQ信息。特别注意目录权限问题。因为容器内RabbitMQ是以rabbitmq用户启动的,有些......
  • Docker数据卷
    DockerDataVolume作用:用来实现容器中数据和宿主机中数据进行映射同步注意:数据卷使用必须在容器首次启动时设置数据卷的使用设置数据卷在dockerrun时使用-v选项,多个......
  • Docker常用命令
    docker从入门到实践参考文档https://docker-practice.github.io/zh-cn/dockr练习网站https://labs.play-with-docker.com/查看docker版本dockerversion或docker-v......
  • 12.主从复制
    1.复制原理:slave从master主机读取binlog日志进行数据同步;  2.复制的规则:每个slave只有一个master;每个slave只能有一个唯一服务器ID每个master可以有......