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 基础环境配置
基础环境配置

  1. 修改主机名
  2. [root@localhost ~]# hostnamectl set-hostname mycat
  3. [root@localhost ~]# bash
  4. [root@localhost ~]# hostnamectl set-hostname db1
  5. [root@localhost ~]# bash
  6. [root@localhost ~]# hostnamectl set-hostname db2
  7. [root@localhost ~]# bash
  1. 编辑hosts文件
  2. [root@mycat ~]# cat /etc/hosts
  3. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  4. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  5. 10.30.59.226 mycat
  6. 10.30.59.227 db1
  7. 10.30.59.228 db2
  1. 配置yum
  2. [root@db2 gpmall-repo]# cat /etc/yum.repos.d/local.repo
  3. [centos]
  4. name=centos
  5. baseurl=file:///opt/centos
  6. gpgcheck=0
  7. enabled=1
  8. [mariadb]
  9. name=mariadb
  10. baseurl=file:///opt/gpmall-repo
  11. gpgcheck=0
  12. enabled=1

安装JDK环境

  1. mycat节点安装java环境
  2. [root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
  3. 关闭防火墙(全部节点)
  4. [root@mycat ~]# iptables -F
  5. [root@mycat ~]# iptables -Z
  6. [root@mycat ~]# iptables -X
  7. [root@mycat ~]# iptables-save

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

  1. db1db2安装MariaDB服务
  2. yum install -y mariadb mariadb-server
  3. 两个节点启动MariaDB服务,并设置MariaDB服务开机启动
  4. systemctl start mariadb
  5. systemctl enable mariadb
  6. 初始化数据库
  7. mysql_secure_installation
  8. 配置数据库集群主从节点加入下面内容
  9. vi /etc/my.cnf
  10. [mysqld]
  11. log_bin = mysql-bin
  12. binlog_ignore_db = mysql
  13. server_id = 227 //数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字
  14. datadir=/var/lib/mysql
  15. socket=/var/lib/mysql/mysql.sock
  16. # Disabling symbolic-links is recommended to prevent assorted security risks
  17. symbolic-links=0
  18. [mysqld_safe]
  19. log-error=/var/log/mariadb/mariadb.log
  20. pid-file=/var/run/mariadb/mariadb.pid
  21. 编辑完成配置文件,my.cnf重启mariadb服务
  22. [root@db1 ~]# systemctl restart mariadb
  23. 开放主节点的数据库权限
  24. 登录数据库
  25. mysql -uroot -p123456
  26. 授权在任何客户端机器上可以以root用户登录到数据库
  27. grant all privileges on *.* to root@'%' identified by "123456";
  28. 在主节点db1数据库上创建一个user用户让从节点db2连接,并赋予从节点同步主节点数据库的权限
  29. grant replication slave on *.* to 'user'@'db2' identified by '123456';
  30. 配置从节点db2同步主节点db1
  31. change master to master_host='db1',master_user='user',master_password='123456';
  32. start slave;
  33. show slave status\G;
  34. Slave_IO_Running: Yes
  35. Slave_SQL_Running: Yes
  36. 配置主从数据库成功
  37. 自己在主节点数据库写入数据在从节点查看

部署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读写分离完成