当前位置: 首页 > news >正文

mysql 集群恢复

准备使用集群的时候发现集群起不来,

发现抱错集群各个节点都是readonly 状态,找了很多资料,由于集群处于不一致的情况需要防止不同的节点数据写入脏数据

取消节点readonly 方法如下:

MySQL 取消 super read only

直接关闭read only 模式

SET GLOBAL super_read_only = OFF;

登录 mysqlsh  执行

dba.configureLocalInstance()

Dba.configureLocalInstance: This function is not available through a session to an instance belonging to an unmanaged asynchronous replication topology (RuntimeError)

shell.connect('root@node1:3306')
Creating a session to 'root@node1:3306'
Fetching schema names for autocompletion... Press ^C to stop.
Closing old connection...
Your MySQL connection id is 215
Server version: 8.0.30 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.

看到一个帖子说创建了一个集群就好了

开始创建集群:

var cluster = dba.createCluster('testCluster')A new InnoDB Cluster will be created on instance 'node1:3306'.Disabling super_read_only mode on instance 'node1:3306'.
Validating instance configuration at node1:3306...This instance reports its own address as node1:3306Instance configuration is suitable.
NOTE: Group Replication will communicate with other members using 'node1:3306'. Use the localAddress option to override.Creating InnoDB Cluster 'testCluster' on 'node1:3306'...Adding Seed Instance...
NOTE: User 'mysql_innodb_cluster_1891693795'@'%' already existed at instance 'node1:3306'. It will be deleted and created again with a new password.
Cluster successfully created. Use Cluster.addInstance() to add MySQL instances.

创建成功,添加实例

cluster.addInstance('root@node2:3306');

结果报错: 

cluster.addInstance('root@node2:3306');WARNING: A GTID set check of the MySQL instance at 'node2:3306' determined that it contains transactions that do not originate from the cluster, which must be discarded before it can join the cluster.node2:3306 has the following errant GTIDs that do not exist in the cluster:
45fc6a70-48a9-11ed-adfc-000c29325d80:1WARNING: Discarding these extra GTID events can either be done manually or by completely overwriting the state of node2:3306 with a physical snapshot from an existing cluster member. To use this method by default, set the 'recoveryMethod' option to 'clone'.Having extra GTID events is not expected, and it is recommended to investigate this further and ensure that the data can be removed prior to choosing the clone recovery method.Please select a recovery method [C]lone/[A]bort (default Abort): C
Validating instance configuration at node2:3306...This instance reports its own address as node2:3306Instance configuration is suitable.
NOTE: Group Replication will communicate with other members using 'node2:3306'. Use the localAddress option to override.A new instance will be added to the InnoDB cluster. Depending on the amount of
data on the cluster this might take from a few seconds to several hours.Adding instance to the cluster...NOTE: User 'mysql_innodb_cluster_1780669600'@'%' already existed at instance 'node1:3306'. It will be deleted and created again with a new password.
Monitoring recovery process of the new cluster member. Press ^C to stop monitoring and let it continue in background.
Clone based state recovery is now in progress.NOTE: A server restart is expected to happen as part of the clone process. If the
server does not support the RESTART command or does not come back after a
while, you may need to manually start it back.* Waiting for clone to finish...
NOTE: node2:3306 is being cloned from node1:3306
** Stage DROP DATA: Completed
** Clone Transfer  FILE COPY  ############################################################  100%  CompletedPAGE COPY  ############################################################  100%  CompletedREDO COPY  ############################################################  100%  CompletedNOTE: node2:3306 is shutting down...* Waiting for server restart... ready 
* node2:3306 has restarted, waiting for clone to finish...
** Stage RESTART: Completed
* Clone process has finished: 75.75 MB transferred in about 1 second (~75.75 MB/s)State recovery already finished for 'node2:3306'The instance 'node2:3306' was successfully added to the cluster.

实例中有的gts没同步过来,需要同步选择C 复制过来,第二个实例也添加成功了

再添加第三个实例

查看集群状态

cluster.status(); 

cluster.status();  
{"clusterName": "testCluster", "defaultReplicaSet": {"name": "default", "primary": "node1:3306", "ssl": "REQUIRED", "status": "OK", "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", "topology": {"node1:3306": {"address": "node1:3306", "memberRole": "PRIMARY", "mode": "R/W", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.30"}, "node2:3306": {"address": "node2:3306", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.30"}, "node3:3306": {"address": "node3:3306", "memberRole": "SECONDARY", "mode": "R/O", "readReplicas": {}, "replicationLag": "applier_queue_applied", "role": "HA", "status": "ONLINE", "version": "8.0.30"}}, "topologyMode": "Single-Primary"}, "groupInformationSourceMember": "node1:3306"
}

集群状态运行正常

http://www.lryc.cn/news/239737.html

相关文章:

  • 基于STM32的色彩识别与分类算法优化
  • 阿里云发送短信
  • 关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效
  • hadoop在本地创建文件,然后将文件拷贝/上传到HDFS
  • NFC:应用场景广泛的短距离通信技术
  • CentOS使用docker安装OpenGauss数据库
  • 原理Redis-QuickList
  • js双击修改元素内容并提交到后端封装实现
  • Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署
  • 在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持
  • 前端如何判空
  • 基于SSM的焦作旅游协会管理系统设计与实现
  • 庖丁解牛:NIO核心概念与机制详解 07 _ 字符集
  • ansible的基本安装
  • 开发仿抖音APP遇到的问题和解决方案
  • 手机上玩.NET的两种方式
  • DedeBIZ 管理系统 DedeV6 v6.2.6 社区版 免费授权版
  • 编译 CUDA加速的 OpenCV-4.8.0 版本
  • 设计模式篇---外观模式
  • leetcode:520. 检测大写字母
  • 5-6求1-20的阶乘和
  • web需求记录
  • [网鼎杯 2018]Fakebook
  • 微信小程序蓝牙连接 uniApp蓝牙连接设备
  • 启动Dubbo项目注册Zookeeper时提示zookeeper not connected异常原理解析
  • 我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)
  • MATLAB算法实战应用案例精讲-【图像处理】图像缩放
  • Doris的PROPERTIES与ENGINE(九)
  • 华为云数据库 RDS 下载全量备份文件 wget
  • C#使用whisper.net实现语音识别(语音转文本)