• Mariadb galera 集群


     

        部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性。)

    环境准备:三台服务器

    master:192.168.206.3

    master1:192.168.206.5

    master2:192.168.206.6

    yum配置

    操作系统:CentOS7.3

    数据库版本:MariaDB-10.3.7

    1>yum配置,(三端数据库信息保持一致)

    [mariadb]

    name=MariaDB

    baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/

    gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

    gpgcheck=1

    2>关闭防火墙 

    3>三个主机都要互相解析

    vim /etc/hosts

    4>主节点编辑配置文件

    vim /etc/my.cnf.d/server.cnf

    在 [ galera ] 下面

    wsrep_on=ON  wsrep_provider=/usr/lib64/galera/libgalera_smm.so     #galera的库文件的地址

    wsrep_cluster_address="gcomm://192.168.206.3,192.168.206.5,192.168.206.6"   #各节点的ip

    wsrep_node_name=node1         #节点主机名  

    wsrep_node_address=192.168.206.3 #节点ip

    binlog_format=row        #二进制日志设置为行模式  row (安全性最高,性能最低)

    default_storage_engine=InnoDB    #使用的默认引擎 innoDB  支持事务

    innodb_autoinc_lock_mode=2      #2为性能最好  

    wsrep_slave_threads=1              #并发线程数

    innodb_flush_log_at_trx_commit=0                   #0.log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在

                                                                                事务提交的时候,不会主动触发写入磁盘的操作,#1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该  模式为系统默                                                                              认。

                                                                               #2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同

                                                                                时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作

    innodb_buffer_pool_size=120M       #设置缓存池大小

    wsrep_sst_method=rsync             #远程同步

    wsrep_causal_reads=ON         #避免各个节点的数据不一致,这种情况需要等待全同步复制 将此文件复制到master1、master2,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应                                                                          节点的 hostname 和 ip。

    注:graler 集群最好至少三个,两个的话。如果出现网络波动可能会出现脑裂;

    三端都需要配置

    5>第一次启动需要初始化

    &1

    mysqld_safe--wsrep_cluster_address=gcomm://192.168.206.3,192.168.206.5,192.168.206.6

     

    这里会hang住 ,等他执行一段时间就好,

    &2  执行  /bin/galera_new_cluster

     

    6>另外两端启动数据库

    service  mariadb restart

     7>查看集群状态(进程和端口)(查看wsrep 状态也可以)

    确保 wsrep 端口 :4567  与  mariadb端口: 3306 打开

    &show status like ‘wsrep%'

    8>测试

    &master端

    &master1端

     

    &master2端

     

    同步成功!

    注: 若三台主机 关机了,再起就起不来了。

    执行以下操作

    vim /var/lib/mysql/grastate.dat

    把safe_to_bootstrap更改为1

    # GALERA saved state

    version: 2.1 uuid:    a393feef-f639-11e8-9b89-4e75f9b8fb0f

    seqno:   -1

    safe_to_bootstrap: 1

  • 相关阅读:
    从头开始搭建分布式日志平台的docker环境
    spring mvc+ELK从头开始搭建日志平台
    两个与spring事务相关的问题
    shiro realm 注解失败问题解决过程
    如何解决CRUD操作中与业务无关的字段赋值
    通过angularjs的directive以及service来实现的列表页加载排序分页
    项目中应用eventbus解决的问题
    统一配置中心
    java枚举与.net中的枚举区别
    列表页的动态条件搜索
  • 原文地址:https://www.cnblogs.com/myxxjie/p/10906882.html
Copyright © 2020-2023  润新知