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

相关推荐
45度看我5 分钟前
数据库-python SQLite3
数据库·python
编程刘明15 分钟前
学会拥抱Python六剑客,提高编程效率
开发语言·数据库·python·程序人生·职场和发展·学习方法
水题检测鸟25 分钟前
1)并发事务的问题
数据库
小的~~38 分钟前
大数据面试题之数据库(3)
大数据·数据库
真果粒wrdms43 分钟前
【sqlite3】联系人管理系统
linux·c语言·数据库·经验分享·笔记·sqlite
夜行容忍1 小时前
索引失效的几种场景
数据库·mysql
不称职的程序员❦1 小时前
Sqlite Browser 下载与安装教程(可视化创建,管理,以及查看 sqlite 数据库文件)
数据库·sqlite·db4s·db browser
dot.Net安全矩阵1 小时前
.NET 漏洞情报 | 某整合管理平台SQL注入
数据库·sql·安全·矩阵·.net
969库库库1 小时前
MySQL-作业1
数据库·mysql
PyAIGCMaster1 小时前
将带有 商店idr 商品信息的json导入到mongodb后,能不能根据商店id把所有商品全部提取并转为电子表格
数据库·mongodb