MySQL Galera Cluster全解析 Part 10 grastate.dat文件详解
前期回顾
主机名 |
IP地址 |
操作系统 |
MySQL版本 |
插件版本 |
---|---|---|---|---|
rac1 |
11.12.14.29 |
Redhat 6.10 |
5.7.26 |
25.3.27 |
rac2 |
11.12.14.30 |
Redhat 6.10 |
5.7.26 |
25.3.27 |
rac3 |
11.12.14.39 |
Redhat 6.10 |
5.7.26 |
25.3.27 |
前面我们说了Galera Cluster有三种不同的分支
- MySQL Galera Cluster by Codership
- Percona XtraDB Cluster by Percona
- MariaDB Galera Cluster (5.5 and 10.0) by MariaDB
上面我们说了如何一步步搭建MySQL Galera集群
这节内容介绍一个Galera 集群中非常重要的一个文件
即grastate.dat,他位于MySQL的数据文件目录,即datadir
1. 定位最近状态的节点
当我们关闭一个节点时,其seqno会写入grastate.dat文件中,这时后续的seqno该节点将无法接收到
注意数据库开启状态或者异常关闭时seqno值为-1
当我们将所有节点关闭,准备重启时我们需要知道哪个节点是最后关闭的,并使用它来引导集群
这时查看seqno的值即可,最大的即可
2. 安全引导保护
安全引导即safe to bootstrap ,从3.19版本开始,Galera为防止在错误的节点上引导集群,引入了安全引导的保护
Galera会自动判断哪个节点是最后一个离开集群的,并将信息写入grastate.dat文件中
如果我们使用safe_to_bootstrao为0的节点来引导,数据库将无法启动
日志中报错如下
2016-11-07 01:49:19 5572 [ERROR] WSREP: It may not be safe to bootstrap the cluster from this node.It was not the last one to leave the cluster and may not contain all the updates.To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1
我们可以手动编辑该文件将值设置为1来引导,不过这样可能会造成数据丢失
如果所有节点同时异常宕机,这时所有节点的值都为0,需要选择一台手动编辑
3. 定位崩溃的节点
同样我们可以使用该文件来定位哪些节点异常崩溃的
图中如果seqno为-1则说明数据库正在运行,或者非正常关闭
我们可以重新启动他,Galera集群会自动恢复并同步数据
4. 参考资料
https://galeracluster.com/library/training/tutorials/restarting-cluster.html
- 如何在Redhat7.3安装CDH5.14
- CDSW1.3的新功能
- 如何在Hue中配置HiveServer2的负载均衡
- 如何修改CDH集群的IP地址
- 如何在Kerberos环境的CDH集群部署Livy
- 如何在Kerberos环境下使用Haproxy实现HiveServer2负载均衡
- Hive与Impala的关键字
- 如何通过Livy的RESTful API接口向非Kerberos环境的CDH集群提交作业
- 如何编译Livy并在非Kerberos环境的CDH集群中安装
- Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs
- 如何在RedHat7上使用Bind搭建DNS服务
- 如何在Redhat7.3的CDH5.14中启用Kerberos
- 如何使用SAML配置Cloudera Manager的身份验证
- 如何使用Shibboleth搭建IDP服务并集成OpenLDAP
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 算法和数据结构: 十一 哈希表
- 【DB笔试面试849】在Oracle中,在没有配置ORACLE_HOME环境变量的情况下,如何获取ORACLE_HOME目录?
- 算法和数据结构: 九 平衡查找树之红黑树
- 算法和数据结构: 七 二叉查找树
- Python 面向对象编程(下篇)
- 算法和数据结构: 符号表及其基本实现
- 算法和数据结构:堆排序
- mysql 优化海量数据插入和查询性能
- 聊聊dubbo-go的DubboPackage
- mysql行转列,列转行
- js异步编程
- C# SpinWait
- R:STRINGdb包用于string蛋白互作分析
- ManualResetEvent
- 非阻塞式的原子性操作-CAS应用及原理