1 数据库的读写分离 1.1 Amoeba实现读写分离 1.1.1 定义
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy
优点:
配置读写分离时较为简单.配置文件编写方便
可以做到整个数据库的读写分离
占用的资源较少.
缺点:
不能实现高可用
现在不更新维护了
1.2 搭建amoeba 1.2.1 安装JDK说明:Amoeba的使用依赖于JDK.
1.2.2 安装Amoeba
说明:将Amoeba文件拖入/usr/local/src/
将其解压
1.2.3 使用工具修改xml
通过工具连接远程的amoeba虚拟机
1.3 修改DBServer.xml 1.3.1 修改用户名和密码
1.3.2 配置数据库服务
说明:定义主数据库的IP地址
1.3.3 定义读操作策略
1.4 Amoeba配置 1.4.1 修改Amoeba.xml文件
说明:
默认的amoeba访问主库.
如果配置了读写分离则采用读写分离的操作数据库
所有的写库操作访问主数据库.
所有的读操作,访问multiPool负载均衡后的数据库slave,master,salve
Amoeba默认的访问端口是8066
1.5 修改JVM内存 1.5.1 修改内存说明:
说明:原因的jvm配置文件大小只有256M太小,amoeba不能正常启动,需要修改JVM大小.
1.6 Amoeba启动 1.6.1 启动Amoeba
说明:进入到bin目录下执行启动命令
/usr/local/src/amoeba-mysql-3.0.4-BETA/bin
./launcher 启动
./shutdown 停止
1.7 Amoeba测试 1.7.1 连接Amoeba
说明:通过工具连接远程Amoeba.切记关闭防火墙
1.7.2 代码测试
说明:通过京淘后台管理修改数据源配置,通过代码测试Amoeba
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.126.139:8066/jtdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
jdbc.username=root
jdbc.password=root
1.8 错误集锦 1.8.1 关闭主库和从库的防火墙
说明:当虚拟机开机后,防火墙默认开启了,需要再次手动关闭.
1.8.2 修改配置文件后没有及时报错
共修改2个配置文件dbServer.xml,amoeba.xml
需要通过工具进行下载和上传/保证上传的文件不错.
1.8.3 报错端口占用关机重启
查询项目的进程后杀死进程
Kill -9 5652
./shutdown 关闭amoeba
修改JVM内存
2 Mycat介绍2.1 Mycat下载 2.1.1 下载地址
官网地址:
2.1.2 安装JDK
2.2 MyCat安装 2.2.1 解压文件
tar -xvf Mycat………
2.2.2 编辑schemas.xml文件2.2.3 定义负载策略:
<dataHost maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select 1</heartbeat>
<!--配置第一台主机主要进行写库操作,在默认的条件下Mycat主要操作第一台主机
在第一台主机中已经实现了读写分离.
因为默认写操作会发往137的数据库.
读的操作默认发往141.如果从节点比较忙,则主节点分担部分压力.
-->
<writeHost host="hostM1" url="192.168.126.137:3306" user="root" password="root">
<!--读数据库-->
<readHost host="hostS1" url="192.168.126.141:3306" user="root" password="root" />
</writeHost>
<!--定义第二台主机 由于数据库内部已经实现了双机热备.