五、mariadb集群

目录

 

一、galare的基础知识

1.galare cluster介绍

2.galare cluster架构

3.galare 复制工作原理

二、mariadb集群搭建

1.修改内核

2.安装mariadb

2.1安装mariadb

2.2修改配置

2.3修改密码

3.安装mariadb-galera

3.1安装galera

3.2配置

 4.创建远程访问用户

5.验证

三、haproxy代理mariadb 

1.创建haproxy用户

2./etc/haproxy/haproxy.cfg配置


一、galare的基础知识

1.galare cluster介绍

    galare cluster就是集成了galare插件的集群,是一种新型的、数据不共享的高可用方案。mysql数据库广泛的使用,其高可用的架构方式也有很多如MHA、MMM等传统的组织架构,传统的mysql高可用的架构方式不能保证主从数据的一致性。而galare cluster解决了这个问题,galara cluster采用的是多主模式,从而能够保证数据的一致性。galera的搭建在每个数据库节点均执行。

2.galare cluster架构

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

3.galare 复制工作原理

    galare复制是一种基于验证的复制,基于验证的复制使用组通信和事务排序技术实现同步复制,它通过广播并发事务之间建立全局总序来协调事务提交。简单来说就是事务必须以相同的顺序应用于所有实例,先在本节点乐观执行,然后在提交时运行一个验证过程以保证全局数据的一致性,然后发送到其他节点,做冲突检测,若无冲突,所有节点提交,否则回滚。

  • 乐观执行:指的是事务在某一节点提交时,被认为与其他节点上的事务没有冲突。

    如下图所示,当客户端发出commit命令时,在实际提交之前,对数据库所做的更改将被收集到一个写集中,写集中包含事务信息和所更改行的主键,然后将此写集发送到其他节点。节点用写集中的主键与当前节点中未完成的事务所有写集的主键相比较,确定节点是否可以提交事务,验证失败后,节点将删除写集,集群将回滚原始事务。

二、mariadb集群搭建

1.修改内核

    net.ipv4.ip_local_port_range定义了tcp/udp的端口范围,此值尤其在测试并发的时候非常有用;fs.file-max定义了系统文件打开的最大个数;net.ipv4.tcp_tw_recycle表示开启TCP连接中的TIME-WAIT sockets的快速回收,默认为0表示关闭。

在/etc/security/limits.conf文件中增加以下内容
* soft nofile 65536
* hard nofile 65536


在/etc/sysctl.conf文件中增加以下内容
fs.file-max=655350
net.ipv4.ip_local_port_range = 1025 65000
net.ipv4.tcp_tw_recycle = 1

 

2.安装mariadb

mariadb的安装、修改配置、及其修改密码和启动步骤是每个节点都需要做的操作。

2.1安装mariadb

yum install mariadb mariadb-server -y

2.2修改配置

echo "#

[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
#">/etc/my.cnf.d/openstack.cnf


systemctl enable mariadb.service  systemctl start mariadb.service

2.3修改密码

DBPass=1q2w3e4r

/usr/bin/expect << EOF

set timeout 30

spawn mysql_secure_installation

expect {

    "enter for none" { send "\r"; exp_continue}

    "Y/n" { send "Y\r" ; exp_continue}

    "password:" { send "$DBPass\r"; exp_continue}

    "new password:" { send "$DBPass\r"; exp_continue}

    "Y/n" { send "Y\r" ; exp_continue}

    eof { exit }

}

EOF

3.安装mariadb-galera

    mariadb-galera的安装、配置在每个节点上都执行,但安装完成之后,集群启动是有先后顺序的,先将所有的节点都stop,然后使用galera_new_cluster启动第一个节点,再使用systemctl restart mariadb.service启动其他的节点,最后启动第一个节点。

3.1安装galera

yum install mariadb-galera-serverexpect -y

3.2配置

1.修改/etc/my.cnf.d/galera.cnf文件

wsrep_on=ON
wsrep_sst_auth=root:/wsrep_sst_auth=root:1q2w3e4r(数据库密码)
wsrep_cluster_address="gcomm://节点1的IP地址,节点2的ip地址,节点3的ip地址"
wsrep_node_name=当前节点的ip地址
wsrep_node_address=当前节点的ip地址



2.修改/etc/my.cnf.d/openstack.cnf文件
bind-address = 当前节点的ip地址

3.集群启动
  启动第一个节点
    systemctl daemon-reload
    systemctl stop mariadb.service
    galera_new_cluster
  启动其他所有节点
    systemctl restart mariadb.service
  最后启动第一个节点
    systemctl restart mariadb.service

 4.创建远程访问用户

mysql -u root -p$DBPass -e "

grant all privileges on *.* to 'root'@'%' identified by '$DBPass' with grant option; 
flush privileges;
select user,host,password from mysql.user;"

5.验证

netstat -antp|grep mysqld
mysql -u root -p$DBPass -e "show status like 'wsrep_cluster_size';"
mysql -u root -p$DBPass -e "show status like 'wsrep_incoming_addresses';"

三、haproxy代理mariadb 

1.创建haproxy用户

haproxy用户用来监控mariadb,此用户用选择将用户数据下发到哪一个节点中的数据表中,在任意一个mysql节点执行即可。

mysql -u root -p$DBPass -e "create user 'haproxy'@'%';flush privileges;"

2./etc/haproxy/haproxy.cfg配置

mysql的haproxy配置和重启,需要在所有的控制节点执行,配置中的server参数指的是后端服务器,同一个服务有几台服务器部署,就有几个server。

echo '#mariadb_cluster

listen mariadb_cluster
  mode tcp     
  bind 代理ip地址(vip):3306     
  balance leastconn     
  option mysql-check user haproxy     
  server mysql节点1的ip地址 mysql节点1的ip地址:3306 weight 1 check inter 2000 rise 2 fall 5     
  server mysql节点2的ip地址 mysql节点2的ip地址:3306 weight 1 check inter 2000 rise 2 fall 5

'>>/etc/haproxy/haproxy.cfg


重启服务

systemctl restart haproxy.service

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值