使用Mycat作为数据库中间件服务构建读写分离的数据库集群

准备环境

IP	主机名	节点
 - 10.30.59.214    mycat	(Mycat中间件服务节点)
   10.30.59.224	   db1	 (  MariaDB数据库集群主节点)
   10.30.59.234	   db2	  ( MariaDB数据库集群从节点)

1. 基础环境配置

(1)修改主机名

修改3台主机的主机名,方便分辨
Mycat节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname mycat
[root@localhost ~]# bash
[root@mycat ~]#

db1节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname db1
[root@localhost ~]# bash
[root@db1 ~]#

db2节点修改主机名命令:

[root@localhost ~]# hostnamectl set-hostname db2
[root@localhost ~]# bash
[root@db2 ~]#

(2)关闭防火墙(全部节点)

iptables -F
iptables -X
iptables -Z
iptables-save
syytemctl stop firewalld

(3)配置Yum安装源

提供的gpmall-repo文件上传至3个虚拟机的/opt目录下,设置本地Yum源。

$ mv /etc/yum.repos.d/* /media/
$ mkdir /opt/centos
$ mount /dev/cdrom /opt/centos   //挂载光盘
$ cat /etc/yum.repos.d/local.repo 
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[mariadb]
name=mariadb
baseurl=file:///opt/gpmall-repo
gpgcheck=0
enabled=1


(4)编辑hosts文件,配置映射

3台集群虚拟机的/etc/hosts文件配置部分:

[root@mycat ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.30.59.214     mycat
10.30.59.224    db1
10.30.59.234    db2

(5)安装JDK环境

部署Mycat中间件服务需要先部署JDK 1.8版本或其他版本。
Mycat节点安装Java环境:

$ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

2. 部署MariaDB主从数据库集群服务

(1)安装MariaDB服务

通过yum命令在db1和db2虚拟机节点上安装MariaDB服务,命令如下:

$ yum install -y mariadb mariadb-server

2个节点启动MariaDB服务,并设置MariaDB服务为开机自启。

$ systemctl start mariadb
$ systemctl enable mariadb

(2)配置数据库集群主节点

编辑主节点db1虚拟机的数据库配置文件my.cnf,在配置文件my.cnf中增添下面的内容:

[root@db1 ~]# cat /etc/my.cnf
[mysqld]
log_bin = mysql-bin                      
binlog_ignore_db = mysql                  
server_id = 224    //随便写,一般填ip的最后一段数
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

(3)初始化MariaDB数据库

在db1和db2虚拟机节点上初始化MariaDB数据库,并设置MariaDB数据库root访问用户的密码为000000。

[root@db1 ~]$ mysql_secure_installation 
//yynyy

(4)开放主节点的数据库权限

db1虚拟机上使用mysql命令登录MariaDB数据库,授权在任何客户端机器上可以以root用户登录到数据库,然后在主节点db1数据库上创建一个user用户让从节点db2连接,并赋予从节点同步主节点数据库的权限


MariaDB [(none)]> grant all privileges  on *.* to root@'%' identified by "000000";
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> grant replication slave on *.* to 'user'@'db2' identified by '000000';
Query OK, 0 rows affected (0.001 sec)

(5)配置从节点db2同步主节点db1

在从节点db2虚拟机上使用mysql命令登录MariaDB数据库,配置从节点连接主节点的连接信息。master_host为主节点主机名db1,master_user为在步骤(4)中创建的用户user

MariaDB [(none)]> change master to master_host='db1',master_user='user',master_password='000000';
Query OK, 0 rows affected (0.011 sec)

配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用show slave status\G; 命令并查看从节点服务状态,如果Slave_IO_Running和Slave_SQL_Running的状态都为YES,则从节点服务开启成功。

MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;

在这里插入图片描述

(6)验证主从数据库的同步功能

先在主节点db1的数据库中创建库test,并在库test中创建表company,插入表数据。创建完成后,查看表company数据

MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> use test
Database changed
MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255));
Query OK, 0 rows affected (0.165 sec)
MariaDB [test]> insert into company values(1,"facebook","usa");
Query OK, 1 row affected (0.062 sec)
MariaDB [test]> select * from company;

在这里插入图片描述
这时从节点db2的数据库就会同步主节点数据库创建的test库,可以在从节点查询test数据库与表company,如果可以查询到信息,就能验证主从数据库集群功能在正常运行。
在这里插入图片描述

3. 部署Mycat读写分离中间件服务

(1)安装Mycat服务

将Mycat服务的二进制软件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上传到Mycat虚拟机的/root目录下,并将软件包解压到/use/local目录中。赋予解压后的Mycat目录权限。
在这里插入图片描述

[root@mycat ~]$ tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@mycat ~]$ chown -R 777 /usr/local/mycat/

在这里插入图片描述
在/etc/profile系统变量文件中添加Mycat服务的系统变量,并生效变量。

$ echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
$ source /etc/profile

(2)编辑Mycat的逻辑库配置文件

配置Mycat服务读写分离的schema.xml配置文件在/usr/local/mycat/conf/目录下,可以在文件中定义一个逻辑库,使用户可以通过Mycat服务管理该逻辑库对应的MariaDB数据库。在这里定义一个逻辑库schema,name为USERDB;该逻辑库USERDB对应数据库database为test(在部署主从数据库时已安装);设置数据库写入节点为主节点db1;设置数据库读取节点为从节点db2。(可以直接删除原来schema.xml的内容,替换为如下。)

[root@mycat ~]# vi /usr/local/mycat/conf/schema.xml 
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema> 
<dataNode name="dn1" dataHost="localhost1" database="test" />  
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1"  slaveThreshold="100">  
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="10.30.59.224:3306" user="root" password="000000">
        <readHost host="hostS1" url="10.30.59.234:3306" user="root" password="000000" />
    </writeHost>
</dataHost>
</mycat:schema>

(3)修改配置文件权限

修改schema.xml的用户权限,命令如下:

[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml

(4)编辑mycat的访问用户

修改/usr/local/mycat/conf/目录下的server.xml文件,修改root用户的访问密码与数据库,密码设置为000000,访问Mycat的逻辑库为USERDB

[root@mycat ~]# cat /usr/local/mycat/conf/server.xml 
在配置文件的差不多最后部分修改  /shift+g直接跳转到最后一行
<user name="root">
		<property name="password">000000</property>
		<property name="schemas">USERDB</property>
然后删除如下几行:
<user name="user">
		<property name="password">user</property>
		<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>

(5)启动Mycat服务

通过命令启动Mycat数据库中间件服务,启动后使用netstat -ntpl命令查看虚拟机端口开放情况,如果有开放8066和9066端口,则表示Mycat服务开启成功

[root@mycat ~]#  /bin/bash /usr/local/mycat/bin/mycat start
[root@mycat ~]# netstat -ntpl

在这里插入图片描述

4. 验证数据库集群服务读写分离功能

(1)用Mycat服务查询数据库信息

先在Mycat虚拟机上使用Yum安装mariadb-client服务。

[root@mycat ~]# yum install -y MariaDB-client

在Mycat虚拟机上使用mysql命令查看Mycat服务的逻辑库USERDB,因为Mycat的逻辑库USERDB对应数据库test(在部署主从数据库时已安装),所以可以查看库中已经创建的表company。
在这里插入图片描述

(2)用Mycat服务添加表数据

在Mycat虚拟机上使用mysql命令对表company添加一条数据(2,“basketball”,“usa”),添加完毕后查看表信息

MySQL [USERDB]>  insert into company values(2,"bastetball","usa");
Query OK, 1 row affected (0.020 sec)

MySQL [USERDB]>  select * from company;
+----+------------+------+
| id | name       | addr |
+----+------------+------+
|  1 | facebook   | usa  |
|  2 | bastetball | usa  |
+----+------------+------+
2 rows in set (0.003 sec)

(3)验证Mycat服务对数据库读写操作分离

在Mycat虚拟机节点使用mysql命令,通过9066端口查询对数据库读写操作的分离信息。可以看到所有的写入操作WRITE_LOAD数都在db1主数据库节点上,所有的读取操作READ_LOAD数都在db2主数据库节点上。由此可见,数据库读写操作已经分离到db1和db2节点上了。

[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show  @@datasource;'

在这里插入图片描述
至此,Mycat读写分离数据库案例完成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值