linux中mysql和mycat搭建,以及用mycat实现数据库集群
一搭建mysql 参考链接 (点击打开链接)
-
查找以前是否安装有mysql,使用下面命令:
rpm -qa|grep -i mysql
如果显示有如下包则说明已安装mysql
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
-
如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库
删除命令: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
-
下载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开发依赖包。
-
安装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 不必分数据库,有利于优化。
-
-