最近在做这方面的一些调优,就顺便记录一下。
1。 MariaDB Galera 集群概述:
1。简要说明:
MariaDB Galera Cluster是在mysql innodb存储引擎上实现多主、数据实时同步的系统架构。业务层面不需要分离读写,数据库读写压力可以按照既定的规则分配到各个节点。上。数据端完全兼容MariaDB和MySQL。
2。特点:
(1)。同步复制
(2).双活多主拓扑逻辑
(3)。集群内任意节点均可读写数据
(4)。自动成员控制,故障节点自动从集群中移除
(5)。自动加入节点
(6)。真正的并行复制,基于行级别
(7)。直接客户端连接,原生MySQL接口
(8)。每个节点都包含数据的完整副本
(9)。通过wsrep接口实现多数据库数据同步
3.局限性
(1)。当前复制仅支持InnoDB存储引擎。任何写入其他引擎的表,包括 mysql.* 表都不会被复制,但 DDL 语句将被复制,因此创建的用户将被复制。但是插入到mysql.user...不会被复制。
(2)。 DELETE操作不支持没有主键的表。没有主键的表的顺序在不同的节点上会有所不同。如果执行 SELECT...LIMIT...,将会出现不同的结果集。
(3)。在多主环境中,不支持LOCK/UNLOCK TABLES,并且锁定函数GET_LOCK()、RELEASE_LOCK()…
(4)。查询日志不能保存在表中。如果查询日志开启,则只能保存到文件中。
(5)。允许的最大事务大小由 wsrep_max_ws_rows 和 wsrep_max_ws_size 定义。任何大型操作都将被拒绝。比如大的LOAD DATA操作。
(6)。由于集群对并发控制持乐观态度,事务提交可能会在这个阶段中止。如果两个事务在集群中的不同节点上写入并提交到同一行,则失败的节点将中止。对于集群级别的中止,集群会返回死锁错误代码(错误:1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK))。
(7).XA 事务不受支持,因为提交时可能会回滚。
(8)。整个集群的写吞吐量受到最弱节点的限制。如果一个节点变慢,那么整个集群也会变慢。为了稳定的高性能要求,所有节点应该使用统一的硬件。
(9)。建议至少有 3 个集群节点。
(10)。如果DDL语句出现问题,集群就会被破坏。
使用快速百胜方法。
MariaDB.repo
版本可以参考baseurl中的连接,替换数字,以及系统位数
使用 yumclearnall 清除缓存
10.1.X之后的版本与之前的版本有所不同。没有 Mariadb galera 服务器包。
你也可以自己使用cmake。 (我觉得没必要)
然后更改配置文件(根据自己的系统优化)
不一一解释了,当时用tpcc-mysql调优的参数。
启动第一个
可能需要很长时间,但是通过日志我们可以看到数据库是否恢复正常。
如果你还在咬的话,可以忽略它,直接crtl+c
对于第二台和第三台机器,只需服务mysql启动即可。只要有一个,就不需要第一次启动命令了。
查看集群状态
添加haproxy后,需要添加haproxy健康检查以及集群间互访的权限