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

相关推荐
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
了一li2 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
码农君莫笑2 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
别致的影分身3 小时前
使用C语言连接MySQL
数据库·mysql
过过过呀Glik3 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
京东零售技术4 小时前
“慢”增长时代的企业数据体系建设:超越数据中台
数据库
sdaxue.com4 小时前
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
数据库·github·网站·帝国cms·认证码
o(╥﹏╥)5 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长5 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_5 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端