学习预览:

(一)mysql 运维基础篇(Linux云计算从入门到精通)

(二)mysql 索引和视图(数据库运维基础补充)

(三)mysql 触发器、存储过程和函数(数据库运维基础补充)

(四)MySQL安全机制和日志管理(mysql运维)

(五)mysql数据备份—物理备份(完备+lvm快照+xtrabackup)+逻辑备份(mysqldump+导入导出)

(六)mysql复制技术—M-S主从配置(传统+GTID)+M-M-S-S主从配置(GTID)

(七)mysql中间件mycat配置和部署(基于M-M-S-S)

(八) 数据库集群技术—Galera Cluster安装与配置

(九)数据库集群技术Galera+mycat(数据库运维学习终章)


CONTENT

8.1 Galera Cluster概述

8.2 安装Galera Cluster

8.2.1 前期准备

8.2.2 下载并安装Galera

8.3 配置Galera replication

8.3.1 创建数据同步的用户

8.3.2 文件my.cnf配置

8.4 验证Galera

8.4.1 各台插入数据并查看

8.4.2 重启服务器


8.1 Galera Cluster概述

Galera Cluster就是集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,都是基于Galera的。

为什么使用Galera集群呢?因为MySQL的主从模式,天生的不能完全保证数据一致,这就需要一个新型的架构来解决这个问题。所以Galera集群就产生了。

相比传统的主从复制架构,Galera Cluster解决的最核心问题是,在三个实例(节点)之间,它们的关系是对等的,multi-master架构的,在多节点同时写入的时候,能够保证整个集群数据的一致性,完整性与正确性。

上图中有三个实例,组成了一个集群,而这三个节点与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,这种一般称为multi-master架构,当有客户端要写入或者读取数据时,随便连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构。

这个架构支持多点写入,完全避免了主从复制经常出现的数据不一致的问题,从而可以做到主从读写切换的高度优雅,在不影响用户的情况下,离线维护等工作,保持MySQL的高可用性。

8.2  安装Galera Cluster

8.2.1 前期准备

在安装Galera Cluster之前介绍一下mysql的结构,总共四台数据库服务器,实际生产过程中会不一样,根据需要进行改动。

三台主机添加各自的主机解释,关掉防火墙,卸载掉之前安装的mysql,因为要重新下载带有补丁的mysql包。

8.2.2 下载并安装Galera

(1)官网下载链接:https://galeracluster.com/downloads/

我选择的是稳定版本5.7,这个安装包很全面:

(2)打开7版本,发现这就是yum仓库,下面配置yum仓库来安装它。(复制好网页链接)

(3)配置yum仓库,并开始安装;并配置本地yum仓库,方便其他三台主机下载。

#1、配置yum仓库
vim /etc/yum.repos.d/galera.repo
[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
gpgcheck=0#2、打开缓存,只需要修改keepcache=1。
#这样可以缓存下载的Galera软件包,这样我们就可以自建一个yum本地仓库让其他三台主机下载
vim /etc/yum.conf
keepcache=1#3、开始安装
yum repolist
yum install mysql-wsrep-5.7.x86_64 galera.x86_64 -y#4、查看是否安装好
[Root@galera1 ~]# rpm -qa | grep mysql
mysql-wsrep-libs-compat-5.7-5.7.29-25.21.el7.x86_64
mysql-wsrep-common-5.7-5.7.29-25.21.el7.x86_64
mysql-wsrep-client-5.7-5.7.29-25.21.el7.x86_64
mysql-wsrep-server-5.7-5.7.29-25.21.el7.x86_64
mysql-wsrep-5.7-5.7.29-25.21.el7.x86_64
mysql-wsrep-libs-5.7-5.7.29-25.21.el7.x86_64#5、自建yum本地仓库
mkdir galera
find /var/cache/yum/x86_64/7/ -iname '*.rpm' -exec cp -a {} galera \;
ll galera/
yum install vsftpd createrepo -y
cp -r galera /var/ftp/
ls /var/ftp/galera/
createrepo /var/ftp/galera/
systemctl start vsftpd;systemctl enable vsftpd#6、其它三台主机开始配置yum本地源,指向Galera1的ftp
#Galera2配置vim /etc/yum.repos.d/galera.repo[garela]
name=galera
baseurl=ftp://galera1/galera
gpgcheck=0#copy到其他两台机器上
scp -r /etc/yum.repos.d/galera.repo galera3:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/galera.repo galera4:/etc/yum.repos.d/#下面在这三台机器上安装,是不是很快呢
yum install mysql-wsrep-5.7.x86_64 galera.x86_64 -y

8.3 配置Galera Replication

8.3.1 创建数据同步的用户

#启动数据库
systemctl start mysqld;systemctl enable mysqld#修改密码
newpass=`grep 'temporary passsword' /var/log/mysqld.log | awk '{print $NF}'`
mysqladmin -p'$newpass' password Root@123#创建用于同步数据的账号,每个主机都要设置
mysql> grant all on *.* to 'sst'@'192.168.119.%' identified by 'Galera@123';
mysql> flush privileges;

8.3.2 文件my.cnf配置

#Galera1配置,其他三台主机也是一样,my.cnf里面的文件稍作修改就好了
vim /etc/my.cnf
---------------------------------------------------------------
server-id=1
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'  #Galera1是主的,所以这边不用配置
wsrep_node_name='galera1'
wsrep_node_address='192.168.119.163'
wsrep_sst_auth=sst:Galera@123
wsrep_sst_method=rsync
---------------------------------------------------------------systemctl restart mysqldss -tnlp | egrep '3306|4567'  #检测端口是否打开
LISTEN     0      128          *:4567                     *:*                   users:(("mysqld",pid=38838,fd=12))
LISTEN     0      80          :::3306                    :::*                   users:(("mysqld",pid=38838,fd=38))mysql> show status like 'wsrep%';  #这时候只开启了Galera1,所以只有1个集群
-----------------------------------------------------------------------
| wsrep_incoming_addresses     | 192.168.119.163:3306                 |
| wsrep_evs_delayed            |                                      |
| wsrep_evs_evict_list         |                                      |
| wsrep_evs_repl_latency       | 0/0/0/0/0                            |
| wsrep_evs_state              | OPERATIONAL                          |
| wsrep_gcomm_uuid             | dc83dbfb-83b7-11ea-9c4c-37b1d187d984 |
| wsrep_cluster_conf_id        | 1                                    |
| wsrep_cluster_size           | 1                                    |
-----------------------------------------------------------------------#把Galera1的my.cnf文件拷给其他三台文件,改一下server-id,主机名和IP以及集群
for i in {2..4}; do scp -r /etc/my.cnf galera$i:/etc; done#在举出一个Galera2的配置情况,其他模仿就好了,配置重启mysqld
vim /etc/my.cnf
----------------------------------------------------------------------------------------
server-id=2
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera3,galera4'  #这边需要假如其他三位主机,防止有机器down掉
wsrep_node_name='galera2'
wsrep_node_address='192.168.119.160'
wsrep_sst_auth=sst:Galera@123
wsrep_sst_method=rsync
----------------------------------------------------------------------------------------#等所有的Mysqld服务器配置好之后,再看一下集群状态,成功的状态应该是四个哦
mysql> show status like 'wsrep%'; --------------------------------------------------------------------------------------
| wsrep_incoming_addresses     | 192.168.119.161:3306,192.168.119.162:3306,192.168.119.160:3306,192.168.119.163:3306 |
| wsrep_evs_delayed            |                                                                                     |
| wsrep_evs_evict_list         |                                                                                     |
| wsrep_evs_repl_latency       | 0.000933283/0.16847/1.00222/0.372863/6                                              |
| wsrep_evs_state              | OPERATIONAL                                                                         |
| wsrep_gcomm_uuid             | 73a7b43d-83ba-11ea-bcdd-1ed6d698c92d                                                |
| wsrep_cluster_conf_id        | 4                                                                                   |
| wsrep_cluster_size           | 4
--------------------------------------------------------------------------------------

8.4 验证Galera

8.4.1 各台插入数据并查看

#Galera1创建数据库、表并插入数据
mysql> create database testdb;
mysql> create table testdb.t1(id int,name varchar(50));
mysql> insert into testdb.t1 values (1,'galera1');#Galera2插入数据
insert into testdb.t1 values (2,'galera2');#Galera3插入数据
mysql> insert into testdb.t1 values (3,'galera3');#Galera4插入数据并查看表t1
mysql> insert into testdb.t1 values (4,'galera4');
mysql> select * from testdb.t1;
+------+---------+
| id   | name    |
+------+---------+
|    1 | galera1 |
|    2 | galera2 |
|    3 | galera3 |
|    4 | galera4 |
+------+---------+

8.4.2 重启服务器

这个就要注意了,重启Galera2、Galera3和Galera4没有问题,但是重启Galera1就有问题咯,因为在Galera1的my.cnf文件中,它并没有加入其它任意一个集群,所以就出现问题了。

所以只要在my.cnf中加入其它任意一台mysql服务器就可以了。这个我就不演示啦。

(八) 数据库集群技术—Galera Cluster安装与配置相关推荐

  1. 数据库集群技术(转载)

    用来保存计算最终结果的 数据库是整个信息系统的重要组成部分, 技术也相对成熟.然而,对于所有数据库而言,除了记录正确的 处理结果之外,也面临着一些挑战:如何提高处理速度,数据可用性.数据安全性和数据集 ...

  2. 数据库集群技术分析和比较(一)

    一.引言 数据库是用来保存计算的最终结果的,所以是整个信息系统的最重要组成部分.在许多人看来,当前的数据库技术已经可以说是非常地成熟了.然而,在满足不断增长的联机事务处理应用方面,当前的数据库技术其实 ...

  3. 数据库集群技术 -摘自网络

    简介 当今世界是一个信息化的世界,我们的生活中无论是生活.工作.学习都离不开信息系统的支撑.而信息系统的背后用于保存和处理最终结果的地方就是数据库.因此数据库系统就变得尤为重要,这意味着如果数据库如果 ...

  4. MySQL数据库集群之PXC方案---安装pxc集群

    1. 准备工作 1.1 准备虚拟机 因为我们要实现的是三台mysql节点集群,所以准备3台虚拟机 192.168.1.173 192.168.1.174 192.168.1.166 1.2 下载pxc ...

  5. mysql数据库集群技术_使用MySQL-Cluster搭建MySQL数据库集群

    1.MySQL集群的作用: - 解决访问节点的单点故障 - 数据存储节点的单点故障 - 解决数据存储节点数据备份问题 2.集群: 使用一组服务器提供相同的服务 3.关于MySQL-Cluster: M ...

  6. Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置

    0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值 ...

  7. kafka_2.10-0.8.1.1.tgz的1或3节点集群的下载、安装和配置(图文详细教程)绝对干货...

    kafka_2.10-0.8.1.1.tgz的1节点集群 我这里是使用的是,kafka自带的zookeeper. 以及关于kafka的日志文件啊,都放在默认里即/tmp下,我没修改.保存默认的 1. ...

  8. MySQL数据库集群实现负载均衡的安装配置详解

    本文我们详细地介绍了MySQL 5.0数据库集群负载均衡的安装配置工作,希望能够对您有所帮助. 本文我们主要介绍了MySQL数据库集群实现负载均衡的安装配置工作,接下来我们就让我们一起来了解一下这部分 ...

  9. 数据库集群分类和介绍

    大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列. 在数据库集群方面,很 ...

最新文章

  1. django 自定义日志配置
  2. 《Docker技术入门与实战》——2.4 本章小结
  3. cxf发布rest风格的webService
  4. 机器学习算法Python实现:基于情感词典的文本情感分析
  5. 个人计算机使用的标准键盘,计算机键盘的基本用法!
  6. 9月第1周国内IT技术类网站:CSDN覆盖数持续走低
  7. 董明珠:格力100%不会爆雷 爆雷的白马股不是真正白马股
  8. Hibernate讲解(三)-类映射文件中常用属性的了解
  9. 关于deployment descripter(web.xml)的认识
  10. 在Qtopia中添加国际化支持
  11. Hive的下载,安装,配置以及连接的非常详细的过程
  12. 日记侠:我为什么学习网络营销
  13. IPD解读——华为的研发管理成功之路
  14. linux http嗅探工具 httpry
  15. 新版应急预案现场处置应急演练方案各行业应急处置方案(共289份,265M)
  16. Adobe全家桶2022版官方正版来啦~~
  17. 深度解读德勤RPA2020年市场调研报告
  18. 定制Android开发者专属T恤
  19. Java将OFD文件转PDF文件
  20. SpringCloud与微服务Ⅷ --- Hystrix断路器

热门文章

  1. B+树与B树的区别、Hash索引与B+树索引的区别
  2. DOS命令:attrib
  3. idea 如何 进行无限续期
  4. 物联网实训Day03
  5. 怎样成为让人无法拒绝的人?
  6. 央视曝光微信“养号”灰产,谈如何防范互联网黑产
  7. 任正非与李一男的悲喜剧
  8. Google Play商店面向用户推出积分奖励计划,可兑换应用和商品
  9. 时间序列分析笔记(待整理)
  10. APP创业——时不待人