Centos下搭建MariaDB集群

最近公司测试库改建,之前测试库上面装的是老的MySql,我顺手就把它换成了MariaDB,后来因为连的人太多就爆了Too Many Connections,本来很简单的事情,就让技术部一小伙子上去把连接数调大了一点,很简单,但是后来我发现他居然直接写在了My.cnf下面,显然他是不知道MariaDB早就从My.cnf下面扩展到了my.cnf.d文件夹下面,于是就跟他一番讲解,然后就引出了配置集群的话题,所以觉得有必要写一下MariaDB的一些配置和集群的配置方法。

MariaDB本身就是MySql的一个分支,所以很多东西都是MySql延展下来的,既然要说的话就先从安装说起吧,在CentOS下安装还是很简单的,官网有很明确的说明以及各种安装方法,我个人比较喜欢yum源的安装方法,下面我们开始。

第一步、安装MariaDB

我们以最小集群来说,两台服务器先做主从配置,然后再做互为主从的配置,两台主机的IP分别为:192.168.70.135,192.168.70.137。

先去官网上复制一下源的配置:

选择对应的操作系统版本及MariaDB的版本后会给出对应的配置,我这里选择的是Centos7,MariaDB的版本是10.2,所以给出的源是这样的:

OK!然后直接vim /etc/yum.repos.d/MariaDB.repo复制进去保存即可,然后yum安装

不要以为安装完成就可以使用,mysql的用户和数据文件夹先指定一下,我的数据文件放在了/opt/data/mysql下面,执行下面的命令

OK!这时启动一下看看

不出意外,启动成功,设置一下root密码

登录一下,不出意外应该成功了。

第二步、配置MariaDB

上面只是简单的安装,下面我们再简单的配置一下为集群做准备,先进入/etc/my.cnf.d/文件夹,MariaDB的所有配置文件都在这下面,主要配置文件还是在/etc/my.cnf.d/server.cnf下面

修改[mysqld]下面的内容

1. character-set-server是设置数据库的编码格式

2. lower_case_table_names是设置数据库不区分大小写

3. datadir,socket是设置数据库实例的目录

4. server-id这个很重要,是指定集群中数据库服务的ID,在集群情况下每台数据库服务的ID都不能重复

5. log-bin和log-bin-index是开始MySQL的二进制日志并指定日志文件名

6. relay-log和relay-log-index是开始MySQL的中继日志并指定日志文件名

7. log-slave这个是设定slave节点的二进制输出,若没有设定此项则slave不会输出二进制,但是为了能够让slave也能够升级为master则该项最好配置一下

为了能让两台MySQL服务能够互相连接,最好先创建让他们互相连接的数据库账户,现在master上简历用户,并授权,该账户为同步专用

PS:另外一台机器的/etc/my.cnf.d/server.cnf中其他配置都一样,就是server-id改成2,配置同步账户的时候IP地址改成可访问的机器的IP就行。

配置完成后两台机器都重启。

第三步、准备同步,配置主从

全部配置并且两台机器都启动成功之后,就可以开始准备同步两台机器的数据了,在此之前先登录第一台机器的数据库,查看一下master的状态:

File就是当前该数据库binlog日志的文件索引所在的文件名,position是当前日志索引的位置,将这两个值记录下来,然后登录第二台数据库服务器,启动slave:

执行完成之后如果没有报错再执行show slave status\G命令查看slave节点的同步状态,如果ERROR没有显示错误并且Slave_IO_Running都为yes则表示同步成功。

这时在master节点的数据库服务器中创建数据库、创建表的话slave节点就直接可以看到了

PS:同步之前最好先检查一下你服务器的防火墙有没有拦截3306端口!

第四步、双主配置

前面的所有步骤完成后已经可以搭建单主多slave的架构了,如果想配置互为主从的其实很简单,在master节点中重复第三步,把master的IP指向对应的节点就好,不过需要注意的是Master可以有多个Slave,但是一个Slave只能挂靠一个Master!好的,我们先去192.168.70.137这台节点上查看一下master的status(就是第三步中的slave节点)

然后再刚才master节点的数据库中执行:

如果没有报错,那么双主执行成功,在两台机器间创建数据库、创建表、创建数据测试一下,两台机器就会互相同步数据了!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620A0I0KM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券