linux中mysql和mycat搭建,以及用mycat实现数据库集群

来源:互联网 发布:时代网络大厦美食广场 编辑:程序博客网 时间:2024/06/06 08:56

linux中mysql和mycat搭建,以及用mycat实现数据库集群

一搭建mysql   参考链接 (点击打开链接)

  1. 1

    查找以前是否安装有mysql,使用下面命令:

    rpm -qa|grep -i mysql

    如果显示有如下包则说明已安装mysql

    mysql-4.1.12-3.RHEL4.1

    mysqlclient10-3.23.58-4.RHEL4.1

  2. 2

    如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库

    删除命令:rpm -e --nodeps 包名

    ( rpm -ev mysql-4.1.12-3.RHEL4.1 )

    删除老版本mysql的开发头文件和库

    命令:rm -fr /usr/lib/mysql

    rm -fr /usr/include/mysql

    注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除

    rm -f /etc/my.cnf

    rm -fr /var/lib/mysql

  3. 下载mysql的rpm包

    可以通过wget下载具体的地址因为不能用链接请大家去官网去找

    (1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:MySQL服务器;

    (2)MySQL-client-5.6.10-1.rhel5.x86_64.rpm:MySQL客户端;

    (3)MySQL-devel-5.6.10-1.rhel5.x86_64.rpm:Mysql开发依赖包。

  4.   

    安装MySQL Server的rpm包

    rpm -ivh MySQL-server-5.6.21-1.linux_glibc2.5.x86_64.rpm

    安装过程如图所示

    安装完成后会生成root用户的随机密码,请使用“cat /root/.mysql_secret”或类似命令进行查看

  • 如上方法安装余下安装包   注意;linux系统时32位还是64位的,就安装对应的32、64位软件

  • 启动msyql

    安装完成后mysql是没有启动的,运行mysql命令会提示如下错误:

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    可使用如下命令启动MySQL:

    service mysql start

    或者使用如下命令:

    /etc/init.d/mysql start

    可使用SET PASSWORD命令修改root用户的密码,参考如下:SET PASSWORD = PASSWORD('root123456');

    service mysql status:查看mysql服务是否启动   mysql启动:mysql -uroot -proot -hlocalhost -P 3306

    二 安装mycat

     (1) 修改my.inf新增以下语句,my.inf 一般会放在/etc/my.cnf 或 /etc/mysql/my.cnf,设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。
    lower_case_table_names = 1

    (2) 解压Mycat-server-1.3.0.2-20150105144205-Linux.tar.gz 到/usr/local/mycat

    (3) 解压jdk-7u65-linux-i586.gz,拷贝jdk1.7.0_65 到/usr/local/mycat/

    (4) 修改/usr/local/conf/wrap.conf 修改wrapper.Java.command=java为上一步存放路径
    wrapper.java.command=/usr/local/mycat/jdk1.7.0/bin/java

    (5) 创建mycat 用户,改变目录权限为mycat
    useradd mycat
    chown -R mycat.mycat /usr/local/mycat

    (6) 修改用户密码
    passwd mycat
    输入:

    (8) 修改/usr/local/conf/schema.xml,URL、用户名、密码修改,其余不变
    <writeHost host="hostM1" url="10.1.176.104:3306" user="root"
    password="www.com.workssys">

    二、运行步骤详解

    (1) 进入 /usr/local/mycat/bin (默认数据端口为8066,管理端口为9066)
    执行./mycat start   mysql -uroot -proot -hlocalhost -P8066

    (2) 进入logs目录,查看日志,如果wrapper.log 报错 java.NET.BindException: Address already in use 杀掉正在执行的相关java进程
    ps -ef|grep java
    kill -9 xxx

    三  配置mycat,实现数据库集群

    1.server.xml

    <user name="test">
    <property name="password">test</property>
    <property name="schemas">TESTDB</property>
    </user>
    <user name="root">
    <property name="password">root</property>
    <property name="schemas">babasport</property>
    </user>

    <user name="user">
    <property name="password">user</property>
    <property name="schemas">TESTDB</property>
    <property name="readOnly">true</property>
    </user>

    2.schema.xml

    <schema name="babasport" checkSQLschema="false" sqlMaxLimit="100">
    <!-- global table is auto cloned to all defined data nodes ,so can join 
    with any table whose sharding node is in the same data node -->
    <table name="bbs_color" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
    <table name="bbs_brand" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
    <!-- buyer addr order -->
    <table name="bbs_buyer" primaryKey="ID" dataNode="dn1,dn2,dn3"
    rule="sharding-by-pattern">
    <childTable name="bbs_order" primaryKey="ID" joinKey="buyer_id" parentKey="id">
    <childTable name="bbs_detail" joinKey="order_id"
    parentKey="id" />
    </childTable>
    </table>

    <table name="bbs_product" primaryKey="ID" dataNode="dn1,dn2,dn3"
    rule="sharding-by-pattern">
    <childTable name="bbs_sku" primaryKey="ID" joinKey="product_id"
    parentKey="ID" />
    </table>
    <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate" 
    /> -->
    </schema>

    3.rule.xml

    <tableRule name="sharding-by-pattern">
          <rule>
            <columns>id</columns>
            <algorithm>sharding-by-pattern</algorithm>
          </rule>
       </tableRule>
       
         <tableRule name="sharding-by-pattern-b">
          <rule>
            <columns>buyer_id</columns>
            <algorithm>sharding-by-pattern</algorithm>
          </rule>
       </tableRule>
    <function name="sharding-by-pattern" class="org.opencloudb.route.function.PartitionByPattern">
    <property name="patternValue">512</property>
    <property name="defaultNode">2</property>
    <property name="mapFile">partition-pattern.txt</property>
      </function>

    6.通配取模

    <tableRulename="sharding-by-pattern">

          <rule>

            <columns>user_id</columns>

           <algorithm>sharding-by-pattern</algorithm>

          </rule>

       </tableRule>

    <functionname="sharding-by-pattern"class="org.opencloudb.route.function.PartitionByPattern">

        <propertyname="patternValue">256</property>

        <propertyname="defaultNode">2</property>

        <propertyname="mapFile">partition-pattern.txt</property>

     

      </function>


    4.partition-pattern.txt

    0-127=0
    128-255=1
    256-512=2

    四 实现数据库集群功能

    搭建3个数据库,分别为babasport1,在商品ID中0-127为一个数据库,color和brand表三个数据库都有,为全局变量,buyer依据分配规则来分配,其中订单表和订单详情表依据这个buyer走,这样查询订单的相关info 不必分数据库,有利于优化。



  • 原创粉丝点击