首页 > 数据库 >docker-compose部署MySQL高可用工具orchestrator

docker-compose部署MySQL高可用工具orchestrator

时间:2024-09-10 16:53:12浏览次数:3  
标签:副本 orchestrator MySQL 故障 compose master mysql 节点

主要对一个MySQL主从架构部署orchestartor进行高可用验证,orchestrator部署在主从架构的从节点上,当然最好是部署在其他机器上,后端数据库采用的直接是MySQL的从库,所以没有创建orchestrator的后端数据库的流程。

创建yaml文件

mkidr /opt/orche
cd /opt/orche
vim docker-compose.yml
注意网络应该与mysql的节点网络相同

version: '2'

services:
  orchestrator:
    image: openarkcode/orchestrator:latest
    container_name: orchestrator
    ports:
      - "3001:3000"  # Orchestrator Web UI
    volumes:
      - ./orchestrator.conf.json:/etc/orchestrator.conf.json
    environment:
      - MYSQL_TOPOLOGY_USER=orche
      - MYSQL_TOPOLOGY_PASSWORD=Tgqs@123
    networks:
      - mysql_net
    depends_on:
      - mysql-master
      - mysql-slave

networks:
  mysql_net:
   driver: bridge

创建配置文件

vim orchestrator.conf.json

{
  "Debug": true,
  "MySQLTopologyUser": "orche", #登录主从数据库的用户
  "MySQLTopologyPassword": "Tgqs@123",#登录主从数据库的密码
  "AutoMasterRecovery": true,
  "FailMasterPromotionIfSQLThreadNotUpToDate": true,
  "InstancePollSeconds": 10,
  "DiscoveryPollSeconds": 10,
  "UnseenInstanceForgetHours": 240,
  "HostnameResolveMethod": "default", #不设置为none默认都是主机名,选择none不认证主机名
  "MySQLHostnameResolveMethod": "@@hostname",#
  "MySQLOrchestratorHost": "172.16.208.13", #后端数据库的地址
  "MySQLOrchestratorPort": 3306,
  "MySQLOrchestratorDatabase": "orcdb",#后端数据库存放位置
  "MySQLOrchestratorUser": "orche",,#后端数据库用户名
  "MySQLOrchestratorPassword": "Tgqs@123",
  "AuthenticationMethod": "basic",#登录验证开启,关闭设为空置
  "HTTPAuthUser": "admin",#用户名
  "HTTPAuthPassword": "Tgqs@123",#密码
  "FailureDetectionPeriodBlockMinutes": 60,
  "RecoverMasterClusterFilters": ["*"], #自动主从切换
  "RecoverIntermediateMasterClusterFilters": ["*"],
  "ClusterNameToAlias": {
    "127.0.0.1": "test suite"

}

如果想让web界面显示ip地址修改两个参数

“HostnameResolveMethod”: “none”,
“MySQLHostnameResolveMethod”: “”,

进入mysql主节点的容器,从节点不用创建可能报错

create user ‘orche’@‘%’ identified by ‘Tgqs@123’;
GRANT ALL PRIVILEGES ON . TO ‘orche’@‘%’;

进入MySQL的从节点的容器

create database orche;

在从节点的compose文件夹

docker-compose up -d
docker ps
#如果没有启动查看日志情况

进入文本界面

在这里插入图片描述
discover 输入主节点
在这里插入图片描述
在这里插入图片描述
可以直接在这个也没进行开启关闭复制操作,不用再进到容器中
在这里插入图片描述

验证故障转移情况

docker stop mysql-master
#进入mysql从节点

在这里插入图片描述

docker exec -it mysql-slave mysql -uroot -p
#查看是否是个空值
show slave status \G;
#查看是否为主节点

show master status \G;

在这里插入图片描述

#手动将从节点升级为主节点
change master to
master_host=‘172.16.208.12’,
master_user=‘replica’,
master_password=‘Tgqs@123’,
MASTER_LOG_FILE=‘mysql-bin.00001’,#重新查看binlog文件名
MASTER_LOG_POS=157; #重新查看文件位置
show slave status \G;


常见的web界面故障显示

\- DeadMaster 主节点故障
\- DeadMasterAndReplicas 主节点和副本节点故障
\- DeadMasterAndSomeReplicas 主节点和部分副本节点故障
\- DeadMasterWithoutReplicas 主节点没有副本节点
\- UnreachableMasterWithLaggingReplicas 无法访问的主节点且存在滞后的副本节点
\- UnreachableMaster 无法访问的主节点
\- LockedSemiSyncMaster 被锁定的半同步主节点
\- MasterWithTooManySemiSyncReplicas 主节点具有过多的半同步副本
\- AllMasterReplicasNotReplicating 所有主节点副本均未进行复制
\- AllMasterReplicasNotReplicatingOrDead 所有主节点副本未进行复制或停止工作
\- DeadCoMaster 协同主节点故障
\- DeadCoMasterAndSomeReplicas 协同主节点和部分副本节点故障
\- DeadIntermediateMaster 中间主节点故障
\- DeadIntermediateMasterWithSingleReplicaFailingToConnect 中间主节点故障且单个副本无法连接
\- DeadIntermediateMasterWithSingleReplica 中间主节点故障且只有一个副本节点
\- DeadIntermediateMasterAndSomeReplicas 中间主节点和部分副本节点故障
\- DeadIntermediateMasterAndReplicas 中间主节点和副本节点故障
\- AllIntermediateMasterReplicasFailingToConnectOrDead 所有中间主节点副本无法连接或停止工作
\- AllIntermediateMasterReplicasNotReplicating 所有中间主节点副本未进行复制
\- UnreachableIntermediateMasterWithLaggingReplicas 无法访问的中间主节点且存在滞后的副本节点
\- UnreachableIntermediateMaster 无法访问的中间主节点
\- BinlogServerFailingToConnectToMaster Binlog服务器无法连接到主节点
主节点意外使用change master to

到主节点上
stop slave;
reset slave all;
show slave status \G; #为空

change master to
master_host=‘172.16.208.12’,
master_user=‘replica’,
master_password=‘Tgqs@123’,
MASTER_LOG_FILE=‘mysql-bin.000117’,
MASTER_LOG_POS=157 ;
show slave status \G;

标签:副本,orchestrator,MySQL,故障,compose,master,mysql,节点
From: https://blog.csdn.net/sozee910/article/details/141952772

相关文章

  • MySQL表的操作与数据类型
    目录前言一、表的操作1.创建一个表2.查看表的结构3.修改表 4.删除一个表二、 MySQL的数据类型0.数据类型一览:1.整数类型2.位类型3.小数类型4.字符类型前言在MySQL库的操作一文中介绍了有关MySQL库的操作,本节要讲解的是由库管理的结构——表一、表的操......
  • Python 之PyMysql
    Python之PyMysql目录Python之PyMysqlPymysql教程使用教程Pymysql教程介绍:PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库安装pipinstallPyMySQL使用教程#!/usr/bin/envpython#-*-coding:utf-8-*-##@Author:Alex##_____......
  • MySQL知识学习汇总
    一、存储引擎1.InnoDB引擎        InnoDB是一种兼顾高可靠性高和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎特性:1.支持外键。2.支持事务,遵循事务的ACID特性。3.行锁:MyISAM是对行加锁,锁粒度相较MyISAM引擎的表锁较细。操作时只锁定某......
  • 53 mysql pid 文件的创建
    前言接上一篇文章  mysql启动过程中常见的相关报错信息 在 mysql中文我们在 “servicemysqlstart”,“servicemysqlstop”经常会碰到 mysql.pid相关的错误信息比如 “TheserverquitwithoutupdatingPIDfile”我们这里来看一下 mysql中 mysql.pid文件的创......
  • 【SpringBoot Demo】MySQL + JPA + Hibernate + Springboot + Maven Demo
    主要包含:springboot+jpa+hibernate+mysql+lombok(两年前写过一个,现在重新记录一个)1. 目录结构: 2.pom 文件1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.or......
  • 【昌哥IT课堂】MySQL8.0新特性之不可见主键
     一、概述作为MySQLDBA,相信大家都经历过在复制模式下,如果没有主键,遇到loaddata,大事务,ddl等有大量表数据行扫描的行为时,会带来严重的主从延迟,给数据库稳定性和数据一致性带来隐患。MySQL8.0.30新版本为我们提供了一个新特性-(GeneratedInvisiblePrimaryKeys)简称GI......
  • [MySQL]为什么主键最好是有序递增的
    为什么主键索引最好是有序递增的我们在建表的时候,都会默认将主键索引设置为自增的,具体为什么要这样做呢?又什么好处?InnoDB创建主键索引默认为聚簇索引,数据被存放在了B+Tree的叶子节点上。也就是说,同一个叶子节点内的各个数据是按主键顺序存放的,因此,每当有一条新的数据插入时......
  • 高版本mysql访问出现Client does not support authentication protocol requested by
    访问8.0等高版本数据库报错:Clientdoesnotsupportauthenticationprotocolrequestedbyserver;considerupgradingMySQLclient(客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端)这种问题就是你访问的工具身份验证协议过于落后,如果是navicat之类的软件可以考虑......
  • ETL数据集成丨MySQL到MySQL的数据迁移实践
    前言MySQL数据迁移至另一MySQL数据库的过程,不仅是数据复制或移动的操作那么简单,它还涉及到一系列策略性考量和技术优化,旨在实现数据的高效、安全传输,以及确保目标系统的高性能运行。其深远意义在于为企业的数字化转型提供强有力的数据支撑,确保业务连续性与竞争力。ETLCloud作为......
  • 20240910_104851 mysql 存储过程 2006班
    修改结束符号delimiter新符号创建一个存储过程要求:查询所有的老师信息只显示id与nameDELIMITER$CREATEPROCEDUREshow1()BEGIN SELECTid,NAMEFROMteacher;END$使用存储过程CALLshow1();查看存储过程的创建语句查看名为p1的存储过程的名称showcreatep......