首页 > 数据库 >Docker安装MySQL双主从复制

Docker安装MySQL双主从复制

时间:2024-11-13 16:08:42浏览次数:1  
标签:主从复制 slave log 二进制 MySQL master mysql Docker 日志

一、下载mysql镜像

二、主节点 my.cnf配置
[mysqld]

设置server_id,同一局域网中需要唯一

server_id=1

指定不需要同步的数据库名称

binlog-ignore-db=mysql

开启二进制日志功能

log-bin=mysql-bin

设置二进制日志使用内存大小(事务)

binlog_cache_size=1M

设置使用的二进制日志格式(mixed,statement,row)

binlog_format=mixed

二进制日志过期清理时间。默认值为0,表示不自动清理。

expire_logs_days=7

跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。

如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slave_skip_errors=1062
gtid_mode=ON
enforce_gtid_consistency=ON

二、从节点my.cnf配置
[mysqld]

设置server_id,同一局域网中需要唯一

server_id=102

指定不需要同步的数据库名称

binlog-ignore-db=mysql
binlog-do-db=sms_test,nacos_config,rcs_cloud

开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用

log-bin=mysql-bin-slave1

设置二进制日志使用内存大小(事务)

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=mysql-relay-bin

log_slave_updates表示slave将复制事件写进自己的二进制日志

log_slave_updates=1

slave设置为只读(具有super权限的用户除外)

read_only=1

gtid_mode=ON
enforce_gtid_consistency=ON

三、docker-compose.yml配置
version: '3.9'
services:
mysql-master:
image: mysql:8.0
container_name: mysql-master
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: sync
MYSQL_PASSWORD: 123456
volumes:
- /container/mnt/mysql/master/conf:/etc/mysql/conf.d
- /container/mnt/mysql/master/data:/var/lib/mysql
ports:
- "6311:3306"
networks:
- mysql-network
restart: always

mysql-slave:
image: mysql:8.0
container_name: mysql-slave
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: sync
MYSQL_PASSWORD: 123456
volumes:
- /container/mnt/mysql/slave/conf:/etc/mysql/conf.d
- /container/mnt/mysql/slave/data:/var/lib/mysql
ports:
- "6312:3306"
networks:
- mysql-network
restart: always

networks:
mysql-network:
driver: bridge

四、启动mysql-master,mysql-slave容器
docker compose up -d

五、为mysql-master主节点设置同步用户

create user 'slave'@'%' identified by '123456' ;

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'slave'@'%';
更换登录验证方式,不然从节点连接会报错
alter user 'slave'@'%' IDENTIFIED with mysql_native_password by '123456' ;

六、查看主节点相关信息
show master status;

七、从节点设置主节点信息

change master to master_host='dbhost_IP', master_user='slave', master_password='123456', master_port=6311, master_log_file='mysql-bin.000003', master_log_pos=996, master_connect_retry=30;

开始同步
start slave;
show slave status \G;

八,在主节点更新数据,从节点是否也会同步

标签:主从复制,slave,log,二进制,MySQL,master,mysql,Docker,日志
From: https://www.cnblogs.com/velloLei/p/18544200

相关文章

  • MySQL JDBC
    在Java开发中,与数据库进行交互是不可或缺的一部分。MySQL作为一种流行的关系型数据库管理系统,与Java的集成通常通过JDBC(JavaDatabaseConnectivity)来实现。JDBC提供了一套用于执行SQL语句的API,使得Java程序能够连接和操作数据库。本文将深入探讨MySQL与JDBC的集成过程,包括驱动......
  • MySQL 数据库
    在当今数字化浪潮中,数据库作为企业级应用的核心组件,其重要性不言而喻。从关系型数据库到非关系型数据库,再到分布式数据库,技术的演进不断推动着企业级数据库开发向更高效、更可靠、更可扩展的方向发展。本文将深入探讨数据库企业级开发的关键技术,结合代码示例,为您呈现一个全面的......
  • mysql基础知识2
    登录mysql数据库注:文中mysql版本为8.0而并非5.7使用命令行登录在操作系统中打开命令行工具/或使用xshell等ssh登录使用命令行登录数据库:根据所使用的数据库类型,输入相应的命令行登录命令。mysql-u[用户名]-p[密码]-P3306-h[数据库地址]-u用户名-p密码-P端口-h......
  • mysql基础知识(3)
    MySQL中有哪些重要的日志文件?错误日志:记录MySQL服务器运行过程中的错误信息。查询日志(GeneralLog):记录数据库执行的所有命令。慢查询日志:记录执行时间超过预设阈值的查询语句。redolog(重做日志):用于在系统崩溃时恢复未提交的数据。undolog(回滚日志):用于事务回滚时恢复数......
  • CentOS 安装 mysql 5.6
    一、下载官方的rpm包1wgethttp://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 二、安装rpm包1rpm-ivhmysql-community-release-el7-5.noarch.rpm 三、安装mysql1yum-yinstallmysql-server然后检查是否安装成功1rpm-qa|grepmysql......
  • 解决 SQLyog 连接 MySQL 8.0.24 报错 2058 的方法(Windows 平台)
    解决SQLyog连接MySQL8.4.2报错2058的方法(Windows平台)在使用SQLyog连接MySQL8.4.2时,你可能会遇到错误代码2058。这个错误通常是由于MySQL8.0默认使用的caching_sha2_password身份验证插件与SQLyog不兼容导致的。本文将详细介绍如何在Windows平台上解决这......
  • MySQL第九章,数据访问和DAO模式
    一、数据访问与Properties配置文件数据访问是应用程序与数据库之间的交互过程。在Java开发中,我们通常使用JDBC(JavaDatabaseConnectivity)来实现数据访问。然而,直接编写JDBC代码可能会导致代码冗长、难以维护,并且容易出错。为了简化数据访问过程,我们可以使用配置文件来管理数......
  • MySQL导出1000条以上数据方法,及出错提示 --secure-file-priv解决方法
    1- MySQL导出1000条以上数据的脚本先上MySQL语句,如果执行没报错,那就是前人设置好了,如果报错接着向下看哦SELECT*FROMyour_tableINTOOUTFILE'C:/Users/Administrator/Desktop/key/file.csv'FIELDSTERMINATEDBY','ENCLOSEDBY'"'LINESTERMINATEDBY'\n&......
  • mysql基础知识
    sql语句类型及用途:Ddl:建表改表删表删数据【保留表结构】Dql:查询where,groupby,orderby,joinDml:新增修改删除数据Dcl:新增删除用户对数据库权限事务ACID特性简介原子性(Atomicity)事务被视为一个不可分割的最小单位,它要么完全执行,要么完全不执行。一致性(Consi......
  • 免费送源码:Java+python+django+MySQL 小区疫情订菜系统 计算机毕业设计原创定制
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于小区疫情订菜系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区疫情订菜系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......