接着上面的操作继续:
启动主机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
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected] " //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多