1、环境准备
本次课程使用的虚拟机环境是centos6.5
首先准备四台虚拟机,安装好mysql,方便后续做读写分离和主从复制。
192.168.**.101 node01
192.168.**.102 node02
192.168.**.103 node03
192.168.**.104 node04
安装jdk
使用rpm的方式直接安装jdk,配置好具体的环境变量
2、mycat的安装
从官网下载需要的安装包,并且上传到具体的虚拟机中,我们在使用的时候将包上传到node01这台虚拟机,由node01充当mycat。
下载地址为:http://dl.mycat.org.cn/1.6.7.5/2020-4-10/
解压文件到/usr/local文件夹下
tar -zxvf Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gz -C /usr/local/soft/
配置环境变量
vi /etc/profile
添加如下配置信息:
export MYCAT_HOME=/usr/local/soft/mycat
export PATH=$MYCAT_HOME/bin:$PATH:$JAVA_HOME/bin
当执行到这步的时候,其实就可以启动了,但是为了能正确显示出效果,最好修改下mycat的具体配置,让我们能够正常进行访问。
3、配置mycat
进入到/usr/local/mycat/soft/conf目录下,修改该文件夹下的配置文件
1、修改server.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
暂时只保留当前内容即可,其他需要的按需求添加
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
</user>
</mycat:server>
2、修改schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="host1" database="msb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!--master mysql-->
<writeHost host="hostM1" url="mysql地址:端口" user="root"
password="密码">
<!--slaver mysql-->
<readHost host="hostS1" url="mysql地址:端口" user="root" password="密码"></readHost>
</writeHost>
</dataHost>
</mycat:schema>
4、启动mycat
mycat的启动有两种方式,一种是控制台启动,一种是后台启动,在初学的时候建议大家使用控制台启动的方式,当配置文件写错之后,可以方便的看到错误,及时修改,但是在生产环境中,使用后台启动的方式比较稳妥。
控制台启动:去mycat/bin目录下执行 ./mycat console
后台启动:去mycat/bin目录下执行 ./mycat start
按照如上配置在安装的时候应该不会报错,如果出现错误,根据错误的提示解决即可。
Running Mycat-server...
wrapper | ERROR: Could not write pid file /usr/local/soft/mycat/logs/mycat.pid: No such file or directory
上述问题需要手动在mycat目录下创建logs
mkdir logs
5、登录验证
管理窗口的登录
从另外的虚拟机去登录访问当前mycat,输入如下命令即可(mycat端口默认为3306)
mysql -uroot -p123456 -P 9066
此时访问的是mycat的管理窗口,可以通过show @@help查看可以执行的命令
数据窗口的登录
从另外的虚拟机去登录访问mycat,输入命令如下:
mysql -uroot -p123456 -P8066
当都能够成功的时候以为着mycat已经搭建完成。
2、读写分离
通过mycat和mysql的主从复制配合搭建数据库的读写分离,可以实现mysql的高可用性,下面我们来搭建mysql的读写分离。
1、一主一从(主从复制的原理之前讲解过了,需要的同学自行参阅文档)
1、在node01上修改/etc/my.cnf的文件
#mysql服务唯一id,不同的mysql服务必须拥有全局唯一的id
server-id=1
#启动二进制日期
log-bin=mysql-bin
#设置不要复制的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information-schema
#设置需要复制的数据库
binlog-do-db=msb
#设置binlog的格式
binlog_format=statement
2、在node02上修改/etc/my.cnf文件
#服务器唯一id
server-id=2
#启动中继日志
relay-log=mysql-relay
3、重新启动mysql服务
4、在node01上创建账户并授权slave
grant replication slave on *.* to 'root'@'%' identified by '123456';
--在进行授权的时候,如果提示密码的问题,把密码验证取消
set global validate_password_policy=0;
set global validate_password_length=1;
5、查看master的状态
show master status
6、在node02上配置需要复制的主机
CHANGE MASTER TO MASTER_HOST='192.168.**.111',MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=437;
7、启动从服务器复制功能
start slave;
8、查看从服务器状态
show slave status\G
当执行完成之后,会看到两个关键的属性Slave_IO_Running,Slave_SQL_Running,当这两个属性都是yes的时候,表示主从复制已经准备好了,可以进行具体的操作了