末学者笔记--MariaDB 数据库 末玄_weixin_30527143的博客-程序员宅基地

技术标签: 运维  开发工具  数据库  

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 <[email protected]> |

  | 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库已经同步。

 

 

 

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

转载于:https://www.cnblogs.com/feige2L/p/10901853.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30527143/article/details/99750568

智能推荐

Qt画中局部放大(内部显示)_qt网格布局局部放大_youyicc的博客-程序员宅基地

直接上代码widget.h#ifndef WIDGET_H#define WIDGET_H#include <QLabel>#include <QPixmap>#include <QWidget>#include <QResizeEvent>#include <QMouseEvent>class Widget : public QWidget{ Q_OBJECTprivate: int x,y; b_qt网格布局局部放大

单向数据流动_单向数据流、-程序员宅基地

import UIKitimport Foundation/单向数据流动*****//// https://onevcat.com/2017/07/state-based-viewcontroller//// 新状态 = f(旧状态, 用户行为)/// func reducer(state: State, userAction: Action) -> State/// func ..._单向数据流、

力扣(LeetCode)94. 二叉树的中序遍历-程序员宅基地

思路:这次使用非递归法来遍历中序遍历:根左右,①所以在找到最左边的结点之前,我们一直找的是根左根左根左……直到我们找到最左边的子节点(假设其父节点是p)②则这个时候应该一层一层的回找相关的右结点,这个时候就把当前结点转到p->right,继续进行①操作,直到找到最右边的结点具体操作:(假设初始的时候根节点不为空,并申请一个栈Stack,这里用数组来代替,数组下标初始为-1)①...

rest_framework框架4(rest_framework框架----认证权限频率组件)-程序员宅基地

认证与权限频率组件认证组件局部视图认证在app01.service.auth.py:class Authentication(BaseAuthentication): def authenticate(self,request): token=request._request.GET.get("token") token_obj...

isinstance——python判断变量是否为某一类型_isinstance(x, numpy.ndarray)是?-程序员宅基地

python编程时经常会用到变量类型作为if的判断依据,如果直接 if type(var) == 'int',则输出肯定是False的。因为哪怕你的变量就是int类型,type(var)和'int'也不划等号。这个时候,有一个函数:isinstance用法如下:import cv2import numpyimg = cv2.imread('test.jpg')print(is..._isinstance(x, numpy.ndarray)是?

022 Java查询表-程序员宅基地

1.Map接口1.1Map接口Map接口定义的集合称为查询表,用于存储键值对(hey-value)形式存储数据的数据结构,可以把Map看成多行两列的表格,第一列存储Key,第二列存储Value注意:key值不能重复,是指Map中不能包含任意两个equals为true的值1.2put方法是指将key-value的值存入Map中,若key 的值已经存在,则将对应value覆盖,

随便推点

5G主要应用-程序员宅基地

5G未来移动应用包括以下三大领域:**增强型移动宽带 (Embb: Enhance Mobile Broadband):**通过更高的带宽和更短的时延继续提升的用户视觉感知;对时延(1ms)和可靠性(99.999%)的要求很高**大规模机器类通信(Mmtc: massive Machine Type of Communication):**万物互联,对接入数量和能效有很高要求;对连接数量和耗电/待机的要求较高**高可靠低时延通信(uRLLC:The Ultra Reliable Low Latency

ros / autoware中使用USB摄像头_autoware.ai 接入usb摄像头-程序员宅基地

一个usb接口的摄像头,本次使用罗技(Logitech)摄像头。一、使用软件库里的uvc-camera功能包1.1 检查摄像头lsusb显示如下:Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 007: ID 046d:082b Logitech, Inc. Webcam C1..._autoware.ai 接入usb摄像头

第三章 图像空域增强_解决旋转缩放变形中的漏点问题_贵贵贵胖的博客-程序员宅基地

直方图是图像最基本的统计特征,反映了图像灰度值的分布情况。灰度直方图是图像增强中涉及最广的基本概念之一。灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的像素数目,进而反映图像中每种灰度出现的频率。代数运算是对两幅图像进行整体处理的运算方法,包括两幅图像对应像素的和、差、积、商。图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需要的算数操作,还能为许多复杂的图像处理提供准备。_解决旋转缩放变形中的漏点问题

人工智能第八章答案神经网络,神经网络简答题_小浣熊的技术的博客-程序员宅基地

这种分层结构,是比较接近人类大脑的结构的。传统神经网络(这里作者主要指前向神经网络)中,采用的是backpropagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。_人工智能第八章答案神经网络

4-9:TCP协议之延迟应答和捎带应答_tcp 延迟_快乐江湖的博客-程序员宅基地

文章目录一:延迟应答二:捎带应答一:延迟应答假设接收端的缓冲区是1M,一次收到了500K的数据,如果立即应答那么返回的窗口就是500K;但是有的时候可能处理端应用程序速度较快,极短时间内就把这些数据消费掉了;那么在这种情况下,应用程序处理数据的能力还远远没有到达极限,即便窗口再大一点也还是可以处理得来的。所以如果接收端稍微迟一点应答,那么这个时候就可以返回1M窗口越大网络的吞吐量就越大,传输效率就越高,因此我们的目标就是在保证网络不堵塞的情况下尽量提高传输效率当然,不是所有的包都可以延迟应答数量_tcp 延迟

echarts的图形边角度数的调整-程序员宅基地

在操作echarts时,需求要求echarts的柱状图图形上有相应的弧度图1:原始不含度数的图形图2:度数为5的图形图3:度数为25的图形解决方法:代码展示: series: [{ name : '投标人名称', type : 'bar', stack : '次数', label :