返回顶部
首页 > 资讯 > 数据库 >一文教会你在Docker容器中实现Mysql主从复制
  • 369
分享到

一文教会你在Docker容器中实现Mysql主从复制

摘要

目录一 主从复制概念二 主从复制的优势三 Docker容器实现Mysql主从复制3.1 创建主服务器容器3.2 新建主配置文件 my.cnf3.3 重启master容器实例3.4 进入mysql-master容器3.5

一 主从复制概念

在数据库中主从复制``表示有一个主数据库,多个从数据库,即,主数据库对外提供读写功能,从数据库对外提供读的功能。
Mysql默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以实时在远端进行。

二 主从复制的优势

  • 高可用,可用于故障切换,如果主库挂了,则可以切到从库
  • 读写分离,减少主库压力,从而提高性能,主库负责写,从库负责读
  • 可备份数据,避免影响业务

三 Docker容器实现Mysql主从复制

下面开始进入实战环节,一步步的教大家如何搭建主从数据库,小伙伴赶快练习一下吧。

3.1 创建主服务器容器

主服务器端口号为3307

docker run -p 3307:3306 --name mysql-master \
-v /Users/zengzhaoxia/mydata/mysql-master/log:/var/log/mysql \
-v /Users/zengzhaoxia/mydata/mysql-master/data:/var/lib/mysql \
-v /Users/zengzhaoxia/mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWord=123456 \
-d mysql:5.7

一文教会你在Docker容器中实现Mysql主从复制

创建完成之后,别忘记再 docker ps一下,确保是否创建成功

补充:如果MYSQL_ROOT_PASSWORD的密码设置为root,当登录数据库时可能会报和权限相关的错误,所以,不妨将密码改为数字试试,比如123456。

3.2 新建主配置文件 my.cnf

进入/mydata/mysql-master/conf目录下新建my.cnf,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

切记切记,此处一定是 [mysqld],不要写成了[mysql]。

3.3 重启master容器实例

因为第二步修改了配置文件,所以需要重启docker容器

docker restart mysql-master
docker ps

3.4 进入mysql-master容器

进入mysql-master容器,并登录数据库,可以看到当前有哪些默认的数据库。

docker exec -it mysql-master /bin/bash
mysql -uroot -p
show databases;

3.5 在主服务器中创建用户并授权

##1. 建立用户
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
##2. 授权
mysql>GRANT REPLICATioN SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

一文教会你在Docker容器中实现Mysql主从复制

3.6 创建从服务器容器

从服务器容器的端口号为:3308

docker run -p 3308:3306 --name mysql-slave \
-v /Users/zengzhaoxia/mydata/mysql-slave/log:/var/log/mysql \
-v /Users/zengzhaoxia/mydata/mysql-slave/data:/var/lib/mysql \
-v /Users/zengzhaoxia/mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

创建完成之后,别忘记再 docker ps一下,确保是否创建成功

3.7 新建主配置文件 my.cnf

进入/mydata/mysql-slave/conf目录下新建my.cnf,my.cnf内容如下:

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
##指定不需要同步的数据库名称
binlog-ignore-db=mysql
##开启二进制日志功能,以备slave作为其他数据库实例的master时使用
log-bin=mall-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

3.8 重启slave容器实例

因为修改了配置,所以需要重启 slave 实例

docker restart mysql-slave
docker ps

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

在主服务器中输入如下命令:

mysql> show master status;

一文教会你在Docker容器中实现Mysql主从复制

3.10 进入mysql-slave容器

docker exec -it mysql-slave /bin/bash

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

change master to master_host='100.100.32.185',master_user='slave',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000002',master_log_pos=617,master_connect_retry=30;

一文教会你在Docker容器中实现Mysql主从复制

其中,

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

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

mysql> show slave status \G;
## 加入 \G表示 竖排以键值对的形式显示,主要观察Slave_IO_Running和Slave_SQL_Running

一文教会你在Docker容器中实现Mysql主从复制

3.13 在从数据库中开启主从同步

在从数据库中操作,表示从数据库同意接收数据

start slave;

一文教会你在Docker容器中实现Mysql主从复制

3.14 查看从数据库状态是否同步

show slave status \G;

一文教会你在Docker容器中实现Mysql主从复制

3.15 主从复制测试

验证主要分为两步,第一步在主数据库中创建数据,第二步在从数据库中查看数据。

1. 在主数据库中新建数据库db01,并在db01中新建表t1,并插入数据
create database db01;
use db01;
create table t1(id int,name varchar(20));
insert into t1 values(1,'zeng');

2. 在从数据库中查询
show databases;//会看到db01数据库
use db01;
select * from t1;

总结

到此这篇关于在Docker容器中实现Mysql主从复制的文章就介绍到这了,更多相关Docker容器实现Mysql主从复制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: 一文教会你在Docker容器中实现Mysql主从复制

本文链接: https://lsjlt.com/news/173617.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 一文教会你在Docker容器中实现Mysql主从复制
    目录一 主从复制概念二 主从复制的优势三 docker容器实现mysql主从复制3.1 创建主服务器容器3.2 新建主配置文件 my.cnf3.3 重启master容器实例3.4 进入mysql-master容器3.5 ...
    99+
    2022-11-29
    docker搭建mysql主从 docker mysql 主从配置 docker容器mysql主从复制
  • MyCat教程二:mysql主从复制实现
      单个mysql数据库在处理业务的时候肯定是有限的,这时我们扩展数据库的第一种方式就是对数据库做读写分离(主从复制),本文我们就先来介绍下怎么来实现mysql的主从复制操作。 1. 读写分离   原理:需要搭建主从模式,让主数据库(...
    99+
    2018-04-04
    MyCat教程二:mysql主从复制实现
  • 一文教会你在MySQL中使用DateTime
    目录mysql 日期时间教程  MySQL 日期和时间类型MySQL 日期时间  简单的日期和时间计算  日期函数的基本算术运算  NOW() 函数  CURRENT_D...
    99+
    2024-04-02
  • docker实现mysql主从复制的示例代码
    目录一、概述1、原理2、实现三、创建Slave实例四、主从配置总结:五、参考一、概述 1、原理 master服务器将数据的改变记录二进制binlog日志,当master上的...
    99+
    2024-04-02
  • 如何在docker中安装mysql并搭建主从复制
    本篇内容主要讲解“如何在docker中安装mysql并搭建主从复制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在docker中安装mysql并搭建主从复制...
    99+
    2024-04-02
  • Docker容器如何实现MySQL多源复制
    今天小编给大家分享一下Docker容器如何实现MySQL多源复制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。⛳️ 1.多源...
    99+
    2023-07-02
  • mysql 中怎么实现互为主从复制
    本篇文章给大家分享的是有关mysql 中怎么实现互为主从复制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 报错: 1) change ...
    99+
    2024-04-02
  • MySQL中怎么实现主从复制和半同步复制
    这篇文章将为大家详细讲解有关MySQL中怎么实现主从复制和半同步复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、复制的介绍MySQL支持单向、异步复制...
    99+
    2024-04-02
  • 怎么在Mysql中实现主从复制与读写分离
    这期内容当中小编将会给大家带来有关怎么在Mysql中实现主从复制与读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文章思维导图为什么使用主从复制、读写分离主从复制、读写分离一般是一起使用的。目的很简...
    99+
    2023-06-14
  • 如何复制文件到docker容器中(实操)
    步骤一:查看docker镜像 命令 docker images 锁定容器tomcat [root@ecs- ~]# docker imagesREPOSITORY TAG IMAGE ID ...
    99+
    2023-08-31
    运维 linux 服务器 centos docker Powered by 金山文档
  • Docker容器实现MySQL多源复制场景分析
    目录前言⛳️ 1.多源复制简介⛳️ 2.多源复制使用场景⛳️ 3.多源复制部署✨ 3.1 下载镜像✨ 3.3 创建容器,安装mysql✨ 3.4 参数文件配置✨ 3.5 登陆MySQL⛳️ 4.主从配置✨ 4.1 主库配...
    99+
    2022-06-13
    Docker MySQL多源复制 MySQL多源复制
  • mysql 5.7如何实现多主一从的多源复制
    这篇文章主要介绍了mysql 5.7如何实现多主一从的多源复制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 主服务器创建用户 主1 ...
    99+
    2024-04-02
  • mysql中怎么利用mysql-mm实现互为主从复制
    这篇文章将为大家详细讲解有关mysql中怎么利用mysql-mm实现互为主从复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 原理讲述: AB复制主要...
    99+
    2024-04-02
  • MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?
    MySQL的主从复制是什么?怎么实现MySQL服务器的主从同步?这些问题可能是我们日常工作会见到的。通过这些问题,希望你能收获更多。下面是揭开这些问题的详细内容。MySQL主从复制案例概述在企业网站中,后端...
    99+
    2024-04-02
  • MySQL中如何实现主从复制与读写分离
    MySQL中如何实现主从复制与读写分离,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1,mysql的配置CentOS 5.x,6.0编译安装N...
    99+
    2024-04-02
  • MySQL中怎么实现主从复制及读写分离
    MySQL中怎么实现主从复制及读写分离?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、相关概述主从复制:主数据库(Master)发送更新事件到从数据库(Slave),从数...
    99+
    2023-06-14
  • 怎么在Redis中实现持久化与主从复制
    这篇文章给大家介绍怎么在Redis中实现持久化与主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为什么需要持久化Redis是基于内存的NoSQL数据库,读写速度自然快,但内存是瞬时的,在redis服务关闭或重启之...
    99+
    2023-06-14
  • 一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
    文章目录 1、安装指定版本的mysql2、创建实例并且启动3、可视化工具Navicat连接测试4、docker容器文件挂载与端口映射5、进入已运行mysql容器中6、查看安装的位置7、Mysq...
    99+
    2023-10-03
    docker linux mysql
  • 一文教你在Java中实现一个冒泡排序和快速排序
    一文教你在Java中实现一个冒泡排序和快速排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。冒泡排序  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列...
    99+
    2023-05-31
    java 冒泡排序 快速排序
  • 实现数据冗余与扩展:MySQL主从复制技术在集群环境中的应用案例
    实现数据冗余与扩展:MySQL主从复制技术在集群环境中的应用案例引言:随着互联网发展,数据量的不断增大和用户的不断增加,传统的单机数据库已经无法满足高并发、高可用性的需求。在这种背景下,分布式数据库成为了热门的解决方案之一。MySQL作为最...
    99+
    2023-10-22
    主从复制 数据冗余 集群环境
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作