您的位置:首页 > 数据库 > MariaDB

galera-mariadb集群

2019-07-23 14:16 323 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_44697035/article/details/96992142

环境:系统centos7.3,全初始化环境

IP:192.168.2.111,192.168.2.106,192.168.2.107

 MariaDB 10.1及更高版本不再单独使用MariaDB Galera Cluster版本。只需下载MariaDB(10.1或更高版本)并正常配置您的群集。(官网原话)

 

所以我就直接安装10.1版本了,如果直接安装将会默认安装mariadb 5.5,需要安装mariadb10需要另外配置MariaDB.repo,这个是国内的yum源:

 

[code]# vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
[code]# yum install -y mariadb-server
# systemctl restart mariadb
# mysql_secure_installation

回车,密码,确认密码,回车到直接结束,mariadb就装好了。

 

[code]# mysql -uroot -p123
MariaDB [(none)]> select version();

+-----------------+

| version() |

+-----------------+

| 10.1.40-MariaDB |

+-----------------+

1 row in set (0.00 sec)

版本为10.1.40

 

三台主机同样安装mariadb。

关闭防火墙selinux(临时)

 

[code]# systemctl stop firewalld
# setenforce 0

 

编辑配置文件并启动服务

[code]# vim /etc/my.cnf
[code][mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip_name_resolve=ON

relay_log=mysql-relaylog

relay_log_index=mysql-relaylog

relay_log_purge=OFF

slow_query_log=ON

server-id=10

innodb_file_per_table=ON

binlog_format=ROW

log_bin=mysql-binlog

log_slave_updates=ON

[galera]

# Mandatory settings

wsrep_on=ON

wsrep_cluster_name=ark

wsrep_provider=/lib64/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://"

binlog_format=row

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

innodb_doublewrite=1

"gcomm://" 是特殊的地址,仅仅是galera cluster初始化启动时候使用。如果集群启动以后,我们关闭了第一个节点,那么再次启动的时候必须先修改"gcomm://"为其他节点的集群地址,首次作为发起人则此处为空,不向任何人同步数据。
 

[code]# galera_new_cluster

# systemctl restart mysqld

# ss -tnlp |egrep '3306|4567'

重启mariadb,并查看端口是否起来。

进入mysql查询变量的状态:

[code]mysql>show status like 'wsrep%';


如果wsrep_connected=ON且wsrep_ready=ON则说明节点成功接入集群。

接下来将配置文件cp给另外两台主机

[code]# scp /etc/my.cnf 192.168.2.107:/etc/
# scp /etc/my.cnf 192.168.2.111:/etc/

在另外两台主机上修改server_id和wsrep_cluster_address='gcomm:其他集群主机的名字'

两台主机都是修改这两个地方即可,server-id要唯一。

然后重新启动mariadb

[code]# systemctl restart mariadb

进入mysql查询变量的状态:
 

[code]mysql>show status like 'wsrep%';

任意在集群中一台主机创个库测试一下是否同步

至此,galera-mariadb集群完成,再添加多的集群机器也是按照同样的步骤。

监测状态说明
1. 集群完整性检查:
wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群.
wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时”分区”了.当节点之间网络连接恢复的时候应该会恢复一样的值.
wsrep_cluster_size:如果这个值跟预期的节点数一致,则所有的集群节点已经连接.
wsrep_cluster_status:集群组成的状态.如果不为”Primary”,说明出现”分区”或是”split-brain”状况.
2. 节点状态检查:
wsrep_ready: 该值为ON,则说明可以接受SQL负载.如果为Off,则需要检查wsrep_connected.
wsrep_connected: 如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群.(可能是wsrep_cluster_address或wsrep_cluster_name等配置错造成的.具体错误需要查看错误日志)
wsrep_local_state_comment:如果wsrep_connected为On,但wsrep_ready为OFF,则可以从该项查看原因.
3. 复制健康检查:
wsrep_flow_control_paused:表示复制停止了多长时间.即表明集群因为Slave延迟而慢的程度.值为0~1,越靠近0越好,值为1表示复制完全停止.可优化wsrep_slave_threads的值来改善.
wsrep_cert_deps_distance:有多少事务可以并行应用处理.wsrep_slave_threads设置的值不应该高出该值太多.
wsrep_flow_control_sent:表示该节点已经停止复制了多少次.
wsrep_local_recv_queue_avg:表示slave事务队列的平均长度.slave瓶颈的预兆.

报错解决:

1.数据库无法启动情况下把/var/lib/mysql下的几个文件:grastate.dat gvwstate.dat galera.cache mysql.sock统统删掉再重启
2.如果第二台数据库报uuid错误,看错误信息,将错误信息()里的uuid改入grastate.dat文件再重启,[Warning] WSREP: Failed to prepare for incremental state transfer: Local state UUID (00000000-0000-0000-0000-000000000000) does not match group state UUID (19ff9f3e-7af5-11e9-9ee5-528eb3fbf780):

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: