广告
返回顶部
首页 > 资讯 > 数据库 >初识MariaDB之10——MariaDB Galera Cluster
  • 766
分享到

初识MariaDB之10——MariaDB Galera Cluster

2024-04-02 19:04:59 766人浏览 安东尼
摘要

一、背景介绍无论是采用binlog或者GTID的方式,其本质都是通过I/O_thread和sql_thread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cl

一、背景介绍

无论是采用binlog或者GTID的方式,其本质都是通过I/O_thread和sql_thread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cluster来解决此问题。

二、Galera Cluster介绍

Galera Cluster与传统的复制方式不同,不通过I/O_thread和sql_thread进行同步,而是在更底层通过wsrep实现文件系统级别的同步,可以做到几乎实时同步,而其上的Mysql对此一无所知

初识MariaDB之10——MariaDB Galera Cluster初识MariaDB之10——MariaDB Galera Cluster

这就要求mysql能够调用wsrep提供的api来完成,在Mariadb10.1之前的版本,支持Galera Cluster的版本是与Mariadb分开发行的,其版本名称就成为Mariadb-Galera,Mariadb10.1以后的版本中MariaDB Galera Cluste不再单独发行,而是以galera-25.3.12-2.el7.x86_64包的形式出现

三、实验目的

本次实验操作系统Centos7.4,数据库版本为MariaDB10.2.14,验证3节点下通过Galera Cluster实现数据同步。需要说明的是:

1.Galera Cluster最少要求3个节点以上,建议是大于3的奇数,2节点虽然可以部署,但无法避免脑裂的出现

2.尽管Galera Cluster不再需要binlog的形式进行同步,但建议还是在配置文件中开启该功能,原因是后期如果要有新节点加入,老节点通过SST全量传输的方式向新节点传输数据,很可能会拖垮性能,所以让新节点先通过binlog完成同步后在加入Galera Cluster是一种不错的选择

3.在Mariadb10.1之后版本中实现Galera Cluster用到的库文件libgalera_smm.so通过rpm -ql galera-25.3.12-2.el7.x86_64查找其位置

初识MariaDB之10——MariaDB Galera Cluster初识MariaDB之10——MariaDB Galera Cluster

四、操作步骤

1.node3节点主机操作

(1)安装MariaDB 10.2.14

(2)编辑配置文件并启动服务

[root@host3 ~]# vim /etc/my.cnf.d/server.cnf

[mysqld]

datadir=/var/lib/mysql

Socket=/var/lib/mysql/mysql.sock

skip_name_resolve=ON

relay_log=mysql-relaylog

relay_log_index=mysql-relaylog

relay_log_purge=OFF

slow_query_log=ON

server-id=10

innodb_file_per_table=ON

binlog_fORMat=ROW

log_bin=mysql-binlog

log_slave_updates=ON

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_cluster_name=ark

wsrep_provider=/lib64/galera/libgalera_smm.so

wsrep_cluster_address=GComm://172.16.10.30,172.16.10.40,172.16.10.50

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

innodb_doublewrite=1

[root@host3 ~]# galera_new_cluster  #第一次启用时在任意节点使用

(3)将配置文件发送给node4和node5

[root@host3 ~]# scp -r /etc/my.cnf.d/server.cnf root@172.16.10.40:/etc/my.cnf.d/

[root@host3 ~]# scp -r /etc/my.cnf.d/server.cnf root@172.16.10.50:/etc/my.cnf.d/

2.node4节点操作

(1)将配置文件中的server_id改为20

(2)启动MySQL服务

可以在日志中看到Galera Cluster的SST默认使用rsync传输

初识MariaDB之10——MariaDB Galera Cluster初识MariaDB之10——MariaDB Galera Cluster

(3)在node4创建一个用于复制的账户

[root@host4 ~]# mysql

MariaDB [(none)]> grant replication slave on *.* to 'bak'@'172.16.10.%' identified by 'bakpass';

MariaDB [(none)]> flush privileges;

(4)随意创建数据,在node3上验证是否同步

MariaDB [(none)]> CREATE DATABASE `hellodb`;

MariaDB [(none)]> CREATE TABLE `students` (

   ->   `StuID` int(10) unsigned NOT NULL AUTO_INCREMENT,

   ->   `Name` varchar(50) NOT NULL,

   ->   `Age` tinyint(3) unsigned NOT NULL,

   ->   `Gender` enum('F','M') NOT NULL,

   ->   `ClassID` tinyint(3) unsigned DEFAULT NULL,

   ->   `TeacherID` int(10) unsigned DEFAULT NULL,

   ->   PRIMARY KEY (`StuID`)

   -> );

MariaDB [(none)]> insert into hellodb.students (name,age) values ('QiaoFeng',40);

MariaDB [(none)]> insert into hellodb.students (name,age) values ('DuanYu',21);

MariaDB [(none)]> insert into hellodb.students (name,age) values ('XuZhu',24);

(5)备份当前数据库并发送到node5

[root@host4 ~]# mysqldump -uroot  --databases hellodb --master-data=2 --single-transaction --quick > /tmp/hellodb.sql

[root@host4 ~]# scp -r /tmp/hellodb.sql root@172.16.10.50:/tmp/

(6)再插入数据,模拟备份后又有新增数据

MariaDB [(none)]> insert into hellodb.students (name,age) values ('XuanCi','66');

3.node5操作

(1)将配置文件中的server_id改为30,注销[galera]段(目的是先通过binlog同步)

(2)启动MySQL服务

(3)查看备份时node4的binlog及position

初识MariaDB之10——MariaDB Galera Cluster初识MariaDB之10——MariaDB Galera Cluster

(4)恢复数据库,并验证

MariaDB [hellodb]> source /tmp/hellodb.sql

MariaDB [hellodb]> change master to master_host='172.16.10.40',master_user='bak',master_passWord='bakpass',master_port=3306,master_log_file='mysql-binlog.000004',master_log_pos=2061,master_connect_retry=10;

MariaDB [hellodb]> start slave;

MariaDB [hellodb]> select * from students;

+-------+----------+-----+--------+---------+-----------+

| StuID | Name     | Age | Gender | ClassID | TeacherID |

+-------+----------+-----+--------+---------+-----------+

|     3 | QiaoFeng |  40 | F      |    NULL |      NULL |

|     5 | DuanYu   |  21 | F      |    NULL |      NULL |

|     7 | XuZhu    |  24 | F      |    NULL |      NULL |

|     9 | XuanCi   |  66 | F      |    NULL |      NULL |

+-------+----------+-----+--------+---------+-----------+

(5)停止主从复制和MySQL服务

MariaDB [hellodb]> start slave;

[root@host5 ~]# systemctl stop mariadb.service

(6)取消[galera]段注销并重启服务

再在任意节点添加数据3个节点间都可以进行同步,至此操作全部完成

补充说明:

1.Galera Cluster节点停止服务后,后期如果数据有更新,只需要重启MySQL服务,数据会自动同步

2.后期如果有新的节点加入,可以在新节点的配置文件里将自己的IP地址加入wsrep_cluster_address变量中后再启动数据库,这样之前节点配置文件里的wsrep_cluster_address变量中就算没有新节点的IP地址也能实现同步,建议在老节点wsrep_cluster_address变量中加入新节点IP地址后重启服务

存在的疑问:

在任意Galera Cluster节点导入一个数据库,无论是命令行下通过mysql < xxx方式还是使用sql语句source xxx方式,只有当前节点有数据,其他节点仅创建该数据库和库中表,但表中无任何数据,重启MySQL服务后也不会同步,原因不明


您可能感兴趣的文档:

--结束END--

本文标题: 初识MariaDB之10——MariaDB Galera Cluster

本文链接: https://www.lsjlt.com/news/39544.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 初识MariaDB之10——MariaDB Galera Cluster
    一、背景介绍无论是采用binlog或者GTID的方式,其本质都是通过I/O_thread和sql_thread的形式进行的同步,因为无法避免复制延迟而饱受诟病,基于上述MariaDB引入了Galera Cl...
    99+
    2022-10-18
  • Centos7 mariadb-galera-cluster-5.5+HAProxy+keepalived
    1 服务器    mysql00 192.168.20.104    mysql01 192.168.20.102    mysql02 192....
    99+
    2022-10-18
  • MariaDB Galera Cluster部署实践
    官方文档: http://galeracluster.com/documentation-webpages/index.html 一、 Galera Cluster的工作原理 主要关注点是数据一致性。 事务...
    99+
    2022-10-18
  • MariaDB Galera Cluster应用实践
    数据是互联网公司的核心资产,所以好多公司在架构设计上不仅要保证业务系统的高可用,同时还要考虑数据存储的高可用以及安全性。在职公司是一家创业型公司,之前的应用系统是由.Net 和SQLserver组合的架构,...
    99+
    2022-10-18
  • 初识MariaDB之1——MariaDB的安装
    一、MariaDB介绍MariaDB是Mysql在被Oracle收购后由原作者重新开发的一种关系型数据库程序,由于是同一个作者,所以在操作上与Mysql十分类似,版本也是相互对应,如:MariaDB5.5对...
    99+
    2022-10-18
  • Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境
    小编给大家分享一下Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获...
    99+
    2022-10-18
  • 初识MariaDB之2——MariaDB多实例安装
    一、背景介绍MariaDB多实例就是在一台机器上开启多个不同的服务端口,运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的、互不干涉的服务,各个实例可以根据不同的配置文件设置相...
    99+
    2022-10-18
  • 初识MariaDB之3——MariaDB备份与还原
    一、基础知识数据的重要性无需多说,需要强调的是备份不是目的,能恢复才是目的,以下就Mariadb的一些概念进行说明。1.存储引擎的分类Mariadb5.1以后的版本,默认使用支持事务的InnoDB存储引擎,...
    99+
    2022-10-18
  • 实战Mariadb galera Cluster集群架构
    Mariadb galera Cluster安装:操作系统:Centos7.4版本集群数量:3个节点主机信息: 192.168.153.142 node1 selinux=disabled fire...
    99+
    2022-10-18
  • mariadb集群搭建---Galera Cluster+ProxySQL教程
    目录前言一、Galera Cluster二、基础环境搭建三、加入配置参数启动集群四、 测试五、ProxySql总结前言 本篇主要用于记录mariadb环境下Galera Cluster模式集群环境的搭建过程,只做演示中间...
    99+
    2023-03-19
    mariadb集群搭建
  • 初识MariaDB之7——MHA高可用
    一、背景介绍在传统的MySQL一主一从或一主多从结构中,主节点存在单点故障隐患,为了解决该故障,进而引入了MHA高可用的方式。MHA由manager和node两部分组成,manager可以安装在一个独立的服...
    99+
    2022-10-18
  • 初识MariaDB之6——半同步复制
    一、背景介绍MySQL主从复制能解决一定的单点故障问题,但其异步的工作特性存在一定的隐患,比如主节点事务提交后还未写入binlog,此时主节点故障后,但主节点认为事务已提交,从节点无法从主节点获取到该事务的...
    99+
    2022-10-18
  • 初识MariaDB之8——GTID主从复制
    一、背景介绍在MySQL5.6之前,主从复制是通过binlog和position实现的,当A主机宕机后,B主机成为新的主节点,此时在C主机上需要使用sql语句:CHANGE MASTER TO MASTER...
    99+
    2022-10-18
  • Centos7安装mariadb galera cluster数据库集群 & 详解
    #Galera集群特点集群之间无延时,同步复制。而master-slave主从异步复制,存在延迟。active-active多主,集群内部服务器都是同时写,必须等所有集群内所有数据库都完成数据写入,才会反馈...
    99+
    2022-10-18
  • 初识MariaDB之4——Xtrabackup备份与还原
    一、基础知识mysqldump是mysql自带的一个单线程的逻辑备份工具,当数据量很大时,使用mysqldump备份的时间会非常长,且无法做增量备份,xtrabackup是一款基于底层块复制、开源的备份工...
    99+
    2022-10-18
  • mariadb galera cluster数据库集群一键安装脚本
    mariadb galare cluster是一套高可用全主mysql集群方案,优势高度数据一致性。脚本:#!/bin/bash# Author:      laocao# D...
    99+
    2022-10-18
  • MariaDB Galera Cluster集群企业版编译安装与配置
    安装环境系统:CentOS 6.8 x86_64软件:MariaDB 10.1.16节点一:192.168.11.132 4C 8GB节点二:192.168.11.133 4C 8GB软件获取访问Maria...
    99+
    2022-10-18
  • AWS RDS MySQL和MariaDB Galera Cluster的优缺点比较总结
    AWS RDS MySQL     亚马逊提供的MySQL服务,部署高可用区域,单主节点、隐藏从节点,自动实现HA切换,可以进行在线扩展,超越单个数据库部署的容量,以处理高读取...
    99+
    2022-10-18
  • 初识MariaDB之5——主从复制原理及部署
    一、原理简介当前主流的数据库为了保证数据一致性,都采用支持事务类型的数据存储引擎,如innodb等,当一个事务提交后先写到事务日志中,在进行数据修改,并且将对数据产生任何影响的语句都记录在二进制日志中,主从...
    99+
    2022-10-18
  • 初识MariaDB之9——keepalive+GTID双主实现高可用
    一、背景介绍传统的主从复制架构下,尽管可以使用半同步的方式进行读写分离,但是主节点仍然存在单点隐患,在规模不大的情况下可以采用keepalive+双主的模式对主节点进行高可用保护,客户端通过VIP访问MyS...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作