IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> amoeba实现MySQL读写分离(Centos 7) -> 正文阅读

[系统运维]amoeba实现MySQL读写分离(Centos 7)

MySQL读写分离能一定程度上缓解服务器压力,数据的写入速度远远赶不上读取的速度,一般是设置主从服务器,在主服务器上进行写入操作,在从服务器上进行读取操作。

读写分离目前有两种方式,一种是基于程序内部的代码来实现,也是就是在开发时直接将代码写死,另外一种是基于中间代理,也就是软件实现。这里运用到的是前阿里大佬陈思儒开发的amoeba。

前期准备:一台mysql主服务器,一台mysql从服务器,一台将被来用于中间代理的Centos 7。

实验配置

一.完成主从服务器的配置。

主从服务器配置可参考https://blog.csdn.net/W1264822267/article/details/127139505?spm=1001.2014.3001.5502

二.中间服务器配置

1.关闭防火墙或者防火墙允许8066端口(如果只是学习读写分离推荐关闭防火墙,实际运用推荐开启8066端口);

systemctl stop firewalld
#或者配置防火墙规则,开启8066端口
firewall-cmd --zone=public --add-port=tcp/8066

2.部署jdk,直接在root下上载需要安装的jdk包(此处使用jdk版本为1.6.0);

#给jdk包赋予执行权限
chmod +x jdk-6u14-linux-x64.bin
#执行jdk.bin(一路回车,最后yes同意)
./jdk-6u14-linux-x64.bin
#将执行后产生的jdk1.6.0_14移动并改名到/usr/local/jdk1.6
mv jdk1.6.0_14/ /usr/local/jdk1.6

3.安装amoeba,这里使用的是2.2.0版本。也可以去网站下载amoeba - Browse /Amoeba for mysql at SourceForge.net

#创建一个文件夹用来存放解压的amoeba文件
mkdir /usr/local/amoeba
#将amoeba压缩包解压到刚创建的文件夹中
tar -zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

5.配置jkd和amoeba环境变量,在 /etc/profile 中直接写;

vim /etc/profile
#下面是需要添加的内容,在末尾添加保存就行
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

export AMOEBA_HOME=/usr/local/amoeba/
export PATH=$PATH:$AMOEBA_HOME/bin

将刚才的配置立即生效

source /etc/profile

6.执行/usr/local/amoeba/bin/amoeba,如果回显amoeba start|stop表示安装成功;

[root@localhost ~]# /usr/local/amoeba/bin/amoeba
amoeba start|stop

7.登录MySQL主服务器,给amoeba服务器授权;

grant all on *.* to 'amoebatest'@'amoeba服务器IP' identified by '密码';

8.修改amoeba主配置文件;

vim /usr/local/amoeba/conf/amoeba.xml
#第11行,amoeba服务器的默认监听端口,客户端在访问时需要使用此端口(在末行模式下使用:set number可显示行数)
<property name="port">8066</property> 
#第30行,客户端访问amoeba服务器所使用的用户名
<property name="user">amoeba</property>
#第32行,客户端访问amoeba服务器所使用的密码
<property name="password">123456</property>
#第115行,对数据库的默认操作,指定为主服务器
<property name="defaultPool">master</property>
#第118行,对数据库的写操作,指定为主服务器
<property name="writePool">master</property>
#第119行,对数据库的读操作,指定为从服务器,这里是一个集群名称
<property name="readPool">slave</property>
#将117行和120行的内容删除,原本是默认注释掉了118和119行的内容

9.修改dbServers.xml;

vim /usr/local/amoeba/conf/dbServers.xml
#第20行,表示amoeba去连接数据库的端口号
<property name="port">3306</property>
#第23行,表示客户机连接进去后的默认数据库
<property name="schema">数据库名</property>
#第26行,前面在主MySQL上授权的用户名
<property name="user">amoebatest</property>
#第29行,前面在主MySQL上授权的用户名密码(30行的内容移到到28行末尾)
<property name="password">密码</property>
#第45行,amoeba主配置文件中指定的写操作MySQL服务器名称
<dbServer name="master"  parent="abstractServer">
#第48行,写操作MySQL服务器的IP地址
<property name="ipAddress">主服务器IP</property>
#第52行,amoeba主配置文件中指定的读操作MySQL服务器名称
<dbServer name="slave"  parent="abstractServer">
#第55行,读操作MySQL服务器的IP地址
<property name="ipAddress">从服务器IP</property>
#因本次实验无从服务器集群,所以注释掉第59行到第67行的集群配置,也可删除

10.启动amoeba,用netstat -anpt查看是否有java的进程,有则表示成功;

/usr/local/amoeba/bin/amoeba start
[root@localhost ~]# netstat -anpt |grep java
tcp6       0      0 :::8066                 :::*                    LISTEN      12459/java          
tcp6       0      0 127.0.0.1:50228         :::*                    LISTEN      12459/java    

三.验证

此处用的是Navicat 15 for MySQL进行读写操作,用Wireshark抓包查看数据走向。

1.登录amoeba服务器;

2.在Navicat 15 for MySQL中进行读写操作,并用Wireshark抓包

主服务器IP:192.168.183.146

从服务器IP:192.168.183.150

amoebaIP:192.168.183.151

分析流量有的是从amoeba(151)到主服务器(146),即写入操作;有的是从服务器(150)到amoeba(151),即读取操作;

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 21:17:28  更:2022-10-08 21:17:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:46:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码