首页 > 数据库 >docker MySql主从同步配置

docker MySql主从同步配置

时间:2022-12-06 23:12:00浏览次数:36  
标签:slave log ## MySql mydata master mysql docker 主从

0、

docker pull mysql:5.7

一、主数据库

1、新建主服务器容器实例3307

启动容器,并创建文件夹映射

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

2、进入/mydata/mysql-master/conf目录下新建my.cnf

cd /mydata/mysql-master/conf
vi my.cnf

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

collation_server = utf8_general_ci
character_set_server = utf8

[client]
default_character_set=utf8

3、删除旧数据后重启master实例

rm -rf /mydata/mysql-master/data/*
docker restart mysql-master
docker exec -it mysql-master /bin/bash
mysql -uroot -proot
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

show master status; 记住 Position=617

二、从数据库

1、新建从服务器容器实例3308

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

2、进入/mydata/mysql-slave/conf目录下新建my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
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=1062  
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin  
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1  
## slave设置为只读(具有super权限的用户除外)
read_only=1

collation_server = utf8_general_ci
character_set_server = utf8

[client]
default_character_set=utf8

3、删除旧数据后重启master实例

rm -rf /mydata/mysql-slave/data/*
docker restart mysql-slave
rm -rf /mydata/mysql-slave/data/*
docker restart mysql-slave  (第二次重启)

三、两个库

1、

在主数据库中查看主从同步状态  
show master status;  
查看Position=617
docker exec -it mysql-slave /bin/bash
mysql -uroot -proot
change master to master_host='192.168.1.24', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
(这里master_log_pos=617可能不是617,show master status;查询pos)

show slave status \G;(查询开启状态)
Slave_IO_Running: No
Slave_SQL_Running: No
start slave;(开启主从同步)
show slave status \G;(查询开启状态)

多次重启主库和从库,查询pos,保证主从一致,直到查询

show slave statu
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

标签:slave,log,##,MySql,mydata,master,mysql,docker,主从
From: https://www.cnblogs.com/kikyoqiang/p/16961720.html

相关文章

  • 配置docker namespace 配置以宿主机用户映射容器内root 用户
    配置docker首先,使用--userns-remapuser-name标志启动docker守护进程,或者确保docker守护进程的配置文件(/etc/docker/daemon.json)包含以下内容:{"userns-remap"......
  • MySQL 快速入门之DATE_FORMAT() 函数详解
    一:定义和用法DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。语法DATE_FORMAT(date,format)date参数是合法的日期。format规定日期/时间的输出格式。可以......
  • docker-compose 文件
    新建文件夹编写docker-compose.yaml文件,如下services:mysql-compose:image:mysqlenvironment:......
  • mysql主从同步配置步骤详解
    1介绍主从同步使得数据可以从一个服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务......
  • MySQL的安装与配置,可视化软件安装,以及IDEA上的配置操作
    1.MySQL安装详细教程注意:本次安装例为随笔发布时最新的8.0.31版本教程,由于您所希望安装的版本不同可能会导致一些问题,请谅解。进入官网下载界面https://www.mysql.com......
  • docker的简单使用
    1.镜像命令1.1查看本地镜像1.1.1dockerimages1.1.2dockerimagels1.2下载镜像dockerpull名字1.3删除镜像1.4搜索镜像1.4.1dockersearch名字参数--f......
  • Docker 启动前后端脚本
    后端docker提前运行consul,mongo,redis进入到Jar所在的文件夹(文件夹下只有一个Jar!)新建start.shCMDjar_name=$(ls-1-F*.jar)&&\java-Xms450m-Xmx450m......
  • 《MySQL必知必会》知识汇总四
    十七、插入数据本章将介绍如何利用sql的INSERT语句将数据插入表中数据插入插入分为以下几种方式:插入完整的行、插入行的一部分、插入多行、插入某些查询结果插入完......
  • C#连接MySQL数据库,进行增删改查
    一、创建数据库学生表createdatabasetest;createtablestudent( sNovarchar(50)primarykey, sNamevarchar(50)notnull)补充:数据的增删改查相关操......
  • idea java 关于mysql数据库连接的相关步骤
    1.首先在你的项目中建立一个lib文件夹(表示加入依赖)(资源在上面)       2.选择这个项目的Properties在下面页面中添加Libraries进入这个项目jar配置到项......