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

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 不必分数据库,有利于优化。



猜你喜欢

转载自blog.csdn.net/hxb_hexiaobo/article/details/77630949