docker-compose安装mysql8集群

news2024/11/13 10:31:29

我这里一主两从mysql数据库集群,mysql镜像版本是8.0.39
如下在这里插入图片描述

如下:

[root@VM-20-8-centos mysqlData]# docker-compose ps
NAME           IMAGE       COMMAND                  SERVICE        CREATED          STATUS                    PORTS
mysql-master   mysql:8.0   "docker-entrypoint.s…"   mysql-master   50 minutes ago   Up 50 minutes (healthy)   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp
mysql-slave1   mysql:8.0   "docker-entrypoint.s…"   mysql-slave1   50 minutes ago   Up 50 minutes (healthy)   3306/tcp, 33060/tcp
mysql-slave2   mysql:8.0   "docker-entrypoint.s…"   mysql-slave2   50 minutes ago   Up 50 minutes (healthy)   3306/tcp, 33060/tcp
[root@VM-20-8-centos mysqlData]# 

创建docker-compose.yml文件

services:
  mysql-master:
    image: mysql:8.0
    container_name: mysql-master
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    ports:
      - "3307:3306"
    volumes:
      - /usr/local/mysqlData/master:/var/lib/mysql
      - /usr/local/mysqlConf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p rootpassword"]
      interval: 10s
      retries: 3
      start_period: 30s
      timeout: 5s
    networks:
      - mysql-network

  mysql-slave1:
    image: mysql:8.0
    container_name: mysql-slave1
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    volumes:
      - /usr/local/mysqlData/slave1:/var/lib/mysql
      - /usr/local/mysqlConf/slave1.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p rootpassword"]
      interval: 10s
      retries: 3
      start_period: 30s
      timeout: 5s
    networks:
      - mysql-network

  mysql-slave2:
    image: mysql:8.0
    container_name: mysql-slave2
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    volumes:
      - /usr/local/mysqlData/slave2:/var/lib/mysql
      - /usr/local/mysqlConf/slave2.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p rootpassword"]
      interval: 10s
      retries: 3
      start_period: 30s
      timeout: 5s
    networks:
      - mysql-network

networks:
  mysql-network:

注意:/usr/local/mysqlData/slave2 /usr/local/mysqlData/slave1 挂载目录事先创建好

启动命令

docker-compose up -d

创建完成后 docker容器会正常启动

[root@VM-20-8-centos mysqlData]# docker-compose ps
NAME           IMAGE       COMMAND                  SERVICE        CREATED          STATUS                    PORTS
mysql-master   mysql:8.0   "docker-entrypoint.s…"   mysql-master   41 minutes ago   Up 41 minutes (healthy)   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp
mysql-slave1   mysql:8.0   "docker-entrypoint.s…"   mysql-slave1   41 minutes ago   Up 41 minutes (healthy)   3306/tcp, 33060/tcp
mysql-slave2   mysql:8.0   "docker-entrypoint.s…"   mysql-slave2   41 minutes ago   Up 41 minutes (healthy)   3306/tcp, 33060/tcp
[root@VM-20-8-centos mysqlData]# 

验证配置变更
这里只是对两个从节点的server_id 手动配置,主节点应该是server_id ,需要事先查看下,是否为1

docker-compose exec mysql-slave1 mysql -uroot -p -e "SET GLOBAL server_id = 2;"
docker-compose exec mysql-slave1 mysql -uroot -p -e "SHOW VARIABLES LIKE 'server_id';"

docker-compose exec mysql-slave2 mysql -uroot -p -e "SET GLOBAL server_id = 3;"
docker-compose exec mysql-slave2 mysql -uroot -p -e "SHOW VARIABLES LIKE 'server_id';"

进入主节点创建复制用户账号

CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;

# 在主节点上,为复制用户指定 mysql_native_password 插件:
ALTER USER 'replica'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'replica_password';
FLUSH PRIVILEGES;

在主节点查看信息:
获取主节点的二进制日志信息:
首先,您需要在主节点上获取当前的二进制日志文件名和位置。这可以通过在主节点的 MySQL 命令行中执行以下命令来完成:

SHOW MASTER STATUS;

如下

mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |     1316 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> 

记住 binlog.000003 和1316

在从节点去执行同步

CHANGE MASTER TO
	MASTER_HOST='127.0.0.1',
	MASTER_PORT=3307,
	MASTER_USER='replica',
	MASTER_PASSWORD='replica_password',
	MASTER_LOG_FILE='binlog.000003',
	MASTER_LOG_POS=1316;

执行开始命令

START SLAVE;

在从节点查看同步状态

SHOW SLAVE STATUS\G

其他命令

重置从节点的复制:
在从节点上执行以下命令来重置复制状态:

sql

STOP SLAVE;
RESET SLAVE ALL;


删除dokcer-compose

docker-compose down 
docker-compose down -v 


启动容器

docker-compose up -d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C题成品论文2已出】24数学建模国赛C题第二套成品论文(附参考代码)免费分享

假设:每个地块每年种植一种农作物。 针对问题一 单目标优化问题,定义决策变量,定义目标函数、定义约束条件、数据预处理、使用整数规划,编程解决问题。 定义决策变量: Xt,i:在第t年种植第i种作物的亩数…

如何规划Web项目

项目规划 规划步骤 1. 用户故事 从用户的角度描述应用程序的功能。所有用户故事放在一起描述了整个应用程序 2. 功能 3. 流程图(我们将去构建什么) 4. 架构(我们如何去构建他) 下一步就是开发步骤(使用代码来实现我…

聊聊资源调度

资源调度 般分为两个阶段: 是实现物理资源的虚拟化(即资源的抽象)于当前机器的性能越来越好,硬件配置越来越高,直接用物理机跑业务比较浪费,所以将物理机分割成更小单位的虚拟机,这样可以显著提…

“人大金仓”正式更名为“电科金仓”; TDSQL-C支持回收站/并行DDL等功能; BigQuery支持直接查询AlloyDB

重要更新 1. “人大金仓”正式更名为“电科金仓”,完整名称“中电科金仓(北京)科技股份有限公司”,突出金仓是中国电子科技集团有限公司在基础软件领域产品( [1] ) 。据悉人大金仓在上半年营收入为9056万元,净利润约21…

idea中配置Translation插件完成翻译功能

文章目录 idea下载插件配置有道云阿里云百度翻译开放平台 idea下载插件 idea中安装Translation插件 使用方法:右下角选择翻译引擎,鼠标选中想翻译的部分,右键翻译即可 之前一直用的微软的翻译,不需要配置,但是最近微软…

Unity Adressables 使用说明(七)诊断工具(Diagnostic tools)

Addressables 包含诊断工具,用于分析你的 Addressables setup、performance 和 build result 。 Addressables Profiler Module Addressables Profiler 是一个 Unity 编辑器 Profiler 模块,可以用来了解从 Addressables 加载的内容。 前提条件 必须启…

【LeetCode】06.Z字形变换

题目要求 解题思路 首先映入我们脑海的就是暴力。这一方法可行,但是时间复杂度空间复杂度很高,因此我们使用找规律的方法。这样的话我们可以模拟插入下标,这样的话很容易发现首行和末行插入的位置刚好是d2*n-2,而中间行的两个位置…

Linux环境中安装java环境(JDK8环境)

需求背景: 给国产服务器(银河麒麟V10)中安装项目运行环境,安装java环境!具体如下 下载jdk包 访问Oracle官网下载jdk包:Java Downloads | Oracle 中国 选择对应的cpu架构进行下载 https://download.csdn.…

OpenCV视频处理练习案例-学习篇

需要实现的功能: 用OpenCV打开一段视频,将每一帧画面压缩成540p,对画面进行垂 直翻转,转为黑白,然后添加高斯噪声,把处理好的每一帧画面保存 成一个mp4文件保存到本地 Python代码如下: impor…

第143天:内网安全-权限维持自启动映像劫持粘滞键辅助屏保后门WinLogon

案例一: 权限维持-域环境&单机版-自启动 自启动路径加载 路径地址 C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\ ##英文C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\开始菜单\程序\启动\ ##中文…

Tensorflow常见激活函数 -- Tensorflow自学笔记10

激活函数 激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。引入非线性激活函数,可使深层神经网络的表达能力更加强大。 一. 什么是优秀的激活函数? 优秀的激活函数应满足: 1. 非线性: 激活函数非线性时,多层神经网…

泛微E9 Ecology9-JS应用高级进阶视频教程(重磅)

泛微E9 Ecology9【JS 应用】高级进阶视频教程震撼登场!点击下载 引言: 随着企业数字化转型的深入,掌握泛微E9的高级开发技能已经成为众多IT技术人员和企业信息化从业者不可或缺的竞争优势。而作为泛微E9二次开发中的重要组成部分&#xff0…

AVL 树的旋转

什么是 AVL 树? AVL 树是一种自平衡二叉搜索树(Binary Search Tree, BST),以其发明者 G. M. Adelson-Velsky 和 E. M. Landis 的名字命名。它的特点是对于任意一个节点,其左右子树的高度差(平衡因子&#…

生成树协议(STP:802.1D、RSTP:802.1w、MSTP:802.1s)

在二层网络中,如果没有生成树协议,会带来哪些问题: 1、广播风暴 2、MAC地址表飘移 3、重复数据帧接收 回顾生成树有哪些术语: 1、根桥 为了破除环路,生成树网络首先要选举出一个首脑,头脑,首领。叫做根桥,…

信号有效带宽

根据傅里叶变换可以知道信号带宽是无穷大的,这对实际应用是帮助不大的,所以有了有效带宽的概念,可能大家知道常用的经验公式:O.35/Tr或者0.5/Tr等,那这个公式是怎么来的呢?有效带宽又是什么含义呢&#xff…

C++入门(01)VisualStudio2022社区版HelloWorld

文章目录 1. 下载社区版2. 安装3. 启动4. 创建新项目5. C空项目6. 项目名称和位置7. 创建后,出现“新增功能”,关闭即可8. 解决方案和项目9. 新建源文件10. 编辑第一个C程序11. 运行该程序12. Debug文件夹13. 用好Microsoft Learn 1. 下载社区版 访问&a…

C语言字面量和常量

目录 引言 1. 字面量 1.1 字符字面量 1.2 整型字面量 1.3 浮点字面量 2. 常量 2.1 使用预处理器指令 #define 定义常量 2.1.1 语法格式 2.1.2 使用举例 2.2 使用 const 关键字定义常量 2.3 使用 #define 和 const 定义常量的区别 引言 看了一些博文,有的文…

HarmonyOS(55) error: install releaseType target not same 解决方案

releaseType not same 问题现象解决方法参考资料 问题现象 在DevEco Studio 链接真机运行时发现如下错误: 09/06 08:40:45:905: Install Failed: error: failed to install bundle. code:9568258 error: install releaseType not same. 09/06 08:40:45:966: View …

集成电路学习:什么是SDK软件开发工具包

SDK:软件开发工具包 SDK,即Software Development Kit(软件开发工具包),是一套由软件提供商或其他组织提供的开发工具集合。这些工具旨在帮助开发者更快速、更便捷地创建、测试和部署软件应用程序。以下是对SDK的详细解…

全国计算机二级考试C语言篇3——选择题

C语言部分——C语言概述 1.程序模块化的优点 程序模块化的优点在于它可以使程序的开发、维护和复用变得更简单。下面是一些主要的优点: 降低复杂度:模块化可以将复杂的问题分解成更小的、更易管理的部分。 可维护性:模块化使得代码更易于维护…