zoukankan      html  css  js  c++  java
  • 末学者笔记--MariaDB 数据库 末玄

    Mariadb 数据库 五玄(集群配置)

    一.mariadb主从                                                     

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

     

    1. mysql主从配置准备

    1Yum配置

      [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)目标架构

      服务器1MariaDB01  192.168.254.28

      服务器2MariaDB02  192.168.254.29

      操作系统: CentOS7.3

      数据库版本:    MariaDB-10.3.7

      主从关系: MariaDB01为主,MariaDB02为从

       

    2.配置操作

    【对MariaDB01】:

    1 修改配置文件

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

      在[mysqld]或者[server]下加入以下

      server-id=1

      log-bin=mysql-bin

    2重启mysql服务

      service mysqld restart

    (3)创建主从连接帐号与授权

      CREATE USER 'slave'@'%' IDENTIFIED BY 'slave';

      GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';

      flush privileges;

      可一步:grante replication slave on *.* to slave@‘%’ identified by ‘slave’

      ——>show master status     #查看状态

    MariaDB02

    1 修改配置文件

      ——#vim /etc/my.cnf.d/server.cnf
      server-id=2


    2 重启mysql服务

      ——#service mysqld restart

    3 登录数据库建立主从连接

      ——#mysql -uroot -p123

      ——>CHANGE MASTER TO MASTER_HOST='192.168.254.28', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000001',   MASTER_LOG_POS=1443;

      ——>start slave;      #开启线程

    3. 验证

      在DB01上:

      ——>create database test01

      use test01

      create table students(id int(10), name char(20), age int(10))

      之后查看从节点(DB02)是否有test01数据库和students

    4.查看mysql二进制log

      mysqlbinlog  /var/lib/mysql/mysql-bin.000001

    5. 如果出现不同步可以执行以下步骤

      ——>stop slave

      ——>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

      ——>start slave

    或者

      ——>stop slave;

      mysql> change master to

      master_host='192.168.254.28',

      master_user='user',

      master_password='pwd',

      master_port=3306,

      master_log_file='mysql-bin.000008',

      master_log_pos=483;

      ——>start slave

    二.mariadb galera集群(多主)                                         

     

    1.概念:

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

     

    补:同步与异步】

    同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。

    优缺点:执行效率会比较低,耗费时间,但有利于我们对流程进行控制,避免很多不可掌控的意外情况,保证数据的一致性及安全性;

     

    异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进行处理,这样可以提高执行的效率。

    优缺点:执行效率高,节省时间,但是会占用更多的资源,也不利于我们对进程进行控制,数据不能保证一致性及安全。

     

    打电话的过程就是同步通信,发短信时就是异步通信。

    2.  目标架构:

    实战Mariadb10.310.3自带galera软件,10版本以前都需单独下载galera组件 galera Cluster集群架构

    Mariadb galera Cluster安装:

    操作系统:Centos7.3版本

    集群数量:3个节点

    主机信息:

    192.168.153.142 node1 selinux=disabled firewalld关闭

    192.168.153.143 node2 selinux=disabled firewalld关闭

    192.168.153.144 node3 selinux=disabled firewalld关闭

     

    3. 搭建步骤:

    1主机之间互相解析:三台节点都要执行(此步不进行亦可)

      vim /etc/hosts

      192.168.153.142 node1

      192.168.153.143 node2

      192.168.153.144 node3

    2安装软件包

     第一种方法:(yum install -y MariaDB-server MariaDB-client galera

      配置yum安装源和配置mariadb galera安装源

      yum源配置挂iso

      设置mariadbyum源并安装(所有节点都要)

      修改yum源文件

      ——#vi /etc/yum.repos.d/mariadb.repo

      [mariadb]

      name = MariaDB

      baseurl = http://yum.mariadb.org/10.3.5/centos74-amd64

      gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

      gpgcheck=1

      enabled=1

      安装galera软件时需要解决它的依赖包:boost-program-options.x86_64 (直接yum源安装即可)

     

    第二种:直接yum install MariaDB -y

    3mariadb初始化 (三个节点都需要执行)

      安装完成后会提示需要对mariadb进行初始化(设置密码)

      ——#systemctl start mariadb

      ——#mysql_secure_installation (按提示设置mysql密码)

      ——#systemctl stop mariadb(为后面启动做准备)

    4配置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.153.142,192.168.153.143,192.168.153.144"    #各节点的ip

      wsrep_node_name=node1         #节点主机名  

      wsrep_node_address=192.168.153.142    #本节点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 fileflush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。

                        #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-2mariadb-3,注意要把 wsrep_node_name wsrep_node_address 改成相应节点的 hostname ip

     

    【注意】:此配置每一行都不可有空格符(直接粘贴会有空符,需删除),否则后续无法完成。

     

    5启动集群服务:

      启动 MariaDB Galera Cluster 服务:
      (第一次启动要用初始化:mysqld_safe --wsrep_cluster_address=gcomm://192.168.254.24,192.168.254.27,192.168.254.36 >/dev/null &)

      [root@node1 ~]# /bin/galera_new_cluster

       (此处若报错,vim /var/lib/mysql/grastate.dat,查看最后一行的值是否为‘1’,若为0,改为1,再启动一次

      剩余两节点启动方式为:(尽量依次启动完成,防止出错

      [root@node2 ~]# systemctl start mariadb

       【注】:此处易启动不了且报错,

          如果报错,请查看此文件,确保uuid一致:

          ——#vim /var/lib/mysql/grastate.dat

            # GALERA saved state

            version: 2.1

            uuid:    a393feef-f639-11e8-9b89-4e75f9b8fb0f    #保证3个主机的uuid一致

            seqno:   -1

            safe_to_bootstrap: 0

      查看集群状态:(集群服务使用了45673306端口))

      [root@node1 ~]# netstat -tulpn | grep -e 4567 -e 3306

      tcp 0 0 0.0.0.0:4567 0.0.0.0: LISTEN 3557/mysqld

      tcp6 0 0 :::3306 ::: LISTEN 3557/mysqld

    6验证集群状态:

      node1上执行:

      [root@node1 ~]# mysql -uroot -p    ##进入数据库

      查看是否启用galera插件

      连接mariadb,查看是否启用galera插件

      MariaDB [(none)]> show status like "wsrep_ready";

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

      | Variable_name | Value |

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

      | wsrep_ready | ON |

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

      1 row in set (0.004 sec)

     

      目前集群机器数

      MariaDB [(none)]> show status like "wsrep_cluster_size";

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

      | Variable_name | Value |

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

      | wsrep_cluster_size | 3 |

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

      1 row in set (0.001 sec)

     

      查看集群状态

      MariaDB [(none)]> show status like "wsrep%";

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

      | Variable_name | Value |

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

      | wsrep_apply_oooe | 0.000000 |

      | wsrep_apply_oool | 0.000000 |

      | wsrep_apply_window | 1.000000 |

      | wsrep_causal_reads | 14 |

      | wsrep_cert_deps_distance | 1.200000 |

      | wsrep_cert_index_size | 3 |

      | wsrep_cert_interval | 0.000000 |

      | wsrep_cluster_conf_id | 22 |

      | wsrep_cluster_size | 3 | ##集群成员

      | wsrep_cluster_state_uuid | b8ecf355-233a-11e8-825e-bb38179b0eb4 | ##UUID 集群唯一标记

      | wsrep_cluster_status | Primary | ##主服务器

      | wsrep_commit_oooe | 0.000000 |

      | wsrep_commit_oool | 0.000000 |

      | wsrep_commit_window | 1.000000 |

      | wsrep_connected | ON | ##当前是否连接中

      | wsrep_desync_count | 0 |

      | wsrep_evs_delayed | |

      | wsrep_evs_evict_list | |

      | wsrep_evs_repl_latency | 0/0/0/0/0 |

      | wsrep_evs_state | OPERATIONAL |

      | wsrep_flow_control_paused | 0.000000 |

      | wsrep_flow_control_paused_ns | 0 |

      | wsrep_flow_control_recv | 0 |

      | wsrep_flow_control_sent | 0 |

      | wsrep_gcomm_uuid | 0eba3aff-2341-11e8-b45a-f277db2349d5 |

      | wsrep_incoming_addresses | 192.168.153.142:3306,192.168.153.143:3306,192.168.153.144:3306 | ##连接中的数据库

      | wsrep_last_committed | 9 | ##sql 提交记录

      | wsrep_local_bf_aborts | 0 | ##从执行事务过程被本地中断

      | wsrep_local_cached_downto | 5 |

      | wsrep_local_cert_failures | 0 | ##本地失败事务

      | wsrep_local_commits | 4 | ##本地执行的sql| wsrep_local_index | 0 |

      | wsrep_local_recv_queue | 0 |

      | wsrep_local_recv_queue_avg | 0.057143 |

      | wsrep_local_recv_queue_max | 2 |

      | wsrep_local_recv_queue_min | 0 |

      | wsrep_local_replays | 0 |

      | wsrep_local_send_queue | 0 | ##本地发出的队列

      | wsrep_local_send_queue_avg | 0.000000 | ##队列平均时间间隔

      | wsrep_local_send_queue_max | 1 |

      | wsrep_local_send_queue_min | 0 |

      | wsrep_local_state | 4 |

      | wsrep_local_state_comment | Synced |

      | wsrep_local_state_uuid | b8ecf355-233a-11e8-825e-bb38179b0eb4 | ##集群ID

      | wsrep_protocol_version | 8 |

      | wsrep_provider_name | Galera |

      | wsrep_provider_vendor | Codership Oy <info@codership.com> |

      | wsrep_provider_version | 25.3.23(r3789) |

      | wsrep_ready | ON | ##插件是否应用中| wsrep_received | 35 | ##数据复制接收次数

      | wsrep_received_bytes | 5050 |

      | wsrep_repl_data_bytes | 1022 |

      | wsrep_repl_keys | 14 |

      | wsrep_repl_keys_bytes | 232 |

      | wsrep_repl_other_bytes | 0 |

      | wsrep_replicated | 5 | ##随着复制发出的次数

      | wsrep_replicated_bytes | 1600 | ##数据复制发出的字节数

      | wsrep_thread_count | 2 |

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

      58 rows in set (0.003 sec)

     

      查看连接的主机

      MariaDB [(none)]> show status like "wsrep_incoming_addresses";

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

      | Variable_name | Value |

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

      | wsrep_incoming_addresses | 192.168.153.142:3306,192.168.153.143:3306,192.168.153.144:3306 |

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

      1 row in set (0.002 sec)

    7测试集群mariad数据是否同步

    MariaDB [(none)]> create database lizk;

    MariaDB [(none)]> show databases;

    在其他两个节点上可以查看lizk库已经同步。

    #---————————————————————分割线——————————————————————————————#

  • 相关阅读:
    OSPF
    【今日CS 视觉论文速览】 24 Jan 2019
    【今日CS 视觉论文速览】Wed, 23 Jan 2019
    【今日CS 视觉论文速览】 21 Jan 2019
    【Processing学习笔记】安装与入门
    【今日CS 视觉论文速览】Part2, 18 Jan 2019
    【今日CS 视觉论文速览】Fri, 18 Jan 2019
    【今日CS 视觉论文速览】Thu, 17 Jan 2019
    【今日CS 视觉论文速览】Part2, 16 Jan 2019
    【今日CS 视觉论文速览】Wed, 16 Jan 2019
  • 原文地址:https://www.cnblogs.com/feige2L/p/10901853.html
Copyright © 2011-2022 走看看