zoukankan      html  css  js  c++  java
  • 在CentOS7上安装 MariaDB Galera Cluster 多主集群

    1、MariaDB Galera Cluster介绍

    MariaDB Galera Cluster 是一个用于同步 MariaDB 数据库的多 master 集群的工具。在数据方面完全兼容 MariaDB 和 MySQL。特性:

    • 同步复制 Synchronous replication
    • Active-active multi-master 拓扑逻辑
    • 可对集群中任一节点进行数据读写
    • 自动成员控制,故障节点自动从集群中移除
    • 自动节点加入
    • 真正并行的复制,基于行级
    • 直接客户端连接,原生的 MySQL 接口

    2、环境准备

    准备两台虚拟机,分别安装CentOS7-1908(7.7)。

    服务器A:193.168.12.9  db1
    服务器B:193.168.12.10 db2

    两台虚机上关闭防火墙:

    systemctl stop firewalld
    systemctl disable firewalld

    两台虚机上关闭selinux:

    setenforce 0

    修改/etc/selinux/config,设置SELINUX=disabled,确保重启后也生效。

    3、安装mariadb 10.5

    默认centos的源里不带mariadb 10.5,需要自己配置,创建/etc/yum.repo.d/mariadb.repo文件,这里配置的是从阿里云镜像下载,速度比从官网快。内容如下:

    [mariadb]
    name=MariaDB
    baseurl=https://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64
    pgpkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
    pgpcheck=0

     下载并导入KEY:

    wget --no-check-certificate https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB /etc/pki/rpm-gpg/
    rpm --import /etc/pki/rpm-gpg/*

     用yum安装:

    yum install -y MariaDB-server MariaDB-client

     如果之前配置过其它源导致安装失败,可以先清理一下再重试:

    yum clean metadata

    两台数据库服务器做同样操作。

    4、配置mariadb

    启动mariadb:

    systemctl start mariadb

     可按需执行初始化:

    mysql_secure_installation

     mariadb默认仅允许root本地登录,需要手工创建root远程管理权限,可以新建,也可以修改当前root,新建的话:

    mysql -uroot -p
    use mysql
    create user root@'%' identified by 'mariadb';
    flush privileges;

     或者修改已有root的host:

    mysql -u root -p
    use mysql
    update user set host='%' where user='admin' and host='localhost';
    flush privileges;

    两台数据库服务器做同样操作。

    5、组建集群

    两台独立的数据库都准备好后,开始组建galera cluster,先停mariadb服务:

    systemctl stop mariadb

    修改mariadb的配置:/etc/my.cnf.d/server.cnf

    [galera]
    wsrep_on=ON
    wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
    wsrep_cluster_address=gcomm://193.168.12.9,193.168.12.10
    wsrep_cluster_name=rvsdb
    wsrep_node_name=db1
    wsrep_node_address=193.168.12.9
    binlog_format=row
    default_storage_engine=InnoDB
    innodb_autoinc_lock_mode=2
    wsrep_slave_threads=20
    innodb_flush_log_at_trx_commit=0
    bind-address=0.0.0.0

    两台服务器的配置里除wsrep_node_name和wsrep_node_address外,其它配置项都相同。

    以创建新集群的方式启动第一个节点:

    galera_new_cluster

     此时能看到mysqld进程以带参数的方式启动,并且同时监听4567和3306端口。

    需要注意galera_new_cluster仅执行一次,以后这个节点重启按正常服务方式启动就行了。

    以正常方式启动第二个节点:

    systemctl start mariadb

    如果启动没有报错,恭喜,集群组成完成。官方推荐集群至少3个节点,但2个也能工作,只是可能出现Split-Brain问题。

    此时双方分别登录自己的mariadb,查看集群状态,可以看到有相同的cluster_status_uuid,集群数量cluster_size也是2,表示两台。

    在两台上分别执行DDL或者SQL语句,均会同步到对方。

  • 相关阅读:
    Promise 解决回调地狱问题
    同步 异步 API 区别
    静态资源 读取方法
    路由
    HTTP 协议 get post 请求方式
    linux 查看日志
    putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示
    strpos 返回0时 ,比较false 不能加单引号
    禁止使用test类的就是禁止使用本来的$this对象.可以调用父类的对象
    大D实例化model-->调用自定义类方法,大M调用原声model方法
  • 原文地址:https://www.cnblogs.com/BoyTNT/p/13845943.html
Copyright © 2011-2022 走看看