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中可查看到条理性笔记。

相关推荐
lwprain7 分钟前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
Viktor_Ye14 分钟前
高效集成易快报与金蝶应付单的方案
java·前端·数据库
努力算法的小明1 小时前
SQL 复杂查询
数据库·sql
斗-匕1 小时前
MySQL 三大日志详解
数据库·mysql·oracle
代码中の快捷键1 小时前
MySQL数据库存储引擎
数据库·mysql
只因在人海中多看了你一眼1 小时前
数据库体系
数据库
尘浮生1 小时前
Java项目实战II基于微信小程序的电影院买票选座系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
六月闻君2 小时前
MySQL 报错:1137 - Can‘t reopen table
数据库·mysql
SelectDB技术团队2 小时前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
inventecsh2 小时前
mongodb基础操作
数据库·mongodb