数据库代理 - mycat

一、代理技术

简介:数据库代理技术是一种在数据库系统与应用程序之间起中介作用的技术,它可以管理、优化和保护数据库连接和交互。

作用:实现数据库的读写分离和负载均衡。

数据库代理 - mycat_第1张图片

二、mycat

1、配置 Java 环境

官网下载 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:检查配置

数据库代理 - mycat_第2张图片

2、配置 mycat

(1) 下载 mycat

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

(2) 配置 mycat 前端

vim  /usr/local/mycat/conf/server.xml

① 注释掉 mycat 配置文件里的默认普通用户账号:

数据库代理 - mycat_第3张图片

② 启动 mycat 管理员账号:

root、password:应用程序连接 mycat 所使用的账号密码;

schemas tianyun:mycat 对后方数据库的统称,并不代表真的有这个库。

使用 root 和 password 访问 mycat 服务器,可以看见一个 tianyun 库。

(3) 配置 mycat 后端

! 先备份后端配置文件,再进行修改

vim /usr/local/mycat/conf/schema.xml

● schema name="tianyun":mycat 代理集群所维护的数据库叫 tianyun(前端定义的 tianyun 库要在这里进行关联)

● checkSQLschema="false":关闭校验

● sqlMaxLimit="100":最大访问量

● dataNode="dn1":dataNode:数据节点,与真正的服务器进行关联;定义连接名称为 dn1

② mycat 后端文件里默认配置的表信息,可以删掉

数据库代理 - mycat_第4张图片

纽带连接:把前后端连接在一起

● dataNode name="dn1":数据节点为 dn1;

● dataHost="localhost1":数据主机(真实的数据库)

● database="tianyun":前端连接的数据库

数据库代理 - mycat_第5张图片

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 毫秒。

select user()

heartbeat:心跳,服务器之间的状态监控

mycat 给数据库发送 select user(),查询是否执行。

写主机配置:

● writeHost host:主机名

● url:IP 或 域名

● user:登录写数据库的账号。默认为 root,修改账号为 mycatproxy。

读主机配置:

● readHost host:主机名

数据库代理 - mycat_第6张图片

3、配置 mysql 群

在主服务器 (master) 和从服务器 (slave) 上准备 mycat 连接的用户及权限

grant  all  on  *.*  to  'mycatproxy'@'mycat'  identified  by  '123456';

4、启动 mycat

① 在 mycat 服务器上:

/usr/local/mycat/bin/mycat start

netstat -anpt | grep java:检测端口是否启动

数据库代理 - mycat_第7张图片

② 模拟应用程序登录:

mysql -hmycat -uroot -p123456 -P 8066

-hmycat:连接到 mycat 服务器

-uroot -p123456:使用前端配置的账号和密码

-P 8066:mycat 端口号

数据库代理 - mycat_第8张图片

此时看到的数据库是虚拟的,实际的主服务器中并没有这个库,应该在 mysql 群中创建该库。

③ 在 mysql-master1 上创库创表

主服务器 master1 上创建 tianyun 库和 t1 表,并且写入数据:

数据库代理 - mycat_第9张图片

mycat 服务器上可以查看到 tianyun 库里的数据:

数据库代理 - mycat_第10张图片

④ 在 mycat 服务器上写入数据:

数据库代理 - mycat_第11张图片

主服务器 master1 上查询,可发现数据已写入:

数据库代理 - mycat_第12张图片

注意:数据并不是写入在 mycat 服务器上,而是写在 mycat 所集群的服务器上。

你可能感兴趣的:(mysql,数据库,sql,mysql,mariadb,linux)