mysql数据库的读写分离

该章节的实验需要基于http://t.csdnimg.cn/mT4Bs中的实验来进行。

  • 读写分离

    • 实现方法

      • 在代码上实现读写分离,但对于运维者不友好

      • 设置代理

        • 现在大多采用amoeba作为中间代理服务器做读写分离操作。

          • 2008,阿里巴巴前员工,陈思儒基于java1.6的环境开发,因为没有做过大型升级,因此依赖的java环境较老。不支持事务的分离
    • 注意事项

      • 要用与amoeba相比配的jdk环境,1.6或者1.5
    • 实验过程

      • 本实验基于前文的主从复制,在添加一个amoeba服务器与客户端即可。

      • 以jdk1.6的二进制包为例

          • 将该软件执行后移动到常用软件目录下即可一般为/usr/local/jdk,"jdk"是重命名后的目录名

          • 安装后修改变量信息将jdk与amoeba的相关变量都写入/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:JAVA_HOME/bin

            • export AMOEBA_HOME=/usr/local/amoeba/

            • export PATH=PATH:AMOEBA_HOME/bin

          • 然后在系统命令行中执行java -version查看版本信息,出现如下字样表示jdk环境部署成功。

      • 以amoeba-mysql-binary-2.2.0.tar.gz为例

        • 由于解压后该tar包并不会创建一个综合目录,存放所有信息,所以我们需要提前创建一个目录将解压后的数据放到该目录下。

          • mkdir /usr/local/amoeba

            • 创建存放软件目录
          • tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

            • -C :指定解压目录
        • 修改配置文件参数(/usr/local/amoeba/conf)

          • 有两个文件需要注意

            • amoeba.xml

              • 该文件是对应了amoeba与客户端的连接

                • 有几个单元需要注意


                  标识1:该位置定义了服务的名称

                  • 标识2:该位置决定了该服务监听的端口

                    • 通常情况下,一个amoeba只会与一个数据库的某一个库或者表建立连接,当根据不同的需要,要访问不同的库时,基于安全的考虑并不会给予amoeba与数据库的连接的账号过大的权限,因此在同一台服务器上跑多个amoeba程序是一种解决办法。修改监听端口即可实现。
                  • 认证器单元:

                  • 标识1:提供给客户端的访问账号,

                  • 标识2:客户端访问账号的密码

                  • 请求路由单元:

                  • 标识1:定义默认池的名字

                  • 标识2:定义写入池的名字

                  • 标识3:定义读取池的名字

                    • 这是修改后的配置,不是默认的配置
            • dbServers.xml

              • 该文件对应了amoeba与数据库的连接


                标识1:amoeba与数据库建立连接的端口

                • 标识2:类似于默认登录到的数据库,要么提前创建一个没用的库,要么指定一个已有的库,要有安全考虑。

                • 标识3:amoeba访问数据库的账号,需要在数据库中授予相应的权限。

                • 标识4:amoeba访问数据路的账号的密码。

                • 在这个单元中,有多少个服务器就可以指定多少个服务器,给每个服务器起名用于区分,并指定IP地址。在这个amoeba中只负责与3306的端口的MySQL数据库建立连接。

                • 标识1:与amoeba.xml默认池的名字要一致

                • 标识2:与amoeba.xml的读取池名字要一致

                • 标识3:可以设置多个读取服务器,分担压力。

        • 解压后因为前面已经添加过系统变量,所以直接执行amoeba 会有相关提示证明部署没有问题。

        • 修改完毕后就可以进行启动测试

          • amoeba start &

            • 因为该程序运行时会占用前端,因此可以放到后端运行。
          • 查看进程后出现该字样标识成功。

        • 之后就可以进行创建数据测试是否读写分离。默认是按照轮询的方式从读取池中的服务区读取信息。

将以上全选复制,粘贴到xmind中可查看到条理性笔记。

相关推荐
-SGlow-2 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
明月5663 小时前
Oracle 误删数据恢复
数据库·oracle
水瓶_bxt4 小时前
Centos安装HAProxy搭建Mysql高可用集群负载均衡
mysql·centos·负载均衡
♡喜欢做梦5 小时前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
遇见你的雩风5 小时前
MySQL的认识与基本操作
数据库·mysql
dblens 数据库管理和开发工具5 小时前
MySQL新增字段DDL:锁表全解析、避坑指南与实战案例
数据库·mysql·dblens·dblens mysql·数据库连接管理
weixin_419658315 小时前
MySQL的基础操作
数据库·mysql
不辉放弃6 小时前
ZooKeeper 是什么?
数据库·大数据开发
Goona_6 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
Olrookie7 小时前
若依前后端分离版学习笔记(三)——表结构介绍
笔记·后端·mysql