千家信息网

利用amoeba(变形虫)实现mysql数据库读写分离

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_proxy实现的。由于proxy是基于lua脚本语言实现的,所以网上不少网友表示proxy效率不高,也不稳定,不建议在生产环境使用;a
千家信息网最后更新 2024年11月23日利用amoeba(变形虫)实现mysql数据库读写分离

关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_proxy实现的。由于proxy是基于lua脚本语言实现的,所以网上不少网友表示proxy效率不高,也不稳定,不建议在生产环境使用;
amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk;

前期准备工作:
1.两个数据库,一主一从,主从同步;
master: 172.22.10.237:3306 ;主库负责写入操作;
slave: 10.4.66.58:3306 ; 从库负责读取操作;
amoeba: 172.22.10.237:8066 ; 我把amoeba安装到了主库所在的服务器,当然,你也可以安装到第三台服务器上;
所有服务器操作系统均为centos7;
2.在amoeba所在的服务器上配置安装jdk;
我安装的是jdk1.8;
路径是: JAVA_HOME=/usr/local/java/jdk1.8.0_131

以上务必自己点搭建、配置好,主从正常工作,添加jdk环境变量: /etc/profile ;

安装amoeba的方式有很多,这里就不在安装上面费口舌了,我下载了amoeba-mysql-3.0.5-RC-distribution的安装包,直接解压即可使用;
解压目录: /usr/local/amoeba/

很明显 conf里是配置文件,bin里是启动程序;
刚才说到 amoeba的功能可不止读写分离,但如果只用读写分离功能的话只需要配置这几个个文件即可: conf/dbServers.xml conf/amoeba.xml 和 bin/launcher ;
conf/dbServers.xml :

 `3306             #设置Amoeba要连接的mysql数据库的端口,默认是3306    testdb            #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver    test1               #设置amoeba连接后端数据库服务器的账号和密码,因此需要在所有后端数据库上创建该用户,并授权amoeba服务器可连接    111111    500  #最大连接数,默认500    500    #最大空闲连接数    1    #最新空闲连接数      #设置一个后端可写的数据库,这里定义为writedb,这个名字可以任意命名,后面还会用到        172.22.10.237 #设置后端可写dbserver的ip      #设置后端可读数据库        10.4.66.58       #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave            1  #选择调度算法,1表示复制均衡,2表示权重,3表示HA, 这里选择1            slave01  #myslave组成员`

conf/amoeba.xml :

8066            #设置amoeba监听的端口,默认是8066        127.0.0.1                 #配置监听的接口,如果不设置,默认监听所以的IP                # 提供客户端连接amoeba时需要使用这里设定的账号 (这里的账号密码和amoeba连接后端数据库服务器的密码无关)            root             123456        myslave                  #设置amoeba默认的池,这里设置为writedb        master                  #这两个选项默认是注销掉的,需要取消注释,这里用来指定前面定义好的俩个读写池        slave01

bin/launcher :

        #启动脚本,需要配置jdk环境变量;        #在注释后的第一行添加:        JAVA_HOME=/usr/local/java/jdk1.8.0_131

launcher 是启动脚本,如果不配置JAVA_HOME的话,即便你在/etc/profile中配置了环境变量也可能会报错:没有配置jdk环境变量;
还有一个配置文件: jvm.properties

        #占用内存配置文件        # -Xss参数有最小值要求,必须大于228才能启动JVM        #修改:            JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

有经验的运维都知道,凡是和jdk沾上边的,基本都会和内存的调优有关系,amoeba也不例外;


现在可以启动了:

启动后就可以看到本机的8066端口:

这时,你只需要通过本机ip的8066端口和你配置文件中设置的账号密码来连接数据库就行了,写入的数据都会到master里,读取的数据都会从slave中读取;
测试:
关闭master数据库,依然可以读取:执行 select 查看命令;
或者
关闭slave数据库,依然可以写入: 执行 update、inster命令;


数据 数据库 配置 服务器 服务 环境 文件 变量 密码 端口 账号 功能 脚本 监听 最大 两个 主从 内存 名字 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 海岸线互联网科技有限公司 软件开发费单位写次还是项 万德数据库官网股票 崇明区市场软件开发业务流程 服务器 1u 2u 如何在数据库增加用户 服务器安全管理标准 软件开发培训哪个学校好一些呢 我的世界新服务器生存 国际上的企业管理软件开发 软件开发环境网络系统有哪些 怎么把域名和服务器连接起来啊 国内外的期刊数据库有哪些 合肥做软件开发工资标准 中国网络安全现状 天涯 企业服务器整合项目立项名称 隧道管理系统数据库类型 安徽视频会议服务器厂家云主机 大鼠属于什么数据库 红歌网络技术有限公司 设有某销售数据库sale 人社网络安全宣传周活动总结 elastic使用什么数据库 印度 互联网高科技 想做信息数据库怎么入手 数据库sql执行代码 维护网络服务器的专业知识点 网络安全防疫工作方案 数据库死锁面试 赤峰奥普网络技术
0