docker搭建mysql8.0主备(主从复制)

2023-05-16

目录

      • 前言
      • 1. 拉取mysql8.0.25镜像
      • 2. 启动mysql容器
      • 3. 修改配置文件
      • 4. 进入主容器mysql
      • 5. 进入从容器mysql
      • 6. 测试主从复制效果
      • *注意事项:*

前言

由于最近项目中开始要用到mysql主备模式,所以赶紧去mysql官网学习下,尝试用docker搭建一个mysql主备(一主一从),启动两台容器来模拟两台服务器,原理和在两台服务器上搭建主备是一样的,需要注意的是,不管是两个容器还是两台linux服务器之间必须要能够相互通信的,否则搭建主备无法完成

1. 拉取mysql8.0.25镜像

下面使用的是mysql8.0.25版本镜像(docker官网的镜像,应该是比较新的)

docker pull mysql:8.0.25

在这里插入图片描述

2. 启动mysql容器

启动两台容器,一主一从,docker ps检查两台容器的运行状态,如下所示表示启动运行正常

--ip是用来指定容器启动过程中的ip地址,如果不指定,每次启动容器ip地址不固定,这样就会导致第一次搭建好的mysql主从复制在容器重启后无法组成主从复制了,因为主机容器的ip变了,从机容器无法连接到主机容器,所以这里才需要指定,一旦指定ip后,不管什么时候重启容器,容器的ip地址不会再发生变化
docker run -d --name  mainer  -p 8008:3306 -e MYSQL_ROOT_PASSWORD=root  --ip 10.88.0.13 mysql:8.0.25
docker run -d --name  follower  -p 8009:3306 -e MYSQL_ROOT_PASSWORD=root  --ip 10.88.0.14  mysql:8.0.25

在这里插入图片描述

3. 修改配置文件

(1)编辑主容器my.cnf

将容器中的mysql配置文件my.cnf复制到宿主机
docker cp 8b7d5c7a7903:/etc/mysql/my.cnf ./
===========================================
vim my.cnf
[mysqld]加上下面两行
log-bin=mysql-bin
server-id=1
===========================================
将编辑好的my.cnf配置文件放回容器中
docker cp ./my.cnf 8b7d5c7a7903:/etc/mysql
重启mysql主容器
docker restart 8b7d5c7a7903

在这里插入图片描述
(2)查看主容器my.cnf文件

docker exec -it mainer /bin/bash
cat /etc/mysql/my.cnf

(3)编辑从容器my.cnf

将容器中的mysql配置文件my.cnf复制到宿主机
docker cp a7edc962301f:/etc/mysql/my.cnf ./
===========================================
vim my.cnf
[mysqld]加上下面两行
log-bin=mysql-bin
server-id=2
===========================================
将编辑好的my.cnf配置文件放回容器中
docker cp ./my.cnf a7edc962301f:/etc/mysql
重启mysql从容器
docker restart a7edc962301f

在这里插入图片描述
(4)查看从容器my.cnf文件

docker exec -it follower /bin/bash
cat /etc/mysql/my.cnf

4. 进入主容器mysql

docker exec -it mainer /bin/bash
mysql -u root -p
进入mysql,执行以下命令:
CREATE USER 'jamy'@'%' IDENTIFIED WITH mysql_native_password BY 'jamy';
GRANT REPLICATION SLAVE ON *.* TO 'jamy'@'%';

5. 进入从容器mysql

查看主容器Ip
docker inspect 8b7d5c7a7903
得到主容器IP:10.88.0.13
=============================================
docker exec -it a7edc962301f /bin/bash
mysql -u root -p
进入mysql执行以下命令:
CHANGE MASTER TO 
MASTER_HOST='10.88.0.13',
MASTER_PORT=3306,
MASTER_USER='jamy',
MASTER_PASSWORD='jamy',
master_log_file='mysql-bin.000001',
master_log_pos=542;

Or from MySQL 8.0.23: //mysql8.0.23以后用下面这个命令
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='10.88.0.13',
SOURCE_PORT=3306,
SOURCE_USER='jamy',
SOURCE_PASSWORD='jamy';

============================================
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
Or from MySQL 8.0.22:     //mysql8.0.22以后用下面的
mysql> START REPLICA;
mysql> SHOW REPLICA STATUS\G          //查看主从状态

如下图所示这样说明mysql主从复制搭建成功!如果此处出现下面这样,请参考文章末尾的注意事项中的解决方法

Slave_IO_Running: connecting
Slave_SQL_Running: Yes

在这里插入图片描述

6. 测试主从复制效果

进入主机mysql创建数据库

create database test default charset utf8mb4;
show databases;

在这里插入图片描述
进入从机mysql查看数据库
show databases;
在这里插入图片描述
到此mysql主从复制搭建成功!

注意事项:

1、首先执行下面命令查询下身份验证插件到底是哪一个?

use mysql;
select user,host,plugin from user;

2、如果复制用户的身份验证插件是:caching_sha2_password,则需要指定GET_MASTER_PUBLIC_KEY=1;

CHANGE MASTER TO 
MASTER_HOST='10.88.0.15',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
master_log_file='mysql-bin.000001',
master_log_pos=552,
master_connect_retry=60, 
GET_MASTER_PUBLIC_KEY=1;

3、如果复制用户的身份验证插件是:mysql_native_password,则不需要指定GET_MASTER_PUBLIC_KEY=1;

CHANGE MASTER TO 
MASTER_HOST='10.88.0.15',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
master_log_file='mysql-bin.000001',
master_log_pos=552;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker搭建mysql8.0主备(主从复制) 的相关文章

随机推荐

  • Spring注解(包含SpringBoot)

    目录 1 64 SpringBootApplication 作用在启动类上 2 64 EnableAutoConfiguration 作用在启动类上 3 64 ComponentScan 作用在启动类上 4 64 Configuration
  • SUSE12系统安装

    SUSE12系统安装 本教程为转载 xff0c 原文连接 1 启动安装模式 在启动页面上选择Installation xff0c 然后按Enter键 xff0c 开始载入SUSE Linux服务安装程序并以普通模式安装 开始初始化 更新安装
  • SUSE15系统安装

    本教程为转载内容 xff0c 原文链接 SUSE15系统安装 安装开始 1 启动安装模式 在启动页面上选择Installation xff0c 然后按Enter键 xff0c 这将载入SUSE Linux服务器安装程序并以普通模式安装 2
  • Rocky Linux 8.4系统安装

    本教程为转载内容 xff0c 原文链接 Rocky Linux 8 4系统安装 安装目的地 xff0c 选择自定义 xff0c 点击完成 点击自动创建 修改 分区的大小为34 GiB xff0c 将空闲出来的1 06GiB分给 temp分区
  • Ubuntu21.04系统安装

    目录 1 启动Ubuntu21 04镜像2 安装界面3 键盘布局4 安装模式5 安装类型6 磁盘分区7 确认磁盘手动分区8 创建EFI System Partition9 创建boot引导分区10 创建swap虚拟分区11 创建根分区12
  • Java8使用stream将Map转成List的方法

    import java util HashMap import java util List import java util Map import java util stream Collectors 64 Author liangju
  • Debian11系统安装

    目录 1 启动镜像2 选择语言3 选择所在位置4 键盘布局5 设置主机名6 设置域名7 设置root账户密码8 设置用户和密码9 设置时区10 磁盘分区11 安装其他软件包11 安装系统镜像12 参与软件包使用情况调查13 安装环境14 系
  • Deepin20.2.3系统安装

    目录 1 启动镜像2 选择语言3 硬盘分区4 新建boot分区5 创建虚拟分区6 创建根分区7 执行分区方案8 安装系统9 系统设置10 重启进入系统11 ssh连接 1 启动镜像 启动镜像进入Boot menu xff0c 默认选择第一行
  • Linux之基础命令篇

    目录 综述1 cd2 pwd3 ls4 查看文件内容4 1 less4 2 more4 3 cat4 4 tac4 5 head4 6 tail 5 压缩命令5 1 tar tar 5 2 tar tar gz 5 3 tar tar xz
  • Redhat8.4系统安装

    目录 1 启动镜像2 选择语言3 选则键盘布局4 磁盘分区4 1 创建引导分区 xff08 boot xff09 4 2 创建根分区 xff08 xff09 4 3 创建swap分区 5 KDUMP6 设置时区7 软件选择8 网络和主机名9
  • Linux之用户权限篇

    目录 前言1 查看用户信息1 创建用户2 修改用户信息3 删除用户4 文件权限4 1 chmod4 2 chown 5 用户密码 前言 用户权限非常重要 非常重要 xff01 非常重要 xff01 所以单独拿出来做笔记 xff0c 平时在l
  • Linux之镜像源篇

    目录 1 概述2 本地镜像源2 1 第一种方式2 2 第二种方式 3 在线镜像源 xff08 阿里云源 xff09 1 概述 1 yum需要一个yum库 xff0c 也就是yum源 默认情况下 xff0c CentOS就有一个yum源 在
  • mysql使用指南

    目录 一 SQL简述1 SQL的概述2 SQL的优点3 SQL的分类 二 数据库的三大范式三 数据库的数据类型1 整数类型2 浮点数类型和定点数类型3 字符串类型4 字符串类型5 日期与时间类型 四 数据库 数据表的基本操作1 数据库的基本
  • linux下安装mysql8及使用

    目录 1 下载mysql软件包2 解压缩包3 移动MySQL文件4 添加用户和用户组5 创建 data mysql目录6 创建 etc my cnf文件7 安装libaio8 初始化mysql9 查看数据库密码10 重命名mysql ser
  • Linux安装nacos

    目录 前言1 安装jdk jdk1 8 43 2 安装maven maven3 2 43 3 环境生效4 启动nacos5 关闭nacos 前言 Nacos 致力于帮助您发现 配置和管理微服务 Nacos 提供了一组简单易用的特性集 xff
  • docker搭建redis主从复制

    目录 1 docker拉取镜像2 启动两台redis容器3 查看容器状态4 查看两台容器的ip地址5 进入容器 xff08 从机 xff09 6 测试主从复制效果 1 docker拉取镜像 docker pull redis 6 0 8 2
  • java代码实现部门树以及任意树结构的获取

    表结构如下 SET NAMES utf8mb4 SET FOREIGN KEY CHECKS 61 0 Table structure for my dept DROP TABLE IF EXISTS 96 my dept 96 CREAT
  • docker搭建nacos集群

    目录 前言1 启动mysql5 7容器2 配置nacos config数据库 xff08 1 xff09 创建nacos config数据库 xff08 2 xff09 创建nacos的配置表 3 拉取nacos镜像4 启动nacos容器5
  • linux搭建nacos集群

    目录 前言1 准备mysql数据库2 准备nacos压缩包 xff08 1 xff09 下载nacos xff08 2 xff09 创建集群节点目录 xff08 3 xff09 修改集群配置文件 3 复制nacos到每个节点目录4 修改se
  • docker搭建mysql8.0主备(主从复制)

    目录 前言1 拉取mysql8 0 25镜像2 启动mysql容器3 修改配置文件4 进入主容器mysql5 进入从容器mysql6 测试主从复制效果 注意事项 xff1a 前言 由于最近项目中开始要用到mysql主备模式 xff0c 所以