zoukankan      html  css  js  c++  java
  • mariadb集群配置(主从和多主)

    mariadb主从

    主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建。

    mariadb主从架构流程

    主增删改,从同步

    数据修改写进磁盘,以二进制文件格式保存,并创建授权登陆账号,从节点登陆同步账号读取此二进制文件。


    主节点生成一个dump线程接收从节点请求,从节点生成io与sql线程,但主节点并不只能有一个线程。


    io线程发送请求读二进制文件,dump线程返回给reley log(中继日志里),然后sql线程再读取中继日志进行回放,同步数据。


    black hole引擎(只存储二进制文件):用于主从节点之间的连接,降低主节点的压力


    同步延迟,二进制文件记录是串行。坏处是延迟,好处是能够一定时间内撤销错误操作


    异步同步优缺点:


    异步能解放出来节省时间和资源,不安全


    同步能提高安全,但效率低


    mariadb主从解决单点故障方案


    MHA:通过mha(配置文件)监控主从架构,master high avaliable 主机高可用(布置在另一台主机上)


    互为主从:有可能会造成数据的不一致

    mariadb架构的基础之上的读写分离的实现:proxy mycat

    环境准备

    准备两天同网段的主机,这里设置192.168.253.147为主,192.168.253.148为从

    主配置:

    1)关闭两台主机的防火墙

    2)修改配置文件/etc/my.cnf.d/server.cnf ;在mysql模块下添加:server_id=1  和  log_bin=mysql_bin ,重启mariadb

    3)进入mysql创建主从连接账号

    create user  slave@'%'  identified  by '1';

    4)授权

    grant  replication slave on *.* to slave@'%' identified by '1';

    5)查看master状态

    show mater status; 

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql_bin.000002 |      342 |              |                  

    注意:此状态会随着重启等操作改变,一旦改变从节点需要重新登陆。

    从配置:

    1)修改配置文件/etc/my.cnf.d/server.cnf,添加server_id=2

    2)  进入mariadb,建立主从联系。

    change master to master_host='192.168.253.147',master_user='slave',master_password='1', master_log_file='mysql_bin.000002';

    3)启动线程

    start slave;

    4)查看从节点线程

    show slave  statusG ;          #查看下面两个进程是否都为yes状态    ;G为竖行显示

        Slave_IO_Running: Yes    
        Slave_SQL_Running: Yes

    如果显示为connecting可能有以下两个原因:

    a.登陆的密码、pos错误,这是因为mater节点的状态不稳定,重启等会改变。

    b.防火墙没关。

    5)验证是否搭建架构成功

    在主节点上创建数据库或者表等操作,如果从节点数据跟随变化,则证明成功。

     端口:

    mariadb:3306

    galera:4567

    redis:6379

    mariadb galera集群(多主)

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

    搭建galera集群架构步骤:

    1)下载mariadb10.3版本(自带galera软件),并关闭全部防火墙,三台已经相互备份好的,关闭防火墙的主机(不是必须)

    2)三台主机相互解析

    vim /etc/hosts

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.253.147 node2             
    192.168.253.135 node3
    192.168.253.148 node4       #同网段,且主机名要与后面配置文件的主机名一致,ip也要一致

    3)配置galera文件,三台主机的galera模块下添加以下内容

    主节点配置文件server.cnf
    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.253.147,192.168.253.148,192.168.253.135"   #各节点的ip
    wsrep_node_name=node1         #节点主机名  
    wsrep_node_address=192.168.153.147 #本节点ip
    binlog_format=row            #二进制日志设置为行模式
    default_storage_engine=InnoDB    #使用的默认引擎
    innodb_autoinc_lock_mode=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         #避免各个节点的数据不一致,这种情况需要等待全同步复制
    将此文件复制到mariadb-2、mariadb-3,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应节点的 hostname 和 ip。

    根据各自信息不同点稍做更改。

     4)在任意一台主机上执行初始化命令:

    mysqld_safe --wsrep_cluster_address=gcomm://192.168.253.147,192.168.253.135,192.168.253.148

    #将集群内的ip都写上

    5)完成后,执行/bin/galera_new_cluster 。其他两台重启mariadb服务。(事先关闭)

    6)查看端口ss-tnl,看4567端口是否开启。

    7)进入mysql数据库,执行:show variables like '%wsrep%' ; 查看连接状态和集群数量。连接ip等。

    8)测试。创建数据库等看是否会同步。

  • 相关阅读:
    通过ADB命令查看当前Android运行程序的页面信息
    C#中发起GET和POST请求的方法
    CocoaPods使用
    Carthage使用
    Mac终端常用命令和操作
    Mac OS环境变量配置
    Mac OS包管理器Homebrew
    js利用localStroage实现一个页面栈
    vue-cli快速搭建Vue脚手架 (vue-cli 3.x 模板)
    yarn和npm常用命令
  • 原文地址:https://www.cnblogs.com/zzzynx/p/10869429.html
Copyright © 2011-2022 走看看