准备(基于主从复制开始)
3个主机:主服务器192.168.63.250(即主从复制中的主服务器);
从服务器:192.168.63.251(即主从复制的从服务器);
mycat服务器:192.168.63.252;
在mycat服务器中安装jdk1.8;(创建目录)
tar -xzvf jdk-8u161-linux-x64.tar.gz -C /usr/local/java
配置环境变量(/etc/profile)
在文件最后添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
即时生效:source /etc/profile
检验:
Mycat服务器安装mycat:创建目录mkdir /usr/local/mycat
tar -xzvf jdk-8u161-linux-x64.tar.gz -C /usr/local/mycat
关闭3个服务器的所有防火墙;
systemctl stop firewalld.service;
systemctl stop iptables;
setenforce 0 使用getenforce查看回显为permissive为关闭。
mycat配置文件mycat/conf/server.xml(在文档最后删除红线部分)
Password密码为之后远程连接密码,可以自定义;
Schema数据库为虚拟数据库,自定义命名;
mycat/conf/ehcache.xml
Schema name为虚拟数据库,需要与上一个文件中的相同;dataNode为数据库节点,可以自定义,但此文件中的dataNode需要相同;dataHost为目标主机,可以自定义,但本文件中也需要相同;database为实际数据库,需要是主服务器中存在的数据库;witeHost为写主机,这里是主服务器,之后的ip为主服务器ip,端口写为3306,用户定义为root,方便使用,密码需要是主服务器中数据库的密码;readHost同上;
数据库操作主服务器:进入数据库
进入mysql数据库(use mysql;)
查看用户权限即密码插件:select Host,user,plugin from user;
如果用户Host不为%,则无法远程连接,所有需要修改:
update user set host='%' where user='root';
重载权限:flush privileges;
如果密码插件不为native,由于mycat版本比较低,无法识别mysql8.0的规范,所以需要修改:alter user 'root'@'%' identified with mysql_native_password by 'Love@3344';(此为主服务器数据库密码)
为了保险最好再次重载一次:flush privileges;
从服务器:同主服务器一样。
启动mycat
先进入mycat的bin目录:mycat/bin;
启动mycat:./mycat start(后台启动) ./mycat console(前台启动)
##停止 ./mycat stop 重启 ./mycat restart
启动成功后会生成一个logs目录存放日志文件:
- wrapper.log 为程序启动的日志,启动时的问题看这个
- mycat.log 为脚本执行时的日志,SQL脚本执行报错后的具体错误内容,查看这个文件。mycat.log是最新的错误日志,历史日志会根据时间生成目录保存。
如果无法启动请查看个主机防火墙是否关闭,配置文件是否正确,主从服务器数据库用户权限即密码编码插件是否正确,若不正确,修改好后,重启mycat;
telnet 192.168.63.250 3306(此命令可以查看密码编码是否规范)正确:
查看端口
读写分离服务在远程mycat上
连接名可以自己设置,主机ip需要是mycat服务器的id,端口80666或9066,
用户名这里为root,(也可自定义,但同上数据库中也要重新创建用户并赋权),密码为server.xml文件中设置的密码。
检验
9906管理端口:
show @@heartbeat; #查看心跳 #RS_CODE为1表示心跳正常
show @@datasource; 查看机器的读写分离配置情况
show @@help;查看命令帮助:



