栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

OpenStack云平台控制节点mariadb数据库产生大量gcache.page.xxx文件导致磁盘占满,OpenStack指令执行报ERROR

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenStack云平台控制节点mariadb数据库产生大量gcache.page.xxx文件导致磁盘占满,OpenStack指令执行报ERROR

【问题描述】

OpenStack云平台上3个控制节点中有1个控制节点上的mariadb 数据产生了大量的gcache.page.xxx文件,造成磁盘空间占满,最后导致数据库不正常,OpenStack控制节点上执行OpenStack先关指令时会报:ERRO(InternalServerError):An unexpected error prevented the server from fulfilling your request.(HTTP 500)

【问题排查】

查看mariadb数据库的版本

mysql --version

5.5版本,属于开源产品bug

【解决方法】

1、分别检查OpenStack的3个控制节点上mariadb的运行状态

systemctl status mariadb.service

2、检查出问题的控制节点3数据库正常,可以先停掉该节点的数据库

systemctl stop mariadb.service

3、因为目前/根目录已块满了,所以先创建一个临时目录

mkdir -v /var/lib/bakmysql

将gcache.page.xxx文件先移动到临时目录下

cd /var/lib/mysql

mv  gcache.page.*  ../bakmysql

4、启动数据库,查询数据库状态是否正常

systemctl start mariadb.service

systemctl status mariadb.service

5、查询数据库状态,节点数size是否为3

mysql

use mysql;

Show status like “%wsrep%”;

【补充信息】

MariaDB Galera Cluster介绍

Galera Cluster是Codership公司开发的一套免费开源的高可用方案,Galera Cluster即安装了Galera的Mariadb集群。其本身具有multi-master特性,支持多点写入。Galera Cluster的三个(或多个)节点是对等关系,每个节点均支持写入,集群内部会保证写入数据的一致性与完整性。

官网:

http://galeracluster.com

文档:

https://galeracluster.com/library/documentation/index.html

官方给出的特性如下:

真正的多主集群,Active-Active架构,即所有节点可以同时读写数据库

同步复制,没有复制延迟

多线程复制

没有主从切换操作,无需使用虚IP

热备份,单个节点故障期间不会影响数据库业务

支持节点自动加入,无需手动拷贝数据,自动的节点成员控制,失效节点自动被清除;新节点加入数据自动复制

支持InnoDB存储引擎

对应用程序透明,原生MySQL接口

无需做读写分离

部署使用简单

galera集群缺点:

加入新节点时开销大,需要复制完整数据

不能有效地解决写扩展的问题,所有的写操作都发生在所有的节点;

有多少个节点,就有多少份重复的数据

由于事务提交需要跨节点通信,即涉及分布式事务操作,因此写入会比主从复制慢很多,节点越多,写入越慢,死锁和回滚也会更加频繁

对网络要求比较高,如果网络出现波动不稳定,则可能会造成两个节点失联,Galera Cluster集群会发生脑裂,服务将不可用

仅支持InnoDB/XtraDB存储引擎,任何写入其他引擎的表,包括mysql.*表都不会被复制,DDL语句可以复制,但是insert into mysql.user(MyISAM存储引擎)之类的插入数据不会被复制

Delete操作不支持没有主键的表,因为没有主键的表在不同的节点上的顺序不同,如果执行select … limit …将出现不同的结果集

整个集群的写入吞吐量取决于最弱的节点限制,集群要使用同一的配置

基于认证的复制原理:

https://galeracluster.com/library/documentation/tech-desc-introduction.html

Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。

Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制

Galera集群的复制功能是基于认证的复制,其流程如下:

当客户端发出一个commit的命令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将write-set纪录的内容发送给其他节点。

write-set将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。

如果认证测试失败,节点将丢弃write-set;如果认证测试成功,则事务提交。

mariadb Galera集群部署

安装mariadb

https://mariadb.com/kb/en/yum/#installing-mariadb-galera-cluster-with-yum

配置mariadb-galera-cluste

https://mariadb.com/kb/en/configuring-mariadb-galera-cluster/

https://galeracluster.com/library/training/tutorials/galera-on-aws.html

集群状态监控

SHOW GLOBAL STATUS LIKE 'wsrep_%';

单独查看cluster_status

SHOW STATUS LIKE 'wsrep_cluster_status';

参数说明:

wsrep_local_index = 2 在集群中的索引值

wsrep_cluster_status为Primary,表示节点为主节点,正常读写。

wsrep_ready为ON,表示集群正常运行。

wsrep_connected: 如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群

wsrep_cluster_size为3,表示集群有三个节点。

wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群。

wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时”分区”了.当节点之间网络连接恢复的时候应该会恢复一样的值。

wsrep_flow_control_paused:表示复制停止了多长时间.即表明集群因为Slave延迟而慢的程度.值为0~1,越靠近0越好,值为1表示复制完全停止.可优化wsrep_slave_threads的值来改善.

wsrep_flow_control_sent:表示该节点已经停止复制了多少次

【MariaDB+Galera集群应用场景模拟】

MariaDB+Galera集群应用场景模拟

详情请见,微信公众号:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746787.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号