一.MariaDB Galera Cluster
MariaDB Galera Cluster 是一套在 MySQL InnoDB 存储引擎上面实现 multi-master 及数据实时同步的系统架构,业务层面无需做读写分离工作,数据 库读写压力都能按照既定的规则分发到各个节点上去。在数据方面完全兼容 MariaDB 和 MySQL。
(1)主要功能 ① 同步复制。 ② 真正的 multi-master,即所有节点可以同时读写数据库。 ③ 自动的节点成员控制,失效节点自动被清除。 ④ 新节点加入数据自动复制。 ⑤ 真正的行级别,并行复制。 ⑥ 用户可以直接连接集群,使用感受上与 MySQL 完全一致。
(2)局限性 ① 目前复制仅仅支持 InnoDB 存储引擎,任何写入其他引擎的表,包括 mysql.*表将不会复制,但是 DDL 语句会被复制的,因此创建用户将会被复制, 但是插入用户将不会被复制的。 ② DELETE 操作不支持没有主键的表,没有主键的表在不同的节点顺序将 不同,如果执行 SELECT…LIMIT…,将出现不同的结果集。 ③ 在多主环境下,不支持 LOCK/UNLOCK TABLES(锁定表/解锁表), 以及 GET_LOCK(),RELEASE_LOCK()…(锁函数) ④ 查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。 ⑤ 允许最大的事务大小由 wsrep_max_ws_rows 和 wsrep_max_ws_size定义, 任何大型操作将被拒绝,如大型的 LOAD DATA 操作。 ⑥ 由于集群是乐观的并发控制,事务 commit 可能在该阶段中止。如果有两 个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对于集 群级别的中止,集群返回死锁错误代码为 Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)。 ⑦ XA 事务不支持,因为在提交上可能回滚。 ⑧ 整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢, 那么整个集群将变得缓慢。为了稳定的高性能要求,所有的节点应使用统一的硬 件。 ⑨ 集群节点建议最少 3 个。 ⑩ 如果 DDL 语句有问题将破坏集群。
二.基础准备
实验需要:mariadb-ha软件包()CentOS-7-x86_64-DVD-1804(下载映像文件,地址https://www.centos.org/download/)
(1)搭建三台实验节点
主机名 | 系统 | IP 地址 | |
node1 | CentOS-7-x86_64-DVD-1804 | 192.168.200.11 | |
node2 | CentOS-7-x86_64-DVD-1804 | 192.168.200.12 | |
node3 | CentOS-7-x86_64-DVD-1804 | 1192.168.200.13 |