首页 > 数据库 >docker搭建MySQL的主从复制

docker搭建MySQL的主从复制

时间:2023-08-18 14:24:46浏览次数:54  
标签:主从复制 slave log -- 数据库 MySQL master mysql docker

用Docker搭建Mysql的主从复制

原创 青菜浪人 青菜浪人 2023-07-30 15:33 发表于陕西 收录于合集#docker11个

创建主容器

docker run -d -p 3306:3306 --privileged=true -v /mysql/log:/var/log/mysql -v /mysql/data:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-maste mysql:

在宿主机/mysql/conf中创建mysql配置文件

touch /mysql/conf/my.cnf
vim /mysql/conf/my.cnf
#写入以下内容↓↓↓

[mysqld]
#设置 server_id
server_id=101
# 指定不需要同步的数据库名称
binlog-ignore-db=mysql
# 开启二进制日志功能
log-bin=mall-mysql-bin
#设置日志使用内存大小
binlog_cache_size=1M
# 设置使用的日志格式( mixed,statement,row)
# statement:以SQL语句的形式记录更改操作。
# row:以行级别的方式记录更改操作,即记录每个被修改的行的具体内容。
# mixed:将statement和row两种方式结合使用,在某些情况下使用statement,在其他情况下使用row。
binlog_format=mixed
# 二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=7
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断## 如 :1062>错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

进入容器内部,更新数据库结构

mysql_upgrade -uroot -p
#更新完数据库结构后退出重新登录数据库
quit
mysql -uroot -p

在主数据库中创建同步用户,并赋予对应权限

-- 创建用户
create user 'slave'@'%' identified by '123456';

-- 授予权限
-- REPLICATION SLAVE:赋予用户复制从属的权限;
-- REPLICATION CLIENT:赋予用户复制客户端的权限,允许其执行与复制相关的操作,如查看和管理复制状态等。
-- *.*:表示授权对所有数据库的所有表进行操作。

grant replication slave,replication client on *.* to 'slave'@'%';

创建从数据库容器

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

在宿主机/mysql/mysql-slave/conf中创建mysql配置文件

touch /mysql/conf/my.cnf
vim /mysql/conf/my.cnf
#写入以下内容↓↓↓

[mysqld]
server_id=102
binlog-ignore-db=mysql
log-bin=mall-mysql-slave1-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
# relay_log配置中继日志
relay_log=mall-mysql-relay-bin
#slave设置为只读
read_only=1

从数据库中开启同步

-- 命令参数说明:
/*
mater_host:主数据库IP;
master_port:主数据库端口;
master_user:在主数据库中创建的用于同步数据的用户账号;
master_password:在主数据库中创建的用于同步数据的用户密码;master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据库的状态,获取Position参数;
master_connect_retry:指定连接失败重试的时间间隔,单位为秒;
*/

-- 指定主数据库
change master to master_host='10.10.10.12',master_user='slave',master_password='123456',master_port=3306,master_log_file='mall-mysql-bin.000001',master_log_pos=617,master_connect_retry=30;

-- 开启主从同步
start slave;

-- 查看从数据库是否开启同步
show slave status \G;
出现如下图所示的两个Yes,则表示开启成功。

图片

在主数据库中创建表测试同步是否生效

从数据库:

图片


在主数据库中创建新的数据库:
create database master;

图片


创建新表并插入一条数据
--创建表
create table text (id,int name varhcar(100));
--插入数据
insert into text values(1,'xiaoming');

图片


在从数据库中查看数据是否已同步:

图片

【往期推荐】

    Docker的安装和镜像加速器的配置

    Docker搭建本地私有仓库

    NFS共享服务器搭建

    iscsi块存储服务器构建

    Heartbeat+Nginx实现高可用集群

    局域网内批量安装Linux系统

    批量安装Linux系统之Cobbler的构建

    MFS存储集群构建与日常维护

    今天,它来了!

标签:主从复制,slave,log,--,数据库,MySQL,master,mysql,docker
From: https://www.cnblogs.com/cherishthepresent/p/17640354.html

相关文章

  • mysql 如何 在用逗号分隔开的字符串中精确查询出 多个字符串
    例如:在MySQL字段中有值为1,2,3,4,5,6,8,1099,98,91,95,97两条数据而我想查出两个数据1和95如果使用find_in_set查询则无法查询出来  则需要使用mysql内置方法SELECT*FROMpay_configWHERECONCAT(',',product_ids,',')REGEXP',(1|43|15),'concat......
  • docker-compose是什么怎么使用
    docker-compose是一个用于定义和运行多个Docker容器的工具,它允许你使用一个单独的配置文件来定义多个容器、网络设置、卷挂载等,并可以一次性地启动、停止、重建整个应用程序。以下是使用docker-compose的基本步骤:创建docker-compose.yml文件:在你的项目目录下创建一个......
  • Docker方式安装Archery
    Docker方式安装Archery基本环境信息OS:RHELServer7.8_x86_64()archery版本:hhyo/Archery-1.9.1Python版本:3.9.10准备docker环境1.安装Docker可以执行命令来获取安装脚本:curl-fsSLhttps://get.docker.com-oget-docker.sh|sudosh也可以直接访问https://get.docker.co......
  • mysql优化
    优化MySQL数据库性能是确保应用程序高效运行的重要任务之一。下面是一些常见的MySQL优化方法和技巧:索引优化:确保关键字段和经常用于查询的字段都有适当的索引。避免过多索引,因为它们可能导致写操作变慢。使用复合索引,将多个字段组合在一起,以提高多字段查询的性能。定期分析和优化索......
  • docker容器命令
    一、容器容器是基于镜像创建的一个运行实例,可以被启动、停止、删除等操作。容器是动态的,它可以在运行时修改,可以在容器内安装应用程序、修改配置等。每个容器都是相对独立的、隔离的运行环境,与宿主机和其他容器隔离开来。简而言之,一个镜像可以创建多个容器。每个容器都使用相同的镜......
  • 国产麒麟系统KylinOS Server V10 SP2安装MySQL 8.0.26—源码编译安装
    一:操作系统环境检查1.1首先确认操作系统版本是KylinOSServerV10SP2麒麟操作系统KylinosServerV10SP2使用的安装介质是Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso,执行以下命令查看版本:cat/etc/kylin-releasecat/proc/version 1.2检查系统是否......
  • dockerfile的学习
    dockerfile的命令层:FROM:基础镜像,一切从这里开始MAINTAINER:创建镜像的作者 ,姓名+邮箱ADD:添加内容,如Tomcat压缩包,Tomcat镜像等RUN:镜像构建的时候需要运行的命令WORKDIR:镜像的工作目录VOLUME:镜像挂载目录EXPOSE:保留端口配置(替代了-p指定暴露端口)CMD:指定容器运行时要......
  • 【已解决】docker overlay2占用大量磁盘空间处理方法
    在使用docker容器的时候遇到了容量上的问题,做一个记录处理方式1:在使用docker时,往往会出现磁盘空间不足,导致该问题的通常原因是因为docker中部署的系统输出了大量的日志内容。此时,可通过手动或定时任务进行清除。针对/var/lib/docker/overlay2空间占用很大网上提供了很多解决方......
  • Docker Build Cache 缓存清理
    Docker18.09引入了BuildKit,提升了构建过程的性能、安全、存储管理等能力。dockersystemdf命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况:[root@test/]#dockersystemdfTYPETOTALACTIVESIZE......
  • MySQL客户端工具 phpMyAdmin MySQL Workbench HeidiSQL Sequel Pro DBeaver
    MySQL是一种流行的关系型数据库管理系统,它被广泛用于Web应用程序和企业级应用程序的开发中。目前,市面上有不少好用的MySQL客户端工具,如Navicat,SQLyog等。但这些产品虽然功能强大,却都是收费的,而且费用还不低。幸运的是,收费产品并不是你的唯一选择,目前也有不少开源的工具。如果你不想......