1.准备环境
三台虚拟机
| IP | 主机名 | 节点 |
|---|---|---|
| 10.30.59.226 | mycat | mycat中间件服务节点 |
| 10.30.59.227 | db1 | MariaDB数据库集群主节点 |
| 10.30.59.228 | db2 | MariaDB数据库集群从节点 |
基础准备
centos7.2系统
flavor使用cpu 2 内存4G 硬盘50G
创建三台虚拟机进行实验
2.案例实施
2.1 基础环境配置
基础环境配置
修改主机名[root@localhost ~]# hostnamectl set-hostname mycat[root@localhost ~]# bash[root@localhost ~]# hostnamectl set-hostname db1[root@localhost ~]# bash[root@localhost ~]# hostnamectl set-hostname db2[root@localhost ~]# bash
编辑hosts文件[root@mycat ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.30.59.226 mycat10.30.59.227 db110.30.59.228 db2
配置yum源[root@db2 gpmall-repo]# cat /etc/yum.repos.d/local.repo[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1[mariadb]name=mariadbbaseurl=file:///opt/gpmall-repogpgcheck=0enabled=1
安装JDK环境
mycat节点安装java环境[root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel关闭防火墙(全部节点)[root@mycat ~]# iptables -F[root@mycat ~]# iptables -Z[root@mycat ~]# iptables -X[root@mycat ~]# iptables-save
部署MariaDB主从数据库集群服务
db1和db2安装MariaDB服务yum install -y mariadb mariadb-server两个节点启动MariaDB服务,并设置MariaDB服务开机启动systemctl start mariadbsystemctl enable mariadb初始化数据库mysql_secure_installation配置数据库集群主从节点加入下面内容vi /etc/my.cnf[mysqld]log_bin = mysql-binbinlog_ignore_db = mysqlserver_id = 227 //数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid编辑完成配置文件,my.cnf重启mariadb服务[root@db1 ~]# systemctl restart mariadb开放主节点的数据库权限登录数据库mysql -uroot -p123456授权在任何客户端机器上可以以root用户登录到数据库grant all privileges on *.* to root@'%' identified by "123456";在主节点db1数据库上创建一个user用户让从节点db2连接,并赋予从节点同步主节点数据库的权限grant replication slave on *.* to 'user'@'db2' identified by '123456';配置从节点db2同步主节点db1change master to master_host='db1',master_user='user',master_password='123456';start slave;show slave status\G;Slave_IO_Running: YesSlave_SQL_Running: Yes配置主从数据库成功自己在主节点数据库写入数据在从节点查看
部署Mycat读写分离中间件服务
1.安装mycat服务
上传mycat软件包到root目录
赋予解压后的Mycat目录权限.
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
chmod -R 777 /usr/local/mycat/
在/etc/profile系统变量文件中添加Mycat服务的系统变量,并生效变量。
[root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
[root@mycat ~]# source /etc/profile
编辑Mycat的逻辑库配置文件
[root@mycat local]# cat /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.227:3306" user="root" password="123456">
<readHost host="hostS1" url="10.30.59.228:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
修改配置文件权限
修改schema.xml的用户权限
chown root:root /usr/local/mycat/conf/schema.xml
编辑mycat的访问用户
vi /usr/local/mycat/conf/server.xml
在配置文件的最后部分,
<user name="root">
<property name="password">123456</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>
启动mycat服务
通过命令启动Mycat数据库中间件服务
/bin/bash /usr/local/mycat/bin/mycat start
验证数据库集群服务读写分离功能
1.用Mycat服务查询数据库信息
先在Mycat虚拟机上使用Yum安装mariadb-client服务。
yum install -y MariaDB-client
mysql -h127.0.0.1 -P8066 -uroot -p123456
show databases;
use USERDB
show tables;
select * from company;
2.用mycat服务添加表数据
insert into company values(2,"bastetball","usa");
select * from company;
3.验证Mycat服务对数据库读写操作分离
mysql -h127.0.0.1 -P9066 -uroot -p123456 -e 'show @@datasource;'
mycat读写分离完成
