zoukankan      html  css  js  c++  java
  • 分布式数据库搭建详细教程

    由于业务本身的需求,有时需要构建分布式数据库。一个具有较好设计的分布式数据库,对于用户(调用者)来说透明,跟使用本地数据库一样。

    本文准备使用中间件的架构,实现分布式数据库的构建。简单点说,调用者与中间件通信,有中间件与各个数据库通讯,完成基本数据操作,将结果返回给调用者。

    注意:本文篇幅看似短小,文字间引用的文章链接都是需要各位读者详细阅读的。

          本文中Amoeba+Mysql架构示意图

    1,在虚拟机上构建Mysql server

    本文使用的VM虚拟机,系统为ubuntu 14.04,安装好系统之后,通过apt安装mysql server,比较方便。安装完成之后,记得打开3306端口。

    参考下面两个教程步骤,完成第一步的安装要求。

      mysql安装     (安装完mysql即可,Apache等不需要装)

     允许远程连接 

    2,链接数据库

    通过上一步可以构建若干(你开心就好)Mysql数据库,本文建了两个仅做实验验证。完成后在本地安装Navicat,验证数据连接无误。

    点击【连接】按钮,输入上一步建立的sever的ip,用户名和密码。顺利连接会跟下图一样,显示链接成功。

    3,配置Amoeba   

    安装Amoeba 直接执行以下命令即可:

    wget https://jaist.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/2.x/amoeba-mysql-binary-2.0.1-BETA.tar.gz
    mkdir /usr/local/amoeba-2.0.1
    tar xf amoeba-mysql-binary-2.0.1-BETA.tar.gz -C /usr/local/amoeba-2.0.1/

     配置链接 (配置参考链接中第三步之后对amoeba配置方式),连接两个数据库。

    然后可以执行下列代码运行Amoeba中间件:

    /usr/local/amoeba-2.0.1/bin/amoeba start

    权限问题出现的话,可能需要在代码前加 sudo

    顺利的话可以直接连上数据库(怎么可能这么顺利呐?!),如果发生错误很大的可能性为常见的两种错误。

    参考下面链接的解决办法: Amoeba报错解决方案

    ubuntu 14.04默认java的安装在/usr/lib/jvm/java-7-openjdk-amd64下

    设置JAVA_HOME环境变量,在bashrc文件最后加上:

    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
    export JRE_HOME=${JAVA_HOME}/jre  
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH

     重启命令行窗口,再次运行Amoeba

    如果正确配置的话,执行启动amoeba命令后,会有如下面的输出。此时amoeba对外提供MYSQL的服务可以看做是一个虚拟的MySQL数据库。

    该数据库的地址为amoeba的ip,端口在配置过程中会有设置,默认为8066(从下图也能看出来)。

     

    4,设置分片

    上一步中笔者默认忽略了对数据库分片的设置。然而实际上分布式数据库最终要的就是对水平分片和竖直分片的设置。在amoeba中,是通过对conf文件夹中rule.xml文件进行配置实现的。

    默认的rule.xml文件如下图。

    所谓水平切分就是按照一定规则将记录存储在不同的服务器上,官方文档有详细的 示例解释

    而垂直区分则是将一条记录的不同列按照约定存储在不同服务器上,可以对敏感重要资料起到一定的保护作用。官方示例

    ---------------------------------------------------------------------------------------

    完成以上的步骤之后,你就可以的得到一个自己的分布式数据库,之后调用完全跟普通MYSQL数据库一样。笔者使用写了一个简单点JAVA小界面连接测试了搭建的数据库,over。

    本博客所有内容为原创,转载需征求作者同意。
  • 相关阅读:
    SqlServer卸载实例
    java写的各种钟(收集)
    Codeforces 1003D Coins and Queries 【性质】
    Codeforces 997B Roman Digits【暴力】【枚举】
    洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】
    复习图论
    Codeforces 1000D Yet Another Problem On a Subsequence 【dp】【组合数学】
    Codeforces 1000C Covered Points Count 【前缀和优化】
    Codeforces 999F Cards and Joy 【dp】【性质】
    Codeforces 999D Equalize the Remainders 【模拟】
  • 原文地址:https://www.cnblogs.com/xueyudlut/p/8324500.html
Copyright © 2011-2022 走看看