准备

三台虚拟机

机器名称
mysql1 主节点
mysql2 从节点
mycat 节点

mysql1和mysql2需要提前进行主从分离操作哦(当然不是硬性要求)。

更换yum源下载所需软件

配置本地yum源

如果没配置过本地yum源,大部分linux使用yum获取的软件都是联网下载的,但是配置本地后,速度快,还无需联网。并且部分yum源的软件版本更高。

!!!!注意 如果习惯vim,请先安装vim再进行如下配置。或者使用vi也可。

  1. #mv /etc/yum.repos.d/* /media/ //将yum.repos.d下面的所有文件转移到 media文件夹
  2. #vim /etc/yum.repos.d/local.repo //创建并编写local.repo,本地配置文件
  3. #将以下文字复制粘贴进去
  4. [mariadb]
  5. name=mariadb #源名称
  6. baseurl=file:///opt/gpmall-repo #源文件位置
  7. gpgcheck=0 #是否开启gpg验证 0 为关闭
  8. enabled=1 #是否开启 1 为开启
  9. [centos]
  10. name=centos
  11. baseurl=file:///opt/centos
  12. gpgcheck=0
  13. enabled=1

Mysql读写分离 - 图1

  1. mkdir /opt/centos #创建文件夹,因为上面指定的文件夹咱们还没创建
  2. mount /dev/sr0 /opt/centos #挂载文件
  3. #将yum本地源文件gpmall-repo,根据上面的配置,传输到/opt文件夹下。
  4. #自行准备xftp等软件。

Mysql读写分离 - 图2

装配完成后输入yum repolist 查看yum源!不是0,基本上就完成了。

Mysql读写分离 - 图3

安装jdk和mycat

  1. yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel MariaDB-client #下载jdk和所需的文件
  2. java -version #查看jdk版本

Mysql读写分离 - 图4

将mycat传输到虚拟机中!并且解压

官网下载

  1. tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
  2. #将mycat解压到/usr/local文件夹下方。
  3. chmod -R 777 /usr/local/mycat #给mycat文件权限
  4. echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile #写入配置文件
  5. source /etc/profile #刷新配置文件
  6. wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
  7. yum localinstall mysql57-community-release-el7-8.noarch.rpm -y
  8. rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  9. yum install mysql-community-client.x86_64 -y

配置

在mysql1和mysql2节点输入命令,给予权限。

  1. mysql> grant all privileges on *.* to root@'%' identified by "000000";
  2. #给予所有权限!

修改mycat配置文件

  1. chown root:root /usr/local/mycat/conf/schema.xml #给予配置文件权限
  2. vim /usr/local/mycat/conf/schema.xml #进入mycat的配置文件
  3. #该页面内容全部删除。先输入数字,按下两下D,即可删除指定数量行。
  4. #将以下字符放入
  5. <?xml version="1.0"?>
  6. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  7. <mycat:schema xmlns:mycat="http://io.mycat/">
  8. <schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>
  9. <dataNode name="dn1" dataHost="localhost1" database="test" />
  10. <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
  11. <heartbeat>select user()</heartbeat>
  12. <writeHost host="hostM1" url="192.168.148.175:3306" user="root" password="000000">
  13. <readHost host="hostS1" url="192.168.200.171:3306" user="root" password="000000" />
  14. </writeHost>
  15. </dataHost>
  16. </mycat:schema>

看第五行,database=”test” 就是允许操作的主节点的数据库

Mysql读写分离 - 图5

  1. cd /usr/local/mycat #进入mycat文件夹下
  2. vim conf/server.xml #进入配置文件
  3. #到文本的最后一行
  4. #<user> 标签 留下<user name="root">
  5. #将password修改成你想要的密码
  6. #schemas共享的数据库文件的“代号”,所以会将test数据库显示成USERDB

Mysql读写分离 - 图6

检查配置

启动查看是否启动成功,进入数据库,创建表,字段。

  1. /usr/local/mycat/bin/mycat start #运行mycat服务
  2. netstat -ntlp #查看端口
  3. #会发现有很多端口被启动了,注意下8066端口

Mysql读写分离 - 图7

进入数据库,看看读写分离是否成功。

  1. mysql -h127.0.0.1 -P8066 -uroot -p000000 #进入client数据库
  2. mysql[(none)] > show databaes; #显示USERDB,其实就是主节点的test库
  3. mysql[(none)] > use USERDB; #进入库
  4. mysql[(USERDB)] > create table company(id int not null primary key,name varchar(50),addr varchar(255)); #创建一些表
  5. mysql[(USERDB)] > show tables; #查看是否有表被创建
  6. mysql[(USERDB)] > insert into company values(1,"facebook","usa"); #插入数据
  7. mysql[(USERDB)] > select * from company /#查看字段
  8. mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'

Mysql读写分离 - 图8

Mysql读写分离 - 图9

此时就搭建好读写分离。注意!如果出现use USERDB; 无法创建表,请查看报错和是否有配置文件出错。