使用docker实现mysql 8.0主从复制

使用docker实现mysql 8.0主从复制

1.首先运行 docker pull mysql8.0 拉取镜像

docker pull mysql8.0

2.运行 docker images查看镜像,如果存在mysql 8.0那就可以进行下一步

docker images

使用docker实现mysql 8.0主从复制

3.使用docker创建mysql主容器,运行下列命令

docker run –name master -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0

–name 为容器指定名称,这里是master
-p 将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3310端口

-e 设置环境变量,这里是指定root账号的密码为root

-d 后台运行容器,并返回容器ID

mysql:8.0 指定运行的mysql版本

使用docker实现mysql 8.0主从复制

4.检验是否启动成功,运行命令docker ps -a

docker ps -a

使用docker实现mysql 8.0主从复制

开放端口

firewall-cmd –zone=public –add-port=3310/tcp –permanent

firewall-cmd –reload

–permanent 永久开启,避免下次开机需要再次手动开启端口

使用Navicat连接测试

使用docker实现mysql 8.0主从复制

5.修改MySQL配置环境

目录结构如下

/usr/local/mysql/master

/usr/local/mysql/slave

拷贝一份MySQL配置文件

docker cp master:/etc/my.cnf /usr/local/mysql/master/my.cnf

注意:有些人的my.cnf文件在不同的位置,可以通过docker exec -it 容器的NAMES /bin/bash进入docker查看对应位置

修改my.cnf,在 [mysqld] 节点最后加上后保存

log-bin=mysql-bin
server-id=100

修改完成后按esc,然后:wq保存退出

最后通过反拷贝文件

docker cp /usr/local/mysql/master/my.cnf master:/etc/my.cnf

让docker里面的文件被修改后的配置文件覆盖

重启 mysql 的docker , 让配置生效

docker restart master

6.运行MySQL从容器slave

同上,首先运行从容器slave

docker run –name slave -p 3311:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0

开放对应端口

同上

查看所有容器

使用docker实现mysql 8.0主从复制

拷贝一份MySQL配置文件

docker cp slave:/etc/my.cnf /usr/local/mysql/slave/my.cnf

修改slave里面的my.cnf,在 [mysqld] 节点最后加上后保存

然后反拷贝覆盖

docker cp /usr/local/mysql/slave/my.cnf slave:/etc/my.cnf

重启 mysql 的docker , 让配置生效

docker restart slave

7.配置主从复制

1.创建用户

使用Navicat登录MySql数据库,执行下面命令:

create user ‘xiaoming’@’%’ identified WITH ‘mysql_native_password’ by ‘Root@123456’;

注:这里表示创建一个不限制ip登录的用户 xiaoming
该用户的密码是 Root@123456
%代表不限制ip登录

mysql_native_password是因为在MySQL8.0之前,身份验证的插件是mysql_native_password,在MySQL 8.0中,caching_sha2_password 是默认的身份验证插件,安全性更高,如果不加的话有可能会报错,详情请参考该博客

https://blog.csdn.net/weixin_30647423/article/details/114816675?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165985551216782248526570%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165985551216782248526570&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-114816675-null-null.142^v39^control,185^v2^tag_show&utm_term=%E4%BB%8E%E5%BA%93%E8%BF%9E%E6%8E%A5%E4%B8%BB%E5%BA%93%E6%8A%A5%E9%94%99Authentication%20plugin%20caching_sha2_password%20reported%20error%3A%20Authentication%20requires%20secure%20connection&spm=1018.2226.3001.4187

2.给用户授权

GRANT REPLICATION SLAVE ON . TO xiaoming;

3.刷新权限,每一次权限更改后都刷新一下

flush privileges;

第四步:登录master MySql数据库,执行下面SQL,记录下结果中File和Position的值

show master status;

第五步:使用Navicat登录slave sql数据库,执行以下命令:

change master to master_host=’XXX’,master_user=’xiaoming’,master_password=’Root@123456′,master_port=3310, master_log_file=’mysql-bin.000004′,master_log_pos=85320;

MASTER_HOST 填公网ip

MASTER_PORT 主容器的端口

MASTER_USER 同步账号的用户名

MASTER_PASSWORD 同步账号的密码

master_log_file 为第四步中的 File 值,master_log_pos为第四步中的Position值

最后查看从数据库的状态

show slave status;

Slave_IO_State 如果是Waiting for master to send event,那么就成功一半了,如果是Connecting to master,基本就是配置失败了,建议重新检查下配置,具体失败的原因可以查看日志追踪

docker logs slave1 -f

使用docker实现mysql 8.0主从复制

使用docker实现mysql 8.0主从复制

接着上文,我们说成功一半,并没有说成功了,那么另一半在于Slave_IO_Running与Slave_SQL_Running

如果都是Yes的话,那么恭喜你,可以测试主从复制的效果了,如果有一个不是Yes,一半是重启从容器后,事务回滚引起的,那么给出解决方法如下

stop slave ;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;

如果连接出问题,可以查看https://blog.csdn.net/CN_LiTianpeng/article/details/108663191?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165985683616780357298001%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165985683616780357298001&biz_id=&utm_medium=distribute.pc_search_result.none-task-code-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-108663191-0-null-null.142^v39^control,185^v2^tag_show&utm_term=This%20operation%20cannot%20be%20performed%20with%20a%20running%20slave%20io%20thread%3B%20%20run%20STOP%20SLAVE%20IO_THREAD%20FOR%20CHANNEL%20%20first.进行解决

使用docker实现mysql 8.0主从复制

在主库创建test数据库,刷新从库发现同步更新了,恭喜你成功实现主从复制

使用docker实现mysql 8.0主从复制

Original: https://www.cnblogs.com/Aegeansea666/p/16559313.html
Author: Aegeansea666
Title: 使用docker实现mysql 8.0主从复制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622495/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • docker部署redis集群

    docker部署redis集群 1.0 安装环境 1.1 安装Centos7 Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docke…

    数据库 2023年6月9日
    081
  • 日月既往,不可复追,暑期实习结束!

    在从上海回南京的高铁上码下了这篇文章,心中感慨万千, 两个月弹指一挥间,初来时还略有不适,突然要走了竟然还生出一些留念,所谓 “天可补,海可填,南山可移,日月既往,不可…

    数据库 2023年6月6日
    0150
  • 文件输入/输出流

    文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中…

    数据库 2023年6月16日
    0112
  • buuctf 派大星的烦恼

    题目如下 首先找到伤疤并提取出来,发现一共有256个数据,根据题目中的提示答案为32位的字符串,再根据伤疤只有两种状态22和44,联想到每8个伤疤拼成8位二进制,22表示0,44表…

    数据库 2023年6月11日
    0143
  • Spring(一)-初识 + DI+scope

    1、获取bean实例的三种方式 UTF-8 4.3.18.RELEASE 1.16.18 4.11 org.springframework spring-beans ${sprin…

    数据库 2023年6月16日
    076
  • 太赞了!墙裂推荐这款网页版 Nginx 配置生成器,好用到爆!

    之前民工哥也给大家介绍过一款Nginx配置生成器:强大!Nginx 配置在线一键生成”神器”,不太了解的人可以去看一看。 最近民工哥又发现一款好用的网页版开…

    数据库 2023年6月9日
    0161
  • Python–软件目录结构

    目的不必多说:提高项目可读性、可维护性 软件目录结构示例: 那么问题来了,当类似于如上的目录结构时,我怎么在game.py中去调用setting.py或者main.py中的函数呢?…

    数据库 2023年6月9日
    081
  • HyperLogLog

    HyperLogLog 基数计数,不绝对准确。省空间,速度快 估计基数,对数级空间节省 可以理解为一种压缩,把基数压缩成二进制位数,只存储位数,如果旧有的数据再加入时肯定不会改变位…

    数据库 2023年6月9日
    070
  • mysql绿色版在windows系统中的启动

    Original: https://www.cnblogs.com/java265/p/15597871.htmlAuthor: java265Title: mysql绿色版在wi…

    数据库 2023年5月24日
    084
  • 重写Feign编码器

    有个spring cloud 架构的项目需要调用php小组的api接口,但php提供的接口入参大部分是下划线命名,而Java这边的实体类是按照驼峰编写,如果使用Fegin调用会导致…

    数据库 2023年6月6日
    080
  • navicat~导出数据库密码

    当我们mysql密码忘记了,而在navicat里有记录,我们应该如何导出这个密码呢? 第一步:文件菜单,导出链接,导出连接获取到 connections.ncx 文件 这里需要勾选…

    数据库 2023年5月24日
    0175
  • 数据结构知识详解 第一章 绪论

    知识框架 1. 数据结构的基本概念 1.1 基本概念和术语 1.1.1 数据 定义:是信息的载体,是描述客观事实属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的…

    数据库 2023年6月11日
    074
  • windows安装mysql8.0.29(ZIP解压安装版本)

    一. 下载mysql 8.0.29软件包 二. 解压,初始化安装 1,打开下载后文件所在目录,使用解压软件解压,打开文件夹!(如图,文件路径不要出现中文!) 2,创建my.ini文…

    数据库 2023年6月16日
    080
  • Vmware 虚拟机连接外网和设置固定IP

    NAT 模式(地址转换模式) 在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,虚拟机借助NAT功能,通过…

    数据库 2023年6月14日
    097
  • Java8 Stream

    什么是Stream Java8 API添加了一个新的抽象称为流Stream,可以以一种声明的方式处理数据,给我们操作集合(Collection)提供了极大的便利。Stream将要处…

    数据库 2023年6月6日
    082
  • 为Typora配置Gitee图床

    安装Typora 官网下载直接安装:https://www.typora.io/#download 编辑Typora图像设置 说明: 打开:文件–>偏好设置&#8…

    数据库 2023年6月11日
    0154
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球