简介:数据库代理技术是一种在数据库系统与应用程序之间起中介作用的技术,它可以管理、优化和保护数据库连接和交互。
作用:实现数据库的读写分离和负载均衡。
官网下载 jdk 压缩包,在 /usr/local 下解压
配置环境变量:vim /etc/profile
JAVA_HOME=/usr/local/java → 指定家目录
PATH=$JAVA_HOME/bin:$PATH → 设置路径
export JAVA_HOME PATH → 声明JAVA_HOME和PATH都为环境变量
source /etc/profile:配置生效
java -version:检查配置
在 http://dl.mycat.org.cn 官网找到压缩包下载,解压到 /usr/local 下
wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
tar xf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local
vim /usr/local/mycat/conf/server.xml
root、password:应用程序连接 mycat 所使用的账号密码;
schemas tianyun:mycat 对后方数据库的统称,并不代表真的有这个库。
使用 root 和 password 访问 mycat 服务器,可以看见一个 tianyun 库。
! 先备份后端配置文件,再进行修改
vim /usr/local/mycat/conf/schema.xml
①
● schema name="tianyun":mycat 代理集群所维护的数据库叫 tianyun(前端定义的 tianyun 库要在这里进行关联)
● checkSQLschema="false":关闭校验
● sqlMaxLimit="100":最大访问量
● dataNode="dn1":dataNode:数据节点,与真正的服务器进行关联;定义连接名称为 dn1
② mycat 后端文件里默认配置的表信息,可以删掉
③
纽带连接:把前后端连接在一起
● dataNode name="dn1":数据节点为 dn1;
● dataHost="localhost1":数据主机(真实的数据库)
● database="tianyun":前端连接的数据库
④
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
● dataHost:具体的集群位置;
● maxCon="1000" minCon="10":最大、最小连接数;
● balance:负载均衡策略:
balance="0":关闭读写分离,所有读写操作都发送到 writeHost 上;
balance="1":开启读写分离,所有读操作发送到 readHost 上。
● writeType:
备份型:writeType="0",所有的写操作均发送到配置的第一个 writeHost,第一个挂了切换到还生存的第二个 writeHost;
负载型:writeType="1",所有的写操作随机发送到配置的 writeHost 里。
● switchType:切换模式:
switchType="-1":不自动切换
switchType="1":默认值,根据延时自动切换
switchType="2":根据 mysql 主从同步的状态决定是否切换
● slaveThreshold:延时时间,默认 100 毫秒。
⑤
heartbeat:心跳,服务器之间的状态监控
mycat 给数据库发送 select user(),查询是否执行。
⑥
写主机配置:
● writeHost host:主机名
● url:IP 或 域名
● user:登录写数据库的账号。默认为 root,修改账号为 mycatproxy。
读主机配置:
● readHost host:主机名
在主服务器 (master) 和从服务器 (slave) 上准备 mycat 连接的用户及权限
grant all on *.* to 'mycatproxy'@'mycat' identified by '123456';
/usr/local/mycat/bin/mycat start
netstat -anpt | grep java:检测端口是否启动
mysql -hmycat -uroot -p123456 -P 8066
-hmycat:连接到 mycat 服务器
-uroot -p123456:使用前端配置的账号和密码
-P 8066:mycat 端口号
此时看到的数据库是虚拟的,实际的主服务器中并没有这个库,应该在 mysql 群中创建该库。
在主服务器 master1 上创建 tianyun 库和 t1 表,并且写入数据:
在 mycat 服务器上可以查看到 tianyun 库里的数据:
在 主服务器 master1 上查询,可发现数据已写入:
注意:数据并不是写入在 mycat 服务器上,而是写在 mycat 所集群的服务器上。