返回顶部
首页 > 资讯 > 数据库 >Docker上部署mysql8主从复制的实现
  • 935
分享到

Docker上部署mysql8主从复制的实现

Docker部署mysql8主从复制Dockermysql8主从复制 2022-11-13 14:11:29 935人浏览 八月长安
摘要

目录环境准备简易版本安装设置密码配置 Mysql 主从复制创建 bridge 网络并指定 IP 区间创建数据和配置存放目录准备配置文件启动数据库远程访问配置(主从)主库创建复制用户从

环境准备

需要一个 mysql8 版本的 Mysql,因为我个人没有用过 mysql5,不知道二者是否会有一些特性上的偏差。

默认你与我的环境是一样的。

简易版本安装

先仅仅安装一个 MySQL,一上来就主从的话很多细节都会杂糅在一起。

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 mysql

这里的参数介绍一下:

-p:指定内外端口映射,虚拟机为外,docker 容器为内,写在前面的为外部端口,写在后面的为内部端口。因为 MySQL 本身端口为 3306,为了不使你们混淆,我外部端口不设置为 3306。
-v:指定内外存储卷映射,Docker 实践经验(三)讲的就是这个。
-e:往容器内部传参,最后会由 MySQL 来接收。关于这个 -e 其实我也还没研究它的一个走势。

这样一个简易的 MySQL 就能动了。

设置密码

没有设置密码的话,不确定第二次要登录的时候是否还能进得去了。
不确定的意思就是可能进得去,可能进不去。

所以我们自行设置一个密码比较保险。

mysql> use mysql

mysql> update user set authentication_string='123456' where user='root' and host='localhost';

mysql> flush privileges;

不用注释吧。

现在这个 MySQL 能动了吧,可以考虑删掉了,咱开始做主从复制。

如果想留着用的:
修改 my.cnf,通过数据卷同步给MySQL:

cd /mysql/conf
vim my.cnf
插入以下内容:
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

重启MySQL:

docker restart mysql
docker exec -it mysql bash

配置 MySQL 主从复制

创建 bridge 网络并指定 IP 区间

docker network create --driver bridge mysql-master-slave

mysql连接数默认不够

set global max_connections=500;
set global mysqlx_max_connections=500;

创建数据和配置存放目录

# 创建主库数据存放目录
mkdir -p /home/docker/mysql/master/data
# 创建主库配置存放目录
mkdir -p /home/docker/mysql/master/conf
 
# 创建从库1数据存放目录
mkdir -p /home/docker/mysql/slave1/data
# 创建从库1配置存放目录
mkdir -p /home/docker/mysql/slave1/conf

准备配置文件

数据库

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
Socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
 
secure-file-priv= NULL
 
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
# 服务器唯一ID,默认是1
server-id=10
 
# 启用二进制日志
log-bin=mysql-bin
 
# 最大连接数 
max_connections=10000
 
# 设置默认时区
default-time_zone='+8:00'
 
# 0:区分大小写
# 1:不区分大小写
lower_case_table_names=1
 
!includedir /etc/mysql/conf.d/

从数据库

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
 
secure-file-priv= NULL
 
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
# 服务器唯一ID,默认是1
server-id=11
 
# 启用二进制日志
log-bin=mysql-bin
 
# 最大连接数 
max_connections=10000
 
# 设置默认时区
default-time_zone='+8:00'
 
# 0:区分大小写
# 1:不区分大小写
lower_case_table_names=1
 
!includedir /etc/mysql/conf.d/

启动数据库

启动主数据库

如果上面完全按照我的步骤来,这里的命令也不用改参数。

docker run -d -p 3316:3306 --name mysql_master --restart=always --network mysql-master-slave -v /home/docker/mysql/master/data:/var/lib/mysql -v /home/docker/mysql/master/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql

启动从数据库

docker run -d -p 3326:3306 --name mysql_slave1 --restart=always --network mysql-master-slave -v /home/docker/mysql/slave1/data:/var/lib/mysql -v /home/docker/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql

远程访问配置(主从)

# 在容器 mysql_master 中开启一个交互模式的终端
docker exec -it mysql_master /bin/bash
 
# 在容器 mysql_slave1 中开启一个交互模式的终端
docker exec -it mysql_slave1 /bin/bash
 
# mysql 登录
mysql -u root -p
 
# 给予远程用户所有表所有权限
GRANT ALL ON *.* TO 'root'@'%';
 
# 更改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
 
# 远程访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
 
# 刷新权限
flush privileges;

主库创建复制用户

CREATE USER 'woniu'@'%' IDENTIFIED WITH mysql_native_password BY 'woniu123456';
 
GRANT REPLICATION SLAVE ON *.* TO 'woniu'@'%';

flush privileges;

查看 master 机器的状态

SHOW MASTER STATUS;

从库设置 master 的信息

如果前面完全按我的步骤来,这里需要填写你们自己宿主机上的 ip、还有上图中显示的那两个数据。

change master to master_host='192.168.190.133', master_user='woniu', master_password='woniu123456', master_port=3316, master_log_file='mysql-bin.000003', master_log_pos=2838, master_connect_retry=30;

参数释义:

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

开启主从复制

# 开始同步
start slave;
 
# 同步状态
show slave status ;

如果成功,圈出来的地方要都是 yes、
如果失败,会显示日志:

可自行百度,不过百度出来的不一定就适用于咱,毕竟咱是在 docker 上部署的,现有资料较少。
要靠经验。

到此这篇关于Docker上部署mysql8主从复制的实现的文章就介绍到这了,更多相关Docker部署mysql8主从复制内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Docker上部署mysql8主从复制的实现

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

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

猜你喜欢
  • Docker上部署mysql8主从复制的实现
    目录环境准备简易版本安装设置密码配置 MySQL 主从复制创建 bridge 网络并指定 IP 区间创建数据和配置存放目录准备配置文件启动数据库远程访问配置(主从)主库创建复制用户从...
    99+
    2022-11-13
    Docker部署mysql8主从复制 Docker mysql8主从复制
  • docker compose部署主从复制的实现
    目录配置解析服务搭建目录结构Compose File实例配置启动服务测试受限于 Redis 单点性能,加上我们对数据天生就有的备份的需求,因此 Redis 提供了主从复制的服务。 本...
    99+
    2024-04-02
  • docker下如何部署MySQL8基于GTID的主从复制
    这篇文章给大家介绍docker下如何部署MySQL8基于GTID的主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。安装docker#yum install docker添加doc...
    99+
    2024-04-02
  • docker下MySQL8基于GTID的主从复制如何完成部署
    本文主要给大家介绍docker下MySQL8基于GTID的主从复制如何完成部署,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下docker下MySQL...
    99+
    2024-04-02
  • Docker部署MySQL8集群(一主二从)的实现步骤
    目录一.CentOS7.9安装Docker20二.部署MySQL集群(一主二从)三.结果一.CentOS7.9安装Docker20 1.安装yum-utils工具 yum ins...
    99+
    2024-04-02
  • Docker部署Mysql8的实现步骤
    目录一、前置需求二、部署方法三、访问测试一、前置需求 1.linux系统 本人用的Centos7 2.安装docker 参考这篇文章 二、部署方法 1.拉取mysql8镜像 docker pull mysql:8 2...
    99+
    2022-07-06
    Docker部署Mysql8
  • MYSQL主从复制部署流程
    环境准备:部署一主一从两台服务器,实现主从复制,主库要开启binlog,主库和从库的Server-id要不同主库:[root@db01 ~]# hostname -I 10.0...
    99+
    2024-04-02
  • win10上安装mysql8 并配置主从复制
    最近在学习springboot,想整理一篇博客,关于springboot整合mybatis并配置主从数据库的,但是电脑win10系统上并没有配置mysql主从数据库。所以花了几天的时间终于整好了。在这里记录一下。 首先是关于在wi...
    99+
    2017-01-08
    win10上安装mysql8 并配置主从复制
  • Docker搭建MySQL5.7主从复制的实现
    目录1、新建mysql-master主服务器容器实例33072、新建mysql-master主服务器配置文件my.cnf3 重启master实例4 进入mysql-master容器5 master容器实例内创建数据同步用...
    99+
    2022-06-22
    DockerMySQL主从复制 Docker搭建MySQL主从
  • CentOS7上部署Mysql主从复制与读写分离
    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性,高可用性,还是高并发等各方面都是完全不能满足实际需求的,因此一般来说都是通过主从复制(Master-Slave)的方式来同...
    99+
    2024-04-02
  • mongodb主从复制及副本集的部署
    一.mongodb配置参数介绍:[root@host11 tmp]# cat  /etc/mongod.conf #以守护进程的方式运行fork=true#设置db的路径dbpath=/...
    99+
    2024-04-02
  • mysql传统主从复制的部署过程
    这篇文章主要讲解了“mysql传统主从复制的部署过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql传统主从复制的部署过程”吧!部署过程 一、保证M...
    99+
    2024-04-02
  • MySQL主从复制之多主多从部署流程—2023.04
    文章目录 一、多主多从实现架构图二、准备工作三、MySQL多主多从搭建流程1、修改2个主节点配置文件2、修改2个从节点配置文件3、2个主节点相互复制4、2个从节点分别复制主节点5、测试记录: ...
    99+
    2023-09-23
    mysql 数据库 java 云原生
  • docker实现mysql主从复制的示例代码
    目录一、概述1、原理2、实现三、创建Slave实例四、主从配置总结:五、参考一、概述 1、原理 master服务器将数据的改变记录二进制binlog日志,当master上的...
    99+
    2024-04-02
  • Docker实战之MySQL主从复制
    前言 曾几何时,看着高大上的架构和各位前辈高超的炫技,有没有怦然心动,也想一窥究竟?每当面试的时候,拿着单应用的架构,吹着分库分表的牛X,有没有心里慌的一批? 其实很多时候,我们所缺少的只是对高大上的技术的演练。没有相关的业务需求...
    99+
    2016-09-20
    Docker实战之MySQL主从复制
  • 使用Docker怎么实现Redis主从复制
    今天就跟大家聊聊有关使用Docker怎么实现Redis主从复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。安装docker的命令如下所示curl -sSL ht...
    99+
    2023-06-14
  • docker下MySQL的主从复制
    MySql的主从复制 sudo docker pull MySQL:5.7 拉取MySQL的镜像文件(版本号为 5.7) sudo docker run -p 3339:3306 --name master -e MYSQL_ROOT_PA...
    99+
    2016-02-20
    docker下MySQL的主从复制
  • Mysql MHA部署中什么是主从复制
    这篇文章给大家介绍Mysql MHA部署中什么是主从复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mysql MHA部署-主从复制架构说明:参考:http://www.zhaibi...
    99+
    2024-04-02
  • 部署搭建MySQL双向主从复制流程
    下面一起来了解下部署搭建MySQL双向主从复制流程,相信大家看完肯定会受益匪浅,文字在精不在多,希望部署搭建MySQL双向主从复制流程这篇短内容是你想要的。作为Master云服务器apenglinux-00...
    99+
    2024-04-02
  • 怎么部署mysql双向主从复制M-M
    本篇内容介绍了“怎么部署mysql双向主从复制M-M”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通过my...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作