搭建数据库galera集群
主从架构
- 异步同步:效率高,安全性低,有延迟
- 实时同步:效率低,安全性高,无延迟
- 主节点:可读可写 (dump thread)
- 从节点:只读不写 (sql thread, i/o thread)

原理:
从库生成两个线程,一个I/O线程,一个SQL线程;
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。
主节点单点故障解决方案:
1.主主架构
互为主备,互相监控对方二进制日志文件进行同步
注意:当两个sql语句发生冲突的时候主主架构有可能出现数据不一致的现象
2.MHA(master high avalible)
需要多一台机器装上MHA,监控主从架构,当主节点宕了,会挑选数据与主节点最相近的从节点充当主节点。
MHA可以有多个配置文件,一个配置文件监控一个主从架构。
配置:
node1: 192.168.132.120
node2:192.168.132.121
主从关系:node1为主,node2为从
主节点
1. 修改配置文件
vim
/etc/my.cnf.d/server.cnf
在[mysqld]下加入以下
server-id=1
log-bin=mysql-bin
2. 重启mysql服务
systemctl restart mariadb
3.创建主从连接帐号与授权(sql命令行)
grant
replication slave on *.* to 'slave'@'%' identified by 'slave';
flush
privileges;
4.show
master status
从节点
1. 修改配置文件
vim
/etc/my.cnf.d/server.cnf
server-id=2
2. 重启mysql服务
service
mysqld restart
3.登录数据库
mysql
-uroot -proot
4. 建立主从连接
change
master to master_host='192.168.132.120', master_user='slave',
master_password='slave', master_log_file='mysql_bin.000001', master_log_pos=637;
#用的是当前的二进制日志文件与position
start
slave; #同时启动I/O
线程和SQL线程
show slave
status\G #\G竖排查看,后面不能再加分号
#如果Slave_IO_Running与 Slave_SQL_Running均为yes,则主从架构成功
可能出现的报错及解决方法:
报错1:
ERROR 1198
(HY000): This operation cannot be performed as you have a running slave ''; run
STOP SLAVE '' first
stop slave
执行建立主从连接的命令
start slave
报错2:
Got fatal
error 1236 from master when reading data from binary log: 'Could not find first
log file name in binary log index file'
stop slave;
reset
slave;
start slave
galera简介
- galera集群又叫多主集群,用于数据库的同步,保证数据安全
- 最少3台,最好是奇数台数,当一台机器宕掉时,因为仲裁机制,这台机器就会被踢出集群。
- 通过wsrep协议监控其它节点状态
- 实时同步,当一个事务在一台机器提交,所有机器同时提交。效率低,但是安全性高
galera集群搭建
准备
三台机器:
192.168.132.120
192.168.132.131
192.168.132.134
防火墙为开启状态,添加防火墙端口
setenforce
firewall-cmd --add-port=/tcp
firewall-cmd --add-port=/tcp
firewall-cmd --add-port=/tcp
配置
第一步:编辑配置文件
vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #库文件
wsrep_cluster_address="gcomm://192.168.132.120,192.168.132.131,192.168.132.134"
binlog_format=row #二进制日志指定为行模式,精确
第二步:初始化
其中1个节点执行,关机重启不需要再初始化,初始化一次就行。
mysqld_safe --wsrep_cluster_address=gcomm://192.168.132.120,192.168.132.131,192.168.132.134 #等待大约一分钟
第三步:启动数据库
执行初始化的节点:
systemctl stop mariadb
galera_new_cluster
其它节点:
systemctl restart mariadb
如果数据库启动失败,
vim /var/lib/mysql/grastate.dat
查看UUID是否是集群的UUID,如果不是需要手动修改为集群的UUID之后在启动
集群的UUID从执行初始化的节点查看
第四步:查看状态
show status like '%wsrep%';
关键参数:
wsrep_cluster_size | 3 | ##集群成员
wsrep_cluster_status | Primary | ##主服务器
wsrep_connected | ON | ##当前是否连接中
wsrep_incoming_addresses | 192.168.132.120:3306,192.168.132.131:3306,192.168.132.134:3306 | ##连接中的数据
wsrep_ready | ON | ##插件是否应用中
wsrep_cluster_state_uuid | b8ecf355-233a-11e8-825e-bb38179b0eb4 | ##UUID 集群唯一标记,每个节点UUID相同
| wsrep_received | 35 | ##数据复制接收次数
注意
如果启动集群出错可参考以下方案
哪个节点最后关闭,就在哪个节点执行galera_new_cluster,其余节点systemctl start mariadb
可以查看/var/lib/mysql/grastate.dat文件的safe_to_bootstrap: 1参数,如果为1代表此节点最后关闭
搭建数据库galera集群的更多相关文章
- Linux下MySQL/MariaDB Galera集群搭建过程【转】
MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...
- Linux下MySQL/MariaDB Galera集群搭建过程
MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...
- 使用GTID给Galera集群做数据库异步复制
一.为什么要做Galera集群异步复制 Galera集群解决了数据库高可用的问题,但是存在局限性,例如耗时的事务处理可能会导致集群性能急剧下降,甚至出现阻塞现象.而不幸的是,类似报表等业务需求就需要做 ...
- 基于keepalived搭建MySQL热机集群
背景 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,M ...
- mysql主从配置和galera集群
mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构 ...
- Docker 版ansible galera集群
1. 部署galera集群 利用四台主机cicd.node1.node2.node3来搭建galera集群. 1> 上传压缩包至cicd,解压得到ansible配置文件 [root@cicd ~ ...
- mysql基础之mariadb galera集群(多主)
一.概念 galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性. galera集群是基于wsrep协议(端口4 ...
- Linux下搭建Lotus Domino集群
Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...
- MariaDB Galera集群部署--技术流ken
Galera集群介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎. 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 ...
随机推荐
- 四种为HttpClient添加默认请求报头的解决方案
HttpClient在Web调用中具有广泛的应用,而为它添加默认请求头是我们经常遇到的需求,本文介绍4种为HttpClient添加默认请求头的方式. 第一种方式 直接在创建的HttpClient对象的 ...
- Linux系统简介以及基本操作(一)
Linux简介(操作系统) Linux发展史(了解) Linux出现于1991年,是由芬兰赫尔辛基大学学生李纳斯·托瓦兹(Linus Torvalds)偶然发现的,他当时是为了方便下载学校网站的一些视 ...
- cogs249 最长公共子串(后缀数组 二分答案
http://cogs.pro:8080/cogs/problem/problem.php?pid=pxXNxQVqP 题意:给m个单词,让求最长公共子串的长度. 思路:先把所有单词合并成一个串(假设 ...
- HDU 4719Oh My Holy FFF 线段树+DP
/* ** 日期: 2013-9-12 ** 题目大意:有n个数,划分为多个部分,假设M份,每份不能多于L个.每个数有一个h[i], ** 每份最右边的那个数要大于前一份最右边的那个数.设每份最右边的 ...
- B. Tea Queue codeforces Round.37.div2 队列
B. Tea Queue time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- yzoj P2349 取数 题解
题意 1到n个自然数中选k个自然数要求两两不相邻,问有多少种方法,模m eg(1 3 5 ) 又是一道打表规律题,正常解法dp可以通过前缀和优化到O(N* K).另外我们可以重新定义F[I,J]表示从 ...
- javascript删除数组元素的7个方法
在JavaScript中,除了Object之外,Array类型(数组)恐怕就是最常用的类型了.与其他语言的数组相比,JavaScript中的Array非常灵活.这种灵活性有利有弊,好处是其富有创造性, ...
- SQL数据同步到ELK(二)- Elastic Search 安装
开篇废话 没错,前面扯了一堆SQL SERVER,其实我连Elastic Search根本没动手玩过(是不是与时代有点脱节了?),那今天我就准备尝试安装一个ELK的简单集群出来(这个集群是使用我的小米 ...
- Erlang中的RSA签名
RSA签名校验 -spec check_rsa_sign(DataBin, Sign, RSAPublicKeyBin, DigestType) -> boolean when DataBin ...
- Scrum团队的最佳规模?
无论你在小型创业公司工作还是在大公司的新产品线工作,当团队人数越来越多时总会达到一个临界点.尽早识别这个临界点可以让您的团队避免进入低效阶段.每个产品都是不同的,团队合作也是如此.因此,拆分团队也需要 ...