一.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

(2)实验实施

1.使用远程连接工具连接 3 台虚拟机,并修改 3 台主机名为 node1、node2 和 node3(修改完主机名后重新连接即可生效),命令如下:

hostnamectl set-hostname

2.将 3 个节点的防火墙和 SELinux 关闭,3 个节点的命令相同,命令如下:

关闭防火墙命令:
        systemctl stop firewalld(暂时关闭防火墙)
        systemctl disable firewalld(永久关闭防火墙)
        systemctl status firewalld(查看防火墙状态)

关闭Selinux命令:

vi /etc/selinux/config (将SELINUX=enforcing 改为SELINUX=disabled,并保存退出)
        setenforce 0(临时关闭)
        getenforce(查看状态)
        reboot(重启)

3.修改 3 个节点的 hosts 文件,3 个节点的 hosts 文件内容相同,内容如下:

vi /etc/hosts

4.解压 mariadb-ha 软件包,并将软件包上传至虚拟机的/opt 目录,配置 Yum 源,3

个节点的 Yum 源文件一致,可以先将系统自带的 repo 文件移除(也可不移除),创建 local.repo,
文件内容如下:

(3)安装并初始化数据库

        1.3 个节点做完准备工作,开始安装数据库,3 个节点安装数据库命令如下:
               # yum install MariaDB-server MariaDB-client galera -y
        成功安装完数据库服务后,启动数据库,并进行初始化,3 个节点执行命令如下:
              #  systemctl start mariadb
              # mysql_secure_installation

2.配置数据库文件

                安装完并初始化数据库后,进行数据库集群的配置,配置 Galera 集群很简
            单,只需要修改相应的配置文件即可。
                修改 3 个节点的数据库配置文件/etc/my.cnf.d/server.cnf ,添加[galera]部分如
           下。(注意修改 wsrep_node_name、wsrep_node_address 和 bind-address 字段)
                        node1 节点:

node2节点:

node3节点:

3 个节点都登录数据库,并赋予 root 用户远程权限,命令如下:

在修改完配置文件并确认无误后,将 3 个节点的数据库服务关闭,命令如下:

systemctl stop mariadb

3.启动数据库集群

                启动数据库集群,在不同的节点需要使用不同的命令,在 node1 节点启动
MariaDB Galera Cluster 服务,命令如下:
                [root@node1 ~]# galera_new_cluster
                node2 和 node3 节点启动数据库服务,命令如下:
                [root@node2 ~]# systemctl start mariadb
                [root@node3 ~]# systemctl start mariadb
                使用命令查看端口,若看到 3306 和 4567 端口,则 MariaDB Galera Cluster
集群配置成功。命令如下:

Mariadb数据库集群设计实验相关推荐

  1. 1+X 云计算运维与开发(中级)案例实战——使用 Mycat 构建读写分离的数据库集群

    1+X 云计算运维与开发(中级)案例实战--使用 Mycat 服务构建读写分离的数据库集群 前言 思路 实操 1.修改主机名,修改主机映射,配置yum源 2.给mycat机安装java服务,给db1和 ...

  2. 项目练习:构建读写分离的数据库集群

    目录 一.目标实现 二.项目准备 三.项目实施 1.配置基础环境 1.1修改主机名 1.2配置3台群集虚拟机的/etc/hosts文件 1.3.配置网卡 1.4.配置本地yum源 2.部署Mycat中 ...

  3. 构建读写分离的数据库集群

    准备三台虚拟机:mycat(Mycat中间件服务节点).db1(mariadb数据库集群主节点).db2(mariadb集群从节点) 基础环境配置 #vi /etc/hosts 添加以下配置 172. ...

  4. CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

    方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集 ...

  5. CentOS6.5安装DRBD+MariaDB+Heartbeat数据库集群

    本实验使用两台服务器搭建: 系统                  CentOS6.5 tese02              IP:192.168.1.244 test03             ...

  6. 架构设计之「数据库集群方案」

    在之前的文章中,我们知道数据库服务可能已经成为了很多系统的性能关键点,甚至是瓶颈了.也给大家介绍了数据库服务器从主备架构.到主从架构.再到主主架构的基础方案.但如果单台机器已经不能满足完整业务数据存储 ...

  7. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

  8. Vertica集群扩容实验过程记录

    需求: 将3个节点的Vertica集群扩容,额外增加3个节点,即扩展到6个节点的Vertica集群. 实验环境: RHEL 6.5 + Vertica 7.2.2-2 步骤: 1.三节点Vertica ...

  9. 数据库集群 MySQL主从复制

    MySQL主从复制 本节内容我们联系使用MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能. 因为要使用多个MySQL数据库,所以不建议在电脑上安装多个MySQ ...

最新文章

  1. Codeforces 1159A A pile of stones
  2. 支付宝小程序-点击退出小程序
  3. P4768 [NOI2018] 归程(kruskal 重构树)
  4. 小甲鱼 OllyDbg 教程系列 (十) : Windows 逆向常用 api 以及 XOFTSPY 逆向
  5. 这些常见的分布式存储系统,你是否都了解?
  6. java getparametermap_重写getParameterMap后,报错 ,
  7. Java企业面试算法新得体会之4递归和动态规划问题17问
  8. 实践 | kafka 基本使用
  9. MySQL数据类型中的二进制类型有_在MySQL数据类型中,常用的数据类型有()。A.()数值类型()B.()字符串类型()C.()日期时间类型()D.()二进制类型...
  10. VS Code 虽开源,但其精华部分是专有的?
  11. Go中的切片Slice
  12. 处理数字音乐文件用计算机软件,工具软件商标注册属于第几类?
  13. 使用Python采集淘宝类目数据并进行数据分析
  14. 基于JAVA WEB的网上书店的设计与实现
  15. PBRT的scene.pbrt使用方法
  16. 【C语言练习】分离英语句子中的单词并统计每个单词出现次数后排序输出
  17. textbox多行文本框_文本框脚本
  18. P3239 [HNOI2015]亚瑟王
  19. 这可能是最全最好的BLAST教程
  20. linux fall delay 10,delay/skew/slack/slew的区别

热门文章

  1. Vue移动端框架的选择
  2. JavaScript案例——红绿灯
  3. tf.keras下常用模块 activations、applications、datasets、layers、losses、optimizers、regularizers、Sequential
  4. postgresql系列之:安装postgresql数据库日志解析插件wal2json
  5. linux系统frpc程序下载安装,ubuntu18.04 frpc安装与自动启动
  6. 1.4半监督生成对抗网络(SGAN)
  7. 云主机安全-私有密钥安全认证
  8. 【算法】棋盘覆盖详解,基础教程~
  9. Python中用print函数输出
  10. 带内管理与带外管理的区别是什么