末学者笔记--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库已经同步。

 

 

 

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

posted @ 2019-05-21 19:30  *云深不知处*  阅读(182)  评论(0编辑  收藏  举报