接着上面的操作继续:
启动主机192.168.10.205的mysql
[root@Mysql-node1 ~]
# /etc/init.d/mysql start
Starting MySQL... SUCCESS!
[root@Mysql-node1 ~]
# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE
/OFF
NODE NAME
mysqld 11645 mysql 17u IPv4 10457025 0t0 TCP *:mysql (LISTEN)
mysqld 11645 mysql 39u IPv4 10457749 0t0 TCP Mysql-node1:mysql->Mycat-node:39252 (ESTABLISHED)
mysqld 11645 mysql 40u IPv4 10458099 0t0 TCP Mysql-node1:mysql->Mysql-node1:57270 (ESTABLISHED)
登录从机192.168.10.206的mysql,重启slave的主从同步关系
[root@Mysql-node2 ~]
# mysql -p123456
......
mysql> show slave status \G;
......
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
......
Last_IO_Error: error reconnecting to master
'[email protected] :3306'
- retry-
time
: 60 retries: 81
......
mysql> stop slave;
Query OK, 0 rows affected (0.08 sec)
mysql> start slave;
Query OK, 0 rows affected (0.04 sec)
mysql> show slave status \G;
......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
.....
在主机192.168.10.205的mysql上再创建一个数据库grace
现在需要将haha表放在kevin库里,将heihei表拆分放到kevin和grace库了。
操作如下(在主机mysql里操作,从机mysql自动会同步过来):
登录grace库里创建heihei表,同时在kevin库里也创建heihei表。
特别需要注意的是:
- 分表的表在创建时一定要创建主键,否则在mycat端写入数据时会报错主键冲突!!
- 分表的表要在两个库上都要创建。
mysql> CREATE DATABASE grace CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> use grace;
Database changed
mysql> CREATE TABLE heihei (
->
id
INT NOT NULL AUTO_INCREMENT,
-> city varchar(50) NOT NULL,
-> PRIMARY KEY (
id
)
-> )AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.23 sec)
mysql> insert into grace.heihei values(1,
"beijing"
);
Query OK, 1 row affected (0.03 sec)
mysql> show tables;
+-----------------+
| Tables_in_grace |
+-----------------+
| heihei |
+-----------------+
1 row
in
set
(0.00 sec)
mysql>
select
* from grace.heihei;
+----+---------+
|
id
| name |
+----+---------+
| 1 | beijing |
+----+---------+
1 row
in
set
(0.00 sec)
mysql> use kevin;
Reading table information
for
completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables_in_kevin |
+-----------------+
| haha |
+-----------------+
1 row
in
set
(0.00 sec)
mysql> CREATE TABLE heihei (
->
id
INT NOT NULL AUTO_INCREMENT,
-> city varchar(50) NOT NULL,
-> PRIMARY KEY (
id
)
-> )AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.23 sec)
mysql> show tables;
+-----------------+
| Tables_in_kevin |
+-----------------+
| haha |
| heihei |
+-----------------+
2 rows
in
set
(0.00 sec)
mysql> insert into kevin.heihei values(1,
"shanghai"
);
Query OK, 1 row affected (0.13 sec)
mysql>
select
* from kevin.heihei;
+----+----------+
|
id
| name |
+----+----------+
| 1 | shanghai |
+----+----------+
1 row
in
set
(0.00 sec)
上面在从机的mysql里操作后,从机的mysql会自动把数据同步过来!
登录mycat机器192.168.10.210机器,分别设置server.xml文件、rule.xml文件、schema.xml文件
server.xml文件在上面已经设置过了,这里就不用修改了:
[root@Mycat-node ~]
# vim /data/mycat/conf/server.xml
......
"serverPort"
>8066<
/property
> "managerPort"
>9066<
/property
>
.....
"bobo"
>
"password"
>bo@123<
/property
>
"schemas"
>mycat<
/property
>
<
/user
>
<
/mycat
:server>
分库分表配置还涉及到rule.xml文件,配置如下(备份文件,清空,直接复制下面内容):
[root@Mycat-node conf]
# cp rule.xml rule.xml.bak
[root@Mycat-node conf]
# vim rule.xml
"1.0"
encoding=
"UTF-8"
?>
"rule.dtd"
>
"http://io.mycat/"
>
"mycat-rule"
>
id
<
/columns
>
mod-long<
/algorithm
>
<
/rule
>
<
/tableRule
>
<
function
name=
"mod-long"
class=
"io.mycat.route.function.PartitionByMod"
>
"count"
>2<
/property
>
<
/function
>
<
/mycat
:rule>
接着配置schema.xml文件(server.xml文件配置在已经已经完成),分库分表配置如下
(要将rule.xml里定义的分片模型写进去,由于这里的heihei表配置了主键,所以primaryKey=
"id"
这个也写进去,其他情况看表结构,也可以不写):
[root@Mycat-node conf]
# cp schema.xml schema.xml.old
[root@Mycat-node conf]
# vim schema.xml
"1.0"
?>
"schema.dtd"
>
"http://io.mycat/"
>
"mycat"
checkSQLschema=
"false"
sqlMaxLimit=
"100"
>
"haha"
primaryKey=
"id"
dataNode=
"kevin_db"
/>
"heihei"
primaryKey=
"id"
dataNode=
"kevin_db,grace_db"
rule=
"mycat-rule"
/>
<
/schema
>
"kevin_db"
dataHost=
"Mycat-node"
database=
"kevin"
/>
"grace_db"
dataHost=
"Mycat-node"
database=
"grace"
/>
"Mycat-node"
maxCon=
"1000"
minCon=
"10"
balance=
"1"
writeType=
"0"
dbType=
"mysql"
dbDriver=
"native"
switchType=
"1"
slaveThreshold=
"100"
>
show slave status<
/heartbeat
>
"Mysql-node1"
url=
"192.168.10.205:3306"
user=
"root"
password=
"123456"
>
"Mysql-node2"
url=
"192.168.10.206:3306"
user=
"root"
password=
"123456"
>
<
/readHost
>
<
/writeHost
>
"Mysql-node1"
url=
"192.168.10.206:3306"
user=
"root"
password=
"123456"
>
<
/writeHost
>
<
/dataHost
>
<
/mycat
:schema>
重启mycat服务
[root@Mycat-node conf]
# /data/mycat/bin/mycat restart
Stopping Mycat-server...
Stopped Mycat-server.
Starting Mycat-server...
[root@Mycat-node conf]
# lsof -i:8066
COMMAND PID USER FD TYPE DEVICE SIZE
/OFF
NODE NAME
java 971 root 79u IPv6 4024290 0t0 TCP *:8066 (LISTEN)
[root@Mycat-node conf]
# lsof -i:9066
COMMAND PID USER FD TYPE DEVICE SIZE
/OFF
NODE NAME
java 971 root 75u IPv6 4024288 0t0 TCP *:9066 (LISTEN)
在客户机远程登录Mycat
[root@client-server ~]
# mysql -h192.168.10.210 -P8066 -ubobo -pbo@123
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection
id
is 1
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
Copyright (c) 2000, 2013, Oracle and
/or
its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and
/or
its
affiliates. Other names may be trademarks of their respective
owners.
Type
'help;'
or
'\h'
for
help. Type
'\c'
to
clear
the current input statement.
mysql> show databases;
+----------+
| DATABASE |
+----------+
| mycat |
+----------+
1 row
in
set
(0.01 sec)
mysql> use mycat;
Reading table information
for
completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables
in
mycat |
+-----------------+
| haha |
| heihei |
+-----------------+
2 rows
in
set
(0.01 sec)
mysql>
select
* from haha;
+----+-------------+
|
id
| name |
+----+-------------+
| 1 | wangshibo |
| 2 | linan |
| 3 | zhangminmin |
| 4 | lihuan |
+----+-------------+
4 rows
in
set
(0.12 sec)
mysql>
select
* from heihei;
+----+----------+
|
id
| city |
+----+----------+
| 1 | beijing |
| 1 | shanghai |
+----+----------+
2 rows
in
set
(0.04 sec)
mysql>
分别在mycat里往heihei和grace.heihei表里插入一些数据
mysql> insert into haha values(10,
"wangbiao"
);
insert into haha values(11,
"zhangcaiyi"
);Query OK, 1 row affected (0.06 sec)
mysql> insert into haha values(11,
"zhangcaiyi"
);
Query OK, 1 row affected (0.06 sec)
mysql> insert into heihei(
id
,city) values(20,
"chognqing"
);
Query OK, 1 row affected (0.09 sec)
mysql> insert into heihei(
id
,city) values(22,
"xianggang"
);
insert into heihei(
id
,city) values(28,
"chengdu"
);Query OK, 1 row affected (0.02 sec)
mysql> insert into heihei(
id
,city) values(23,
"huoqiu"
);
Query OK, 1 row affected (0.02 sec)
mysql> insert into heihei(
id
,city) values(24,
"haikou"
);
Query OK, 1 row affected (0.03 sec)
mysql> insert into heihei(
id
,city) values(25,
"anqing"
);
Query OK, 1 row affected (0.03 sec)
mysql> insert into heihei(
id
,city) values(26,
"tianqing"
);
Query OK, 1 row affected (0.02 sec)
mysql> insert into heihei(
id
,city) values(27,
"hangzhou"
);
Query OK, 1 row affected (0.04 sec)
mysql> insert into heihei(
id
,city) values(28,
"chengdu"
);
Query OK, 1 row affected (0.26 sec)
特别注意:
1)在配置了sharding分片策略之后(如heihei表),mycat里分片的表做插入数据时,即使插入所有字段的数据,也一定要在表名后面写明插入数据的字段名称,
否则插入数据会报错:ERROR 1064 (HY000): partition table, insert must provide ColumnList
2)没有配置sharding分片策略的表(如haha表),插入所有字段的数据时,表名后面不需要写明字段名称,默认就是所有字段插入数据,如上面的haha表。
登录主机和从机,查看从mycat端写入的数据
mysql>
select
* from kevin.haha;
+----+-------------+
|
id
| name |
+----+-------------+
| 1 | wangshibo |
| 2 | linan |
| 3 | zhangminmin |
| 4 | lihuan |
| 10 | wangbiao |
| 11 | zhangcaiyi |
+----+-------------+
6 rows
in
set
(0.00 sec)
mysql>
select
* from grace.heihei;
+----+-----------+
|
id
| city |
+----+-----------+
| 1 | beijing |
| 21 | guangzhou |
| 23 | huoqiu |
| 25 | anqing |
| 27 | hangzhou |
+----+-----------+
5 rows
in
set
(0.00 sec)
mysql>
select
* from kevin.heihei;
+----+-----------+
|
id
| city |
+----+-----------+
| 1 | shanghai |
| 20 | chognqing |
| 22 | xianggang |
| 24 | haikou |
| 26 | tianqing |
| 28 | chengdu |
+----+-----------+
6 rows
in
set
(0.00 sec)
mysql>
从上面可以看出:
在mycat里往做了sharding分片策略的heihei表里写入的数据,已经分片到kevin和grace两个库里了,即成功实现了分库分表功能!
查看mycat的debug日志,可以观察到mysql读写分离和分库分表情况
[root@Mycat-node logs]
# tail -f mycat.log
这里需要注意: - 查询语句不要加事务,否则读操作会被分发到写服务器上。 - 主从复制是mysql自己实现的,mycat只是代理插件,它本身不能实现主从复制,只能实现了读写分离、主从切换、分库分表功能。
为了提升查询的性能,有人创新的设计了一种MySQL主从复制的模式,主节点为InnoDB引擎,读节点为MyISAM引擎,经过实践,发现查询性能提升不少。
此外,为了减少主从复制的时延,也建议采用MySQL 5.6+的版本,用GTID同步复制方式减少复制的时延,可以将一个Database中的表,根据写频率的不同, 分割成几个Database,用Mycat虚拟为一个Database,这样就满足了多库并发复制的优势,需要注意的是,要将有Join关系的表放在同一个库中。
对于某些表,要求不能有复制时延,则可以考虑这些表放到Gluster集群里,消除同步复制的时延问题,前提是这些表的修改操作并不很频繁,需要做性能测试, 以确保能满足业务高峰。
总结一下,Mycat做读写分离和高可用,可能的方案很灵活,只有你没想到的,没有做不到的。
=================Mycat常见问题及注意点================== 1)Mycat自动切换需要人工处理么? Mycat通过心跳检测,自主切换数据库,保证高可用性,无须手动切换。
2)Mycat支持集群么? 目前Mycat没有实现对多Mycat集群的支持,可以暂时使用haproxy来做负载,或者统计硬件负载。
3)Mycat目前有生产案例了么? 目前Mycat初步统计大概600家公司使用。
4)Mycat稳定性与Cobar如何? 目前Mycat稳定性优于Cobar,而且一直在更新,Cobar已经停止维护,可以放心使用。
5)Mycat除了Mysql还支持哪些数据库? mongodb、oracle、sqlserver 、hive 、db2 、 postgresql。
6)Mycat如何配置字符集? 在配置文件server.xml配置,默认配置为utf8。
7)Mycat后台管理监控如何使用? 9066端口可以用JDBC方式执行命令,在界面上进行管理维护,也可以通过命令行查看命令行操作。 命令行操作是:mysql -h127.0.0.1 -utest -ptest -P9066 登陆,然后执行相应命令。
8)Mycat主键插入后应用如何获取? 获得自增主键,插入记录后执行select last_insert_id()获取。
9)Mycat运行sql时经常阻塞或卡死是什么原因? 如果出现执行sql语句长时间未返回,或卡死,请检查是否是虚机下运行或cpu为单核。如果仍旧无法解决,可以暂时跳过,目前有些环境阻塞卡死原因未知。
10)Mycat中,旧系统数据如何迁移到Mycat中? 旧数据迁移目前可以手工导入,在mycat中提取配置好分配规则及后端分片数据库,然后通过dump或loaddata方式导入,后续Mycat就做旧数据自动数据迁移工具。
11)Mycat如何对旧分片数据迁移或扩容,支持自动扩容么? 目前除了一致性hash规则分片外其他数据迁移比较困难,目前暂时可以手工迁移,未提供自动迁移方案,具体迁移方案情况Mycat权威指南对应章节。
12)Mycat支持批量插入吗? 目前Mycat1.3.0.3以后支持多values的批量插入,如insert into(xxx) values(xxx),(xxx) 。
13)Mycat支持多表Join吗? Mycat目前支持2个表Join,后续会支持多表Join,具体Join请看Mycat权威指南对应章节。
14)Mycat 启动报主机不存在的问题? 需要添加ip跟主机的映射。
15)Mycat连接会报无效数据源(Invalid datasource)? 例如报错:mysql> select * from company; ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0 这类错误最常见是一些配置问题例如schema.xml中的dataNode的配置和实际不符合,请先仔细检查配置项,确保配置没有问题。 如果不是配置问题,分析具体日志看出错原因,常见的有: - 如果是应用连:在某些版本的Mysql驱动下连接Mycat会报错,可升级最新的驱动包试下。 - 如果是服务端控制台连,确认mysql是否开启远程连接权限,或防火墙是否设置正确,或者数据库database是否配置,或用户名密码是否正确。
16)Mycat支持的或者不支持的语句有哪些? insert into,复杂子查询,3表及其以上跨库join等不支持。
17)MycatJDBC连接报 PacketTooBigException异常 检查mysqljdbc驱动的版本,在使用mycat1.3和mycat1.4版本情况下,不要使用jdbc5.1.37和38版本的驱动,会出现如下异常报错: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (60 > -1). You can change this value on the server by setting the max_allowed_packet’ variable。 建议使用jdbc5.1.35或者36的版本。
18)Mycat中文乱码的问题 答:如果在使用mycat出现中文插入或者查询出现乱码,请检查三个环节的字符集设置: a)客户端环节(应用程序、mysql命令或图形终端工具)连接mycat字符集 b)mycat连接数据库的字符集 c)数据库(mysql,oracle)字符集。这三个环节的字符集如果配置一致,则不会出现中文乱码,其中尤其需要注意的是客户端连接mycat时使用的连接字符集, 通常的中文乱码问题一般都由此处设置不当引出。其中mycat内部默认使用utf8字符集,在最初启动连接数据库时,mycat会默认使用utf8去连接数据库,当客户 端真正连接mycat访问数据库时,mycat会使用客户端连接使用的字符集修改它连接数据库的字符集,在mycat环境的管理9066端口,可以通过"show @@backend"命令 查看后端数据库的连接字符集,通过show @@connection命令查看前端客户端的连接字符集。客户端的连接可以通过指定字符集编码或者发送SET命令指定连接mycat 时connection使用的字符集,常见客户端连接指定字符集写法如下: - jdbcUrl=jdbc:mysql://localhost:8066/databaseName? characterEncoding=iso_1 - SET character_set_client = utf8;用来指定解析客户端传递数据的编码 SET character_set_results = utf8;用来指定数据库内部处理时使用的编码 SET character_set_connection = utf8;用来指定数据返回给客户端的编码方式 - mysql –utest –ptest –P8066 –default-character-set=gbk
19)Mycat无法登陆Access denied Mycat正常安装配置完成,登陆mycat出现以下错误: [mysql@master ~]$ mysql -utest -ptest -P8066 ERROR 1045 (28000): Access denied for user 'test’@’localhost’ (using password: YES) 请检查在schema.xml中的相关dataHost的mysql主机的登陆权限,一般都是因为配置的mysql的用户登陆权限不符合,mysql用户权限管理不熟悉的请自己度娘。 只有一种情况例外,mycat和mysql主机都部署在同一台设备,其中主机localhost的权限配置正确,使用-hlocalhost能正确登陆mysql但是无法登陆mycat的情况, 请使用-h127.0.0.1登陆,或者本地网络实际地址,不要使用-hlocalhost,很多使用者反馈此问题,原因未明。
20)Mycat的分片数据插入报异常IndexOutofBoundException 在一些配置了分片策略的表进行数据插入时报错,常见的报错信息如下:java.lang.IndexOutOfBoundsException:Index:4,size:3 这类报错通常由于分片策略配置不对引起,请仔细检查并理解分片策略的配置,例如:使用固定分片hash算法,PartitionByLong策略,如果schema.xml里面设置 的分片数量dataNode和rule.xml配置的partitionCount 分片个数不一致,尤其是出现分片数量dataNode小于partitionCount数量的情况,插入数据就可能会报错。 很多使用者都没有仔细理解文档中对分片策略的说明,用默认rule.xml配置的值,没有和自己实际使用环境进行参数核实就进行分片策略使用造成这类问题居多。
21)Mycat ER分片子表数据插入报错 一般都是插入子表时出现不能找到父节点的报错。报错信息如: [Err] 1064 - can’t find (root) parent sharding node for sql:。 此类ER表的插入操作不能做为一个事务进行数据提交,如果父子表在一个事务中进行提交,显然在事务没有提交前子表是无法查到父表的数据的,因此就无法确定 sharding node。如果是ER关系的表在插入数据时不能在同一个事务中提交数据,只能分开提交。
22)Mycat最大内存无法调整至4G以上 mycat1.4的JVM使用最大内存调整如果超过4G大小,不能使用wrapper.java.maxmemory参数,需要使用wrapper.java.additional的写法,注意将 wrapper.java.maxmemory参数注释,例如增加最大内存至8G:wrapper.java.additional.10=-Xmx8G。
23)Mycat使用过程中报错怎么办 记住无论什么时候遇到报错,如果不能第一时间理解报错的原因,首先就去看日志,无论是启动(wrapper.log)还是运行过程中(mycat.log),请相信良好的 日志是编程查错的终极必杀技。日志如果记录信息不够,可以调整conf/log4j.xml中的level级别至debug,所有的详细信息均会记录。另外如果在群里面提问, 尽量将环境配置信息和报错日志提供清楚,这样别人才能快速帮你定位问题。
你可能感兴趣的:(mycat)
mycat配置双主双从实现mysql读写分离
Zozzoooz
mycat读写分离 mysql 数据库 java docker
docker容器下mysql主从配置mycat配置双主双从实现mysql读写分离拉取mysql5.7dockerpullmysql:5.7运行mysql镜像mysqlM1主容器:dockerrun-p3301:3306--namemysql-master1-v/usr/local/mysql-master1/conf:/etc/mysql/conf.d-v/usr/local/mysql-mast
MHA+MYCAT 高可用架构
第九系艾文
linux Linux tools 服务器 数据库 mycat mha linux
架构图如下:本次是4服务器架构如下环境:centos7.2x64mariadb10.4MHA5.7MyCat1.6.7IP规划IP功能10.1.41.166VIP10.1.41.167master,mycat,mha.node10.1.41.168slave(master),mha.node10.1.41.165slave,mycat,keepalived10.1.41.169slave,myca
mycat双主高可用架构部署-MySQL5.7环境部署第一台
龙哥·三年风水
MySQL5.7.36 分布式 高可用 架构 mysql 分布式
MySQL5.7服务器IP是192.168.31.209及192.168.31.2101、192.168.31.209:3307实例部署a、配置文件mkdir-p/data/mysql/mysql3307/{data,logs}#创建MySQL数据及日志目录vi/data/mysql/mysql3307/my3307.cnf#配置文件整理[client]#password=your_passwor
中间件的学习理解总结
DCDDDDcccc
中间件 学习
目录一、定义与作用二、主要类型数据库中间件远程过程调用中间件面向消息的中间件事务处理中间件三、特点与优势独立性高效性可扩展性可靠性四、应用场景企业应用集成分布式系统电子商务移动应用开发五、数据库中间件功能细节:应用优势:六、远程过程调用中间件功能细节:应用优势:七、面向消息的中间件功能细节:应用优势:八、事务处理中间件功能细节:应用优势:数据库中间件MyCat:ShardingSphere:远程过
32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)
祎安139
运维 数据库
1.roles目录介绍files:⽤来存放由copy模块或script模块调⽤的⽂件。tasks:⾄少有⼀个main.yml⽂件,定义各tasks。handlers:有⼀个main.yml⽂件,定义各handlers。templates:⽤来存放jinjia2模板。vars:有⼀个main.yml⽂件,定义变量。meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。注意:在每个⻆
云计算33------学习playbook-roles,脚本创建数据库和表,mycat读写分离
是小梅吖~
云计算 学习 数据库
上午1、roles(角色)介绍roles(⻆⾊):就是通过分别将variables,tasks及handlers等放置于单独的⽬录中,并可以便捷地调⽤它们的⼀种机制。假设我们要写⼀个playbook来安装管理lamp环境,那么这个playbook就会写很⻓。所以我们希望把这个很⼤的⽂件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使⽤的时候直接调⽤就可以了,以免重复
Mycat2.0实战2:mycat2.0安装和启动
baiyeooo
Mycat2.0实战 运维 dba mysql
以下操作均为windows下,Linux以后看情况再补充1、在哪里下载最新版本①进入官网:MyCat2②点击下载文件服务:Indexof/2.0/(mycat.org.cn)③选择最新的版本,下载我下载的是1.22的最新版本Indexof/2.0/1.22-release/(mycat.org.cn)下载安装模板:Indexof/2.0/install-template/(mycat.org.cn
MyCat实现单库分表+代理所有表
爱笑的人、
数据库
MyCAT支持水平分片与垂直分片:水平分片:一个表格的数据分割到多个节点上,按照行分隔。垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。MyCat通过定义表的分片规则来实现分片,每个表格可以绑定一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分配算法。安装mycat后解压tar-zxvfMycat-server-1.6.7.4-r
将Spring Cloud项目改造为Spring-cloud-kubernetes项目
公众号-芋道源码
中间件 java linux 数据库 spring boot
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
呵呵,一个 bug 你改了两天?难吗?
Java基基
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eurek
mycat-encrypt-server如何支持模糊查询的
jljf_hh
数据库
最近在研究数据库加密,看到了mycat-encrypt-server项目,看了一下代码,说是支持加密字段的模糊查询:privatevoidparserBinaryExpression(Expressionexpression,Setcolumns,StringtableAlias,StringtableName){BinaryExpressionbinartex=(BinaryExpression
京东平台研发:领域驱动设计(DDD)实践总结
公众号-芋道源码
tdd 控制器 360 dbcp 分布式
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天8:55更新文章,每天掉亿点点头发...源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中
怎么用数据库中间件Mycat+SpringBoot完成分库分表?
Java圈子
一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。二、什么是分库分表简单来说,就是指通过某种特定的条
Mycat 配置文件rule.xml
小波同学
rule.xml配置文件定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。该文件里面主要有tableRule和function这两个标签。1、tableRule标签idfunc1name属性:指定唯一的名字,用于标识不同的表规则。rule标签:指定对物理表中的哪一列进行拆分和使用什么路由算法。columns指定要拆分的列名字。a
领导:谁再用 Redis 实现过期订单关闭,立马滚蛋!
公众号-芋道源码
redis java 数据库 缓存 开发语言
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
Springboot整合Mycat2
Lonely Faith
spring boot java spring
Springboot连接Mycat2环境准备:http://t.csdn.cn/zRO5v创建Springboot项目1.新建项目:配置好对应的选项:选择好对应的springboot版本,和项目自带的默认依赖:如果你的环境搭建的时候是按照上面的教程搭建,那么请选择MySQLDrive驱动配置Maven:如果下载速度慢,请在Maven的/conf/settings.xml文件中配置国内镜像源等待Ma
Docker 部署Mycat2
Lonely Faith
docker 数据库 java
Docker部署Mycat2分布式数据库中间件Mycat2简介Mycat2是Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。源码地址https://github.com/MyCATApache/Mycat2https://gitee.com/MycatOne/Mycat2官网h
iOS架构之路03 -- 静态库.a打包之包含资源文件
YanZi_33
上两篇文章分别介绍了静态库.a的手动打包与脚本化打包,并没有涉及到资源文件,一般静态库中肯定会包含资源文件的,资源文件通常包括图片,xib,json数据,plist数据等等,这些资源文件在静态库打包的时候会统一放在一个Bundle文件中,下面我们就来尝试涉及资源文件的静态库打包制作;在原来上一篇文章所建的工程基础上,进行如下操作:第一步:给静态库添加一个同工程名的Bundle添加名为MyCateg
RocketMQ 源码分析 —— 集成 Spring Boot
公众号-芋道源码
点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和
myCat 数据切分方案分析
dylan丶QAQ
起因:学完mysql,了解一下mycat,对数据相关知识进一步了解。1.数据切分方案分析对于数据库来讲,他永远是系统中最关键的核心环节和瓶颈保护数据库:增加缓存(redis、ES)MySQL本身的分区表只是对磁盘进行了高效利用水平扩展,多数据中心(各个数据中心,互相是一个备份节点)如果数据库做到了分布式的架构?就需要有一个中间件,对数据进行二次加工合并2.垂直切分、水平切分方案分析2.1.垂直切分
数据库切片大对决:ShardingSphere与Mycat技术解析
一只牛博
数据库 数据库 ShardingSphere mycat
欢迎来到我的博客,代码的世界里,每一行都是一个故事数据库切片大对决:ShardingSphere与Mycat技术解析前言ShardingSphere与Mycat简介工作原理对比功能特性对比前言在数据库的舞台上,有两位颇受欢迎的明星,它们分别是ShardingSphere和Mycat。这两位巨星在数据库切片的世界里大放异彩,好像是一场引人入胜的数据库技术盛宴。在这场Sharding大战中,我们将揭开
Excel百万级数据导入导出,EasyExcel 才是 yyds
Java基基
excel
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件T
springboot配置数据库读写分离
zwb_jianshu
为什么要做数据库读写分离大多数互联网业务,往往读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果我们希望能够线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能,那么就可以使用“分组架构”(读写分离架构)。用一句话概括,读写分离是用来解决数据库的读性能瓶颈的。解决方案代理、工具,如:MySQLProxy、Mycat项目内编码实现(本文中介绍这种)步骤添加依赖支持org.spr
mycat2快速搭建
w329636271
mycat
一.下载文件1.下载对应的tar安装包,以及对应的jar包tar包http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zipjar包http://dl.mycat.org.cn/2.0/1.21-release/(下载最新的jar包)下载所需的mycat2的fatjar一般大小为100mb的一个jar文件
socket IO java的使用
w329636271
因为项目中有用到socketio然后呢,老大只给了js版本的,但是需要在服务端也要用到,所以,就写了以下的测试代码.maven需要导入的io.socketsocket.io-client0.8.3测试的Demo代码:packageio.mycat.bigmem.buffer;importorg.json.JSONObject;importio.socket.emitter.Emitter;impo
ShardingSphere-Proxy5搭建使用
Echo_bf84
ShardingSphere-Proxy5搭建使用ApacheShardingSphere下的一个产品,定位为透明化的数据库代理端,与mycat类似,所有的分片都由其完成。ShardingSphere-Proxy5下载安装官网提供三种安装方式,这里主要记录两种二进制包安装官网下载二进制包apache-shardingsphere-5.2.0-shardingsphere-proxy-bin.tar
mysql面试:主从同步原理、分库分表(mycat)
鸡鸭扣
MySQL面试题 mysql 面试 数据库 后端 前端 java
主从同步mysql主从同步的核心是其二进制日志文件binlog,该文件中记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。复制分成三步:Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。从库通过IOthread读取主库的二进制日志文件Binlog,写入到从库的中继日志RelayLog。从库再通过SQLth
MySQL- 运维-分库分表-Mycat
rch041126
MySQL mysql 数据库
一、Mycat概述1、安装2、概念介绍二、Mycat入门启动服务三、Mycat配置1、schema.xml2、rule.xml3、server.xml四、Mycat分片1、垂直分库2、水平分表五、Mycat管理及监控1、Mycat原理2、Mycat管理工具(1)、命令行(2)、Mycat-eye
ShardingSphere 5.x 系列【3】分库分表中间件技术选型
云烟成雨TD
Sharding Sphere 5.x spring boot sharding sphere 分库分表
有道无术,术尚可求,有术无道,止于术。本系列SpringBoot版本3.1.0本系列ShardingSphere版本5.4.0源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo文章目录1.前言2.MyCat3.ShardingSphere4.Dble5.Vitess6.大厂开源6.1Cobar6.2Atlas6.
数据库主从加读写分离
曹博Blog
数据库
1.规划节点mysql1------192.168.200.8------主数据库节点mysql2------192.168.200.13------从数据库节点mycat------192.168.200.21------数据库中间件节点2.基础准备使用OpenStack平台创建两台云主机进行试验,云主机使用提供的CentOS_7.5_x86_64_XD.qcow2镜像,flavor使用1核/2
微信开发者验证接口开发
362217990
微信 开发者 token 验证
微信开发者接口验证。
Token,自己随便定义,与微信填写一致就可以了。
根据微信接入指南描述 http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html
第一步:填写服务器配置
第二步:验证服务器地址的有效性
第三步:依据接口文档实现业务逻辑
这里主要讲第二步验证服务器有效性。
建一个
一个小编程题-类似约瑟夫环问题
BrokenDreams
编程
今天群友出了一题:
一个数列,把第一个元素删除,然后把第二个元素放到数列的最后,依次操作下去,直到把数列中所有的数都删除,要求依次打印出这个过程中删除的数。
&
linux复习笔记之bash shell (5) 关于减号-的作用
eksliang
linux关于减号“-”的含义 linux关于减号“-”的用途 linux关于“-”的含义 linux关于减号的含义
转载请出自出处:
http://eksliang.iteye.com/blog/2105677
管道命令在bash的连续处理程序中是相当重要的,尤其在使用到前一个命令的studout(标准输出)作为这次的stdin(标准输入)时,就显得太重要了,某些命令需要用到文件名,例如上篇文档的的切割命令(split)、还有
Unix(3)
18289753290
unix ksh
1)若该变量需要在其他子进程执行,则可用"$变量名称"或${变量}累加内容
什么是子进程?在我目前这个shell情况下,去打开一个新的shell,新的那个shell就是子进程。一般状态下,父进程的自定义变量是无法在子进程内使用的,但通过export将变量变成环境变量后就能够在子进程里面应用了。
2)条件判断: &&代表and ||代表or&nbs
关于ListView中性能优化中图片加载问题
酷的飞上天空
ListView
ListView的性能优化网上很多信息,但是涉及到异步加载图片问题就会出现问题。
具体参看上篇文章http://314858770.iteye.com/admin/blogs/1217594
如果每次都重新inflate一个新的View出来肯定会造成性能损失严重,可能会出现listview滚动是很卡的情况,还会出现内存溢出。
现在想出一个方法就是每次都添加一个标识,然后设置图
德国总理默多克:给国人的一堂“震撼教育”课
永夜-极光
教育
http://bbs.voc.com.cn/topic-2443617-1-1.html德国总理默多克:给国人的一堂“震撼教育”课
安吉拉—默克尔,一位经历过社会主义的东德人,她利用自己的博客,发表一番来华前的谈话,该说的话,都在上面说了,全世界想看想传播——去看看默克尔总理的博客吧!
德国总理默克尔以她的低调、朴素、谦和、平易近人等品格给国人留下了深刻印象。她以实际行动为中国人上了一堂
关于Java继承的一个小问题。。。
随便小屋
java
今天看Java 编程思想的时候遇见一个问题,运行的结果和自己想想的完全不一样。先把代码贴出来!
//CanFight接口
interface Canfight {
void fight();
}
//ActionCharacter类
class ActionCharacter {
public void fight() {
System.out.pr
23种基本的设计模式
aijuans
设计模式
Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 Adapter:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Builder:将一个复杂对象的构建与它的表示分离,使得同
《周鸿祎自述:我的互联网方法论》读书笔记
aoyouzi
读书笔记
从用户的角度来看,能解决问题的产品才是好产品,能方便/快速地解决问题的产品,就是一流产品.
商业模式不是赚钱模式
一款产品免费获得海量用户后,它的边际成本趋于0,然后再通过广告或者增值服务的方式赚钱,实际上就是创造了新的价值链.
商业模式的基础是用户,木有用户,任何商业模式都是浮云.商业模式的核心是产品,本质是通过产品为用户创造价值.
商业模式还包括寻找需求
JavaScript动态改变样式访问技术
百合不是茶
JavaScript style属性 ClassName属性
一:style属性
格式:
HTML元素.style.样式属性="值";
创建菜单:在html标签中创建 或者 在head标签中用数组创建
<html>
<head>
<title>style改变样式</title>
</head>
&l
jQuery的deferred对象详解
bijian1013
jquery deferred对象
jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。
每个版本都会引入一些新功能,从jQuery 1.5.0版本开始引入的一个新功能----deferred对象。
&nb
淘宝开放平台TOP
Bill_chen
C++ c 物流 C#
淘宝网开放平台首页:http://open.taobao.com/
淘宝开放平台是淘宝TOP团队的产品,TOP即TaoBao Open Platform,
是淘宝合作伙伴开发、发布、交易其服务的平台。
支撑TOP的三条主线为:
1.开放数据和业务流程
* 以API数据形式开放商品、交易、物流等业务;
&
【大型网站架构一】大型网站架构概述
bit1129
网站架构
大型互联网特点
面对海量用户、海量数据
大型互联网架构的关键指标
高并发
高性能
高可用
高可扩展性
线性伸缩性
安全性
大型互联网技术要点
前端优化
CDN缓存
反向代理
KV缓存
消息系统
分布式存储
NoSQL数据库
搜索
监控
安全
想到的问题:
1.对于订单系统这种事务型系统,如
eclipse插件hibernate tools安装
白糖_
Hibernate
eclipse helios(3.6)版
1.启动eclipse 2.选择 Help > Install New Software...> 3.添加如下地址:
http://download.jboss.org/jbosstools/updates/stable/helios/ 4.选择性安装:hibernate tools在All Jboss tool
Jquery easyui Form表单提交注意事项
bozch
jquery easyui
jquery easyui对表单的提交进行了封装,提交的方式采用的是ajax的方式,在开发的时候应该注意的事项如下:
1、在定义form标签的时候,要将method属性设置成post或者get,特别是进行大字段的文本信息提交的时候,要将method设置成post方式提交,否则页面会抛出跨域访问等异常。所以这个要
Trie tree(字典树)的Java实现及其应用-统计以某字符串为前缀的单词的数量
bylijinnan
java实现
import java.util.LinkedList;
public class CaseInsensitiveTrie {
/**
字典树的Java实现。实现了插入、查询以及深度优先遍历。
Trie tree's java implementation.(Insert,Search,DFS)
Problem Description
Igna
html css 鼠标形状样式汇总
chenbowen00
html css
css鼠标手型cursor中hand与pointer
Example:CSS鼠标手型效果 <a href="#" style="cursor:hand">CSS鼠标手型效果</a><br/>
Example:CSS鼠标手型效果 <a href="#" style=&qu
[IT与投资]IT投资的几个原则
comsci
it
无论是想在电商,软件,硬件还是互联网领域投资,都需要大量资金,虽然各个国家政府在媒体上都给予大家承诺,既要让市场的流动性宽松,又要保持经济的高速增长....但是,事实上,整个市场和社会对于真正的资金投入是非常渴望的,也就是说,表面上看起来,市场很活跃,但是投入的资金并不是很充足的......
 
oracle with语句详解
daizj
oracle with with as
oracle with语句详解 转
在oracle中,select 查询语句,可以使用with,就是一个子查询,oracle 会把子查询的结果放到临时表中,可以反复使用
例子:注意,这是sql语句,不是pl/sql语句, 可以直接放到jdbc执行的
----------------------------------------------------------------
hbase的简单操作
deng520159
数据库 hbase
近期公司用hbase来存储日志,然后再来分析 ,把hbase开发经常要用的命令找了出来.
用ssh登陆安装hbase那台linux后
用hbase shell进行hbase命令控制台!
表的管理
1)查看有哪些表
hbase(main)> list
2)创建表
# 语法:create <table>, {NAME => <family&g
C语言scanf继续学习、算术运算符学习和逻辑运算符
dcj3sjt126com
c
/*
2013年3月11日20:37:32
地点:北京潘家园
功能:完成用户格式化输入多个值
目的:学习scanf函数的使用
*/
# include <stdio.h>
int main(void)
{
int i, j, k;
printf("please input three number:\n"); //提示用
2015越来越好
dcj3sjt126com
歌曲
越来越好
房子大了电话小了 感觉越来越好
假期多了收入高了 工作越来越好
商品精了价格活了 心情越来越好
天更蓝了水更清了 环境越来越好
活得有奔头人会步步高
想做到你要努力去做到
幸福的笑容天天挂眉梢 越来越好
婆媳和了家庭暖了 生活越来越好
孩子高了懂事多了 学习越来越好
朋友多了心相通了 大家越来越好
道路宽了心气顺了 日子越来越好
活的有精神人就不显
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Tim
feiteyizu
mysql
数据表中有记录的time字段(属性为timestamp)其值为:“0000-00-00 00:00:00”
程序使用select 语句从中取数据时出现以下异常:
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
java.sql.SQLException: Valu
Ehcache(07)——Ehcache对并发的支持
234390216
并发 ehcache 锁 ReadLock WriteLock
Ehcache对并发的支持
在高并发的情况下,使用Ehcache缓存时,由于并发的读与写,我们读的数据有可能是错误的,我们写的数据也有可能意外的被覆盖。所幸的是Ehcache为我们提供了针对于缓存元素Key的Read(读)、Write(写)锁。当一个线程获取了某一Key的Read锁之后,其它线程获取针对于同
mysql中blob,text字段的合成索引
jackyrong
mysql
在mysql中,原来有一个叫合成索引的,可以提高blob,text字段的效率性能,
但只能用在精确查询,核心是增加一个列,然后可以用md5进行散列,用散列值查找
则速度快
比如:
create table abc(id varchar(10),context blog,hash_value varchar(40));
insert into abc(1,rep
逻辑运算与移位运算
latty
位运算 逻辑运算
源码:正数的补码与原码相同例+7 源码:00000111 补码 :00000111 (用8位二进制表示一个数)
负数的补码:
符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 -7 源码: 10000111 ,其绝对值为00000111 取反加一:11111001 为-7补码
已知一个数的补码,求原码的操作分两种情况:
利用XSD 验证XML文件
newerdragon
java xml xsd
XSD文件 (XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 具体使用方法和定义请参看:
http://www.w3school.com.cn/schema/index.asp
java自jdk1.5以上新增了SchemaFactory类 可以实现对XSD验证的支持,使用起来也很方便。
以下代码可用在J
搭建 CentOS 6 服务器(12) - Samba
rensanning
centos
(1)安装
# yum -y install samba
Installed:
samba.i686 0:3.6.9-169.el6_5
# pdbedit -a rensn
new password:123456
retype new password:123456
……
(2)Home文件夹
# mkdir /etc
Learn Nodejs 01
toknowme
nodejs
(1)下载nodejs
https://nodejs.org/download/ 选择相应的版本进行下载 (2)安装nodejs 安装的方式比较多,请baidu下
我这边下载的是“node-v0.12.7-linux-x64.tar.gz”这个版本 (1)上传服务器 (2)解压 tar -zxvf node-v0.12.
jquery控制自动刷新的代码举例
xp9802
jquery
1、html内容部分 复制代码代码示例: <div id='log_reload'>
<select name="id_s" size="1">
<option value='2'>-2s-</option>
<option value='3'>-3s-</option