,,,,需求,解决问题点:
,,,, 1:现有的mysql数据主从模式,数据同步延迟;
,,,, 2: mysql主从进程经常崩溃,数据找平困难。
,,,, 3:数据库主从或者主主模式数据查询,写入慢;
,,4:mariadb或者mysql数据库节点性能需要指数级提升;
,,5:mariadb或者mysql数据库对数据安全性有较高的要求,
,,6:项目要求数据库有横向扩展的能力;
,,7:等等…
,,,
一,MariaDB Galera集群概要:
1。简述:
,,,MariaDB Galera集群是一套在mysql innodb存储引擎上面实现多主机及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去。在数据方面完全兼容MariaDB和mysql .
2 .特性:
,,,(1)同步复制同步复制
,,,(2).Active-active多主机拓扑逻辑
,,,(3)可对集群中任一节点进行数据读写
,,,(4)。自动成员控制,故障节点自动从集群中移除
,,,(5)。自动节点加入
,,,(6)。真正并行的复制,基于行级
,,,(7)。直接客户端连接,原生的MySQL接口
,,,(8)。每个节点都包含完整的数据副本
,,,(9)。多台数据库中数据同步由wsrep接口实现
3。局限性
,,,(1)目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql。*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是插入mysql.user…将不会被复制的。
,,,(2)delete操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行选择极限……将出现不同的结果集。
,,,(3)在多主环境下锁定/解锁表不支持,以及锁函数GET_LOCK (), RELEASE_LOCK ()…
,,,(4)。查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。
,,,(5)。允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的数据加载操作。
,,,(6),由于集群是乐观的并发控制,事务承诺可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对于集群级别的中止,集群返回死锁错误代码(错误:1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)。
,,,(7).XA事务不支持,由于在提交上可能回滚。
,,,(8)。整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。
,,,(9)。集群节点建议最少3个。
,,,(10)。如果DDL语句有问题将破坏集群。
二:安装,配置
1:安装系统,内核版本
[root@galeradbnode-6-11 ~] #,
/etc/redhat-release
Linux CentOS释放7.2.1511(核心),
[root@galeradbnode-6-11 ~] #,
uname -
Linux galeradbnode-6-11 3.10.0-327.18.2.el7。x86_64 # 1 SMP清华2016年5月12日11:03:55 UTC x86_64 x86_64 x86_64 GNU/Linux
mysqld 10.1.14-MariaDB
2:节点信息如下:
安装集群至少需要3个节点
galeradbnode-6-11 galeradbnode-6-12
galeradbnode-6-13
3:各节点配置百胜源:
猫在/etc/yum.repos.d/mariadb.repo<& lt; EOF
[mariadb]
名称=mariadb
baseurl=http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
安装注意事项:
清理
/usr/bin/mysql *
/usr/sbin/mysql *
#确认本机防火墙上开放了所需TCP 3306和TCP 4567的端口
iptables -输入- eth0 - p TCP——dport 3306 - j接受
iptables -输入- eth0 - p TCP——dport 4567 - j接受
简单配置:
galeradbnode-6-12:172.16.6.12
安装mariadb:
yum - y安装mariadb-server
# # # # # # # # # #如果需要修改数据目录执行下面操作# # # # # # # # # # # # #
修改启动文件中数据存储目录
# vim/etc/init.d/mysql
basedir=/usr
datadir=/数据/3306/
创建数据目录
mkdir - p/数据/3306/
mkdir - p,/var/lib/mysql/
修改权限
乔恩- r mysql。mysql/数据/3306/数据
乔恩- r mysql。mysql,/var/lib/mysql/
#旧环境需要先删除旧文件
rm射频/var/lib/mysql/*
#初始化mysql服务
mysql_install_db——用户=mysql