MySQL增量订阅&消费组件Canal POC
POC的目的:
1、与MYSQL的对接方式,配置文档
2、订阅的延迟
3、订阅后宕机消息会不会丢失
4、能不能从指定的点开始重新订阅
5、高并发写入的时候,日志的顺序是否还能保持,不考虑消费的情况订阅是否会延迟
###写完word文档直接拷贝过来,格式一般般。。。
Canal介绍
官网地址:https://github.com/alibaba/canal
Mysql主备复制原理
从上层来看,复制分成三步:
- master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重做中继日志中的事件,将改变反映它自己的数据。
Canal工作原理
- 原理相对比较简单:
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
Canal安装部署
下载canal
直接下载,访问:https://github.com/alibaba/canal/releases,也可以在linux上直接联网下载:
服务端包:https://github.com/alibaba/canal/releases/download/v1.0.23/canal.deployer-1.0.23.tar.gz
客户端包:https://github.com/alibaba/canal/releases/download/v1.0.23/canal.example-1.0.23.tar.gz
解压canal
Mkdir /app/canal
Mkdir /app/canal-example
Tar zxvf canal.deployer-1.0.23.tar.gz -C /app/canal
Tar zxvf canal.example-1.0.23.tar.gz -C /app/canal-example
MySQL配置修改
a. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,建议配置binlog模式为row.
**针对阿里云RDS账号默认已经有binlog dump权限,不需要任何权限或者binlog设置,可以直接跳过这一步**
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
b. canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限.
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
针对已有的账户可直接通过grant
Canal配置修改
vi conf/example/instance.properties
#################################################
## mysql serverId
canal.instance.mysql.slaveId = 1234
# position info,需要改成自己的数据库信息
canal.instance.master.address = 172.16.0.158:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
# username/password,需要改成自己的数据库信息
canal.instance.dbUsername = canal
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =canal
canal.instance.connectionCharset = UTF-8
# table regex
canal.instance.filter.regex = .*\\..*
#################################################
说明:
- canal.instance.connectionCharset 代表数据库的编码方式对应到java中的编码类型,比如UTF-8,GBK , ISO-8859-1
Canal-Server启停
sh bin/startup.sh 启动
sh bin/stop.sh 停止
vi logs/canal/canal.log 查看canal日志
vi logs/example/example.log 查看instance的日志
Canal-Client启停
Cd /app/canal-example
sh bin/startup.sh 启动canal客户端
sh bin/stop.sh 停止canal客户端
tail -f /app/canal-example/logs/example/entry.log 查看canal客户端订阅的日志
尝试修改mysql数据库,如上述我们配置的库是canal,我们创建一个userinfo的用户表,可以在entry.log里面打印出userinfo的信息
Canal-Client开发
到此为止整个canal环境搭建完成。
不过canal-example是一个已经编译好的包,如果我们需要对源码进行修改,输出一些我们自己想要的信息,可以重新开发canal客户端。
客户端源码官方下载地址:https://github.com/alibaba/canal/wiki/ClientExample
- Simple客户端例子:SimpleCanalClientTest
- Cluster客户端例子:ClusterCanalClientTest
Canal-Server HA配置
更多配置策略请参考官方文档:https://github.com/alibaba/canal/wiki/AdminGuide
a. 修改canal.properties,加上zookeeper配置
canal.zkServers=172.16.7.122:2181
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
b. 创建example目录,并修改instance.properties
canal.instance.mysql.slaveId = 1234 ##另外一台机器改成1235,保证slaveId不重复即可
canal.instance.master.address = 172.16.0.158:3306
注意: 两台机器上的instance目录的名字需要保证完全一致,HA模式是依赖于instance name进行管理,同时必须都选择default-instance.xml配置
启动两台机器的canal,启动后,你可以查看logs/example/example.log,只会看到一台机器上出现了启动成功的日志。查看一下zookeeper中的节点信息,也可以知道当前工作的节点为172.16.0.157:11111
Canal pom版本需要1.0.22或以上,否则zkclient可能发生冲突
<dependency> |
Canal POC
消费位点
Canal client接收到日志之后要提交ack确认
connector.ack(batchId); // 提交确认 |
canal server在接收了客户端的ack后,就会记录客户端提交的最后位点,如果canal client没有提交位点,则下一次canal client启动的时候 会将最后记录的位点把日志重新推送过来,直到canal client提交ack确认为止。
订阅延迟
Canal-server单点模式下,订阅延迟平均22.65毫秒,HA模式下,订阅延迟平均24.16毫秒,具体数据请参考附录。
宕机消息是否丢失
停止正在工作的172.16.0.157的canal server,这时172.16.0.158会立马启动example instance,提供新的数据服务。与此同时,客户端也会随着canal server的切换,通过获取zookeeper中的最新地址,与新的canal server建立链接,继续消费数据,整个过程自动完成。
从指定的点开始订阅
mysql链接时的起始位置(instance.properties)
- canal.instance.master.journal.name + canal.instance.master.position : 精确指定一个binlog位点,进行启动
- canal.instance.master.timestamp : 指定一个时间戳,canal会自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动
- 不指定任何信息:默认从当前数据库的位点,进行启动。(show master status)
另外,可以从一个指定的点开始获取日志:
CanalEntry.getHeader().getLogfileOffset() |
高并发下的日志顺序
高并发下测试方案:
mysql的主键id是自增的,无论业务如何高并发,但插入到mysql的id肯定是自增且有序的,我们以此为基准来判断canal订阅到日志是否也是有序的。
首先在canal客户端获取id列的值,分批存入一个数组,然后对这个数组进行冒泡排序,如果在冒泡算法中出现一次冒泡,则说明canal订阅到的日志出现乱序。
实验结果:
本地开发机(i5-5200U CPU @2.2GHz 2.19GHz 8Gb内存),共开启1000个线程,每个线程插入1000条记录,mysql最大连接数设置1000,总共100万条记录,canal client没有输出乱序日志,并且canal client输入的分批次(canal自动分批)size总和为100万。另外,当插入数据库动作完成之后,canal-client输出也同时完成,说明订阅并没有出现较大的延迟,整个过程持续840s,1190tps/s。
数据库也共100万条记录:
附录
订阅延迟—canal server单点
canal-client收到日志时间 |
mysql插入时间 |
订阅延迟(ms) |
1489994604188.00 |
1489994604142.00 |
46.00 |
1489994605180.00 |
1489994605149.00 |
31.00 |
1489994606165.00 |
1489994606151.00 |
14.00 |
1489994607165.00 |
1489994607153.00 |
12.00 |
1489994608199.00 |
1489994608155.00 |
44.00 |
1489994609199.00 |
1489994609157.00 |
42.00 |
1489994610187.00 |
1489994610160.00 |
27.00 |
1489994611184.00 |
1489994611163.00 |
21.00 |
1489994612176.00 |
1489994612172.00 |
4.00 |
1489994613208.00 |
1489994613174.00 |
34.00 |
1489994614197.00 |
1489994614175.00 |
22.00 |
1489994615186.00 |
1489994615176.00 |
10.00 |
1489994616184.00 |
1489994616178.00 |
6.00 |
1489994617189.00 |
1489994617180.00 |
9.00 |
1489994618208.00 |
1489994618182.00 |
26.00 |
1489994619206.00 |
1489994619185.00 |
21.00 |
1489994620202.00 |
1489994620187.00 |
15.00 |
1489994621195.00 |
1489994621188.00 |
7.00 |
1489994622230.00 |
1489994622189.00 |
41.00 |
1489994623220.00 |
1489994623190.00 |
30.00 |
1489994624210.00 |
1489994624192.00 |
18.00 |
1489994625202.00 |
1489994625195.00 |
7.00 |
1489994626236.00 |
1489994626199.00 |
37.00 |
1489994627227.00 |
1489994627200.00 |
27.00 |
1489994628217.00 |
1489994628202.00 |
15.00 |
1489994629211.00 |
1489994629203.00 |
8.00 |
1489994630212.00 |
1489994630205.00 |
7.00 |
1489994631210.00 |
1489994631206.00 |
4.00 |
1489994632249.00 |
1489994632208.00 |
41.00 |
1489994633250.00 |
1489994633210.00 |
40.00 |
1489994634215.00 |
1489994634211.00 |
4.00 |
1489994635216.00 |
1489994635212.00 |
4.00 |
1489994636257.00 |
1489994636214.00 |
43.00 |
1489994637285.00 |
1489994637241.00 |
44.00 |
1489994638278.00 |
1489994638243.00 |
35.00 |
1489994639283.00 |
1489994639246.00 |
37.00 |
1489994640283.00 |
1489994640248.00 |
35.00 |
1489994641271.00 |
1489994641250.00 |
21.00 |
1489994642262.00 |
1489994642251.00 |
11.00 |
1489994643255.00 |
1489994643252.00 |
3.00 |
1489994644268.00 |
1489994644254.00 |
14.00 |
1489994645268.00 |
1489994645255.00 |
13.00 |
1489994646300.00 |
1489994646256.00 |
44.00 |
1489994647292.00 |
1489994647259.00 |
33.00 |
1489994648287.00 |
1489994648260.00 |
27.00 |
1489994649273.00 |
1489994649262.00 |
11.00 |
1489994650267.00 |
1489994650263.00 |
4.00 |
1489994651302.00 |
1489994651265.00 |
37.00 |
1489994652293.00 |
1489994652268.00 |
25.00 |
1489994653288.00 |
1489994653270.00 |
18.00 |
1489994654298.00 |
1489994654271.00 |
27.00 |
1489994655289.00 |
1489994655273.00 |
16.00 |
1489994656278.00 |
1489994656275.00 |
3.00 |
1489994657282.00 |
1489994657277.00 |
5.00 |
1489994658325.00 |
1489994658280.00 |
45.00 |
1489994659313.00 |
1489994659282.00 |
31.00 |
1489994660291.00 |
1489994660284.00 |
7.00 |
1489994661299.00 |
1489994661286.00 |
13.00 |
1489994662290.00 |
1489994662287.00 |
3.00 |
1489994663331.00 |
1489994663288.00 |
43.00 |
1489994664318.00 |
1489994664291.00 |
27.00 |
1489994665332.00 |
1489994665293.00 |
39.00 |
1489994666327.00 |
1489994666295.00 |
32.00 |
1489994667321.00 |
1489994667297.00 |
24.00 |
1489994668315.00 |
1489994668300.00 |
15.00 |
1489994669316.00 |
1489994669301.00 |
15.00 |
1489994670311.00 |
1489994670302.00 |
9.00 |
1489994671334.00 |
1489994671304.00 |
30.00 |
1489994672334.00 |
1489994672306.00 |
28.00 |
1489994673332.00 |
1489994673307.00 |
25.00 |
1489994674327.00 |
1489994674309.00 |
18.00 |
1489994675324.00 |
1489994675310.00 |
14.00 |
1489994676317.00 |
1489994676312.00 |
5.00 |
1489994677325.00 |
1489994677313.00 |
12.00 |
1489994678319.00 |
1489994678314.00 |
5.00 |
1489994679352.00 |
1489994679315.00 |
37.00 |
1489994680356.00 |
1489994680317.00 |
39.00 |
1489994681351.00 |
1489994681318.00 |
33.00 |
1489994682344.00 |
1489994682320.00 |
24.00 |
1489994683342.00 |
1489994683324.00 |
18.00 |
1489994684369.00 |
1489994684326.00 |
43.00 |
1489994685368.00 |
1489994685327.00 |
41.00 |
1489994686361.00 |
1489994686329.00 |
32.00 |
1489994687353.00 |
1489994687330.00 |
23.00 |
1489994688345.00 |
1489994688331.00 |
14.00 |
1489994689357.00 |
1489994689333.00 |
24.00 |
1489994690345.00 |
1489994690334.00 |
11.00 |
1489994691346.00 |
1489994691336.00 |
10.00 |
1489994692340.00 |
1489994692337.00 |
3.00 |
1489994693376.00 |
1489994693339.00 |
37.00 |
1489994694404.00 |
1489994694362.00 |
42.00 |
1489994695397.00 |
1489994695363.00 |
34.00 |
1489994696389.00 |
1489994696366.00 |
23.00 |
1489994697395.00 |
1489994697367.00 |
28.00 |
1489994698392.00 |
1489994698369.00 |
23.00 |
1489994699378.00 |
1489994699370.00 |
8.00 |
1489994700408.00 |
1489994700372.00 |
36.00 |
1489994701401.00 |
1489994701375.00 |
26.00 |
1489994702400.00 |
1489994702377.00 |
23.00 |
1489994703392.00 |
1489994703379.00 |
13.00 |
平均:22.65ms
订阅延迟—canal server集群(两个节点-主从)
canal-client收到日志时间 |
mysql插入时间 |
订阅延迟(s) |
1490007771482.00 |
1490007771476.00 |
6.00 |
1490007772508.00 |
1490007772478.00 |
30.00 |
1490007773524.00 |
1490007773488.00 |
36.00 |
1490007774494.00 |
1490007774489.00 |
5.00 |
1490007775512.00 |
1490007775491.00 |
21.00 |
1490007776527.00 |
1490007776493.00 |
34.00 |
1490007777552.00 |
1490007777500.00 |
52.00 |
1490007778539.00 |
1490007778502.00 |
37.00 |
1490007779522.00 |
1490007779504.00 |
18.00 |
1490007780528.00 |
1490007780506.00 |
22.00 |
1490007781538.00 |
1490007781521.00 |
17.00 |
1490007782552.00 |
1490007782523.00 |
29.00 |
1490007783531.00 |
1490007783525.00 |
6.00 |
1490007784551.00 |
1490007784527.00 |
24.00 |
1490007785562.00 |
1490007785528.00 |
34.00 |
1490007786567.00 |
1490007786530.00 |
37.00 |
1490007787539.00 |
1490007787531.00 |
8.00 |
1490007788558.00 |
1490007788532.00 |
26.00 |
1490007789576.00 |
1490007789534.00 |
42.00 |
1490007790576.00 |
1490007790536.00 |
40.00 |
1490007791540.00 |
1490007791537.00 |
3.00 |
1490007792584.00 |
1490007792539.00 |
45.00 |
1490007793555.00 |
1490007793541.00 |
14.00 |
1490007794565.00 |
1490007794543.00 |
22.00 |
1490007795573.00 |
1490007795544.00 |
29.00 |
1490007796590.00 |
1490007796545.00 |
45.00 |
1490007797562.00 |
1490007797547.00 |
15.00 |
1490007798565.00 |
1490007798548.00 |
17.00 |
1490007799572.00 |
1490007799551.00 |
21.00 |
1490007800568.00 |
1490007800553.00 |
15.00 |
1490007801580.00 |
1490007801554.00 |
26.00 |
1490007802588.00 |
1490007802555.00 |
33.00 |
1490007803595.00 |
1490007803557.00 |
38.00 |
1490007804577.00 |
1490007804558.00 |
19.00 |
1490007805583.00 |
1490007805559.00 |
24.00 |
1490007806596.00 |
1490007806560.00 |
36.00 |
1490007807566.00 |
1490007807562.00 |
4.00 |
1490007808581.00 |
1490007808564.00 |
17.00 |
1490007809596.00 |
1490007809567.00 |
29.00 |
1490007810607.00 |
1490007810570.00 |
37.00 |
1490007811578.00 |
1490007811571.00 |
7.00 |
1490007812591.00 |
1490007812572.00 |
19.00 |
1490007813610.00 |
1490007813586.00 |
24.00 |
1490007814629.00 |
1490007814588.00 |
41.00 |
1490007815601.00 |
1490007815590.00 |
11.00 |
1490007816614.00 |
1490007816591.00 |
23.00 |
1490007817622.00 |
1490007817592.00 |
30.00 |
1490007818600.00 |
1490007818594.00 |
6.00 |
1490007819611.00 |
1490007819596.00 |
15.00 |
1490007820612.00 |
1490007820598.00 |
14.00 |
1490007821623.00 |
1490007821600.00 |
23.00 |
1490007822632.00 |
1490007822602.00 |
30.00 |
1490007823641.00 |
1490007823618.00 |
23.00 |
1490007824641.00 |
1490007824619.00 |
22.00 |
1490007825658.00 |
1490007825621.00 |
37.00 |
1490007826664.00 |
1490007826622.00 |
42.00 |
1490007827632.00 |
1490007827623.00 |
9.00 |
1490007828646.00 |
1490007828625.00 |
21.00 |
1490007829633.00 |
1490007829627.00 |
6.00 |
1490007830650.00 |
1490007830628.00 |
22.00 |
1490007831660.00 |
1490007831630.00 |
30.00 |
1490007832672.00 |
1490007832631.00 |
41.00 |
1490007833645.00 |
1490007833633.00 |
12.00 |
1490007834656.00 |
1490007834635.00 |
21.00 |
1490007835668.00 |
1490007835637.00 |
31.00 |
1490007836661.00 |
1490007836639.00 |
22.00 |
1490007837668.00 |
1490007837640.00 |
28.00 |
1490007838678.00 |
1490007838642.00 |
36.00 |
1490007839689.00 |
1490007839644.00 |
45.00 |
1490007840665.00 |
1490007840646.00 |
19.00 |
1490007841666.00 |
1490007841647.00 |
19.00 |
1490007842677.00 |
1490007842649.00 |
28.00 |
1490007843688.00 |
1490007843662.00 |
26.00 |
1490007844699.00 |
1490007844667.00 |
32.00 |
1490007845703.00 |
1490007845669.00 |
34.00 |
1490007846696.00 |
1490007846672.00 |
24.00 |
1490007847696.00 |
1490007847674.00 |
22.00 |
1490007848704.00 |
1490007848678.00 |
26.00 |
1490007849715.00 |
1490007849680.00 |
35.00 |
1490007850698.00 |
1490007850681.00 |
17.00 |
1490007851703.00 |
1490007851682.00 |
21.00 |
1490007852714.00 |
1490007852684.00 |
30.00 |
1490007853722.00 |
1490007853685.00 |
37.00 |
1490007854692.00 |
1490007854687.00 |
5.00 |
1490007855733.00 |
1490007855689.00 |
44.00 |
1490007856702.00 |
1490007856690.00 |
12.00 |
1490007857702.00 |
1490007857692.00 |
10.00 |
1490007858726.00 |
1490007858693.00 |
33.00 |
1490007859699.00 |
1490007859694.00 |
5.00 |
1490007860720.00 |
1490007860695.00 |
25.00 |
1490007861720.00 |
1490007861697.00 |
23.00 |
1490007862728.00 |
1490007862698.00 |
30.00 |
1490007863705.00 |
1490007863700.00 |
5.00 |
1490007864706.00 |
1490007864701.00 |
5.00 |
平均:24.16ms
MySQL增量订阅&消费组件Canal POC的更多相关文章
- CanalSharp-mysql数据库binlog的增量订阅&消费组件Canal的.NET客户端
一.前言 CanalSharp是阿里巴巴开源项目mysql数据库binlog的增量订阅&消费组件 Canal 的.NET客户端,关于什么是 Canal?又能做什么?我会在后文为大家一一介绍.C ...
- canal —— 阿里巴巴mysql数据库binlog的增量订阅&消费组件
阿里巴巴mysql数据库binlog的增量订阅&消费组件canal ,转载自 https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立,群号 ...
- alibaba/canal 阿里巴巴 mysql 数据库 binlog 增量订阅&消费组件
基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引) search build 业务cache刷新 价格变化等重要业务消息 项目介绍 名称:ca ...
- Canal - 数据同步 - 阿里巴巴 MySQL binlog 增量订阅&消费组件
背景 早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求 ,主要是基于trigger的方式获取增量变更.从 2010 年开始,公司开始逐步尝试数据库日志解析,获取增量变 ...
- 阿里数据迁移DTS【otter】和阿里巴巴mysql数据库binlog的增量订阅&消费组件 【canal】
[链接]alibaba/otterhttps://github.com/alibaba/otter https://github.com/alibaba/canal
- 阿里巴巴开源项目: canal 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增 量变更,不过从2010年开始,阿里系公司开始逐步的 ...
- 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...
- 基于Spark Streaming + Canal + Kafka对Mysql增量数据实时进行监测分析
Spark Streaming可以用于实时流项目的开发,实时流项目的数据源除了可以来源于日志.文件.网络端口等,常常也有这种需求,那就是实时分析处理MySQL中的增量数据.面对这种需求当然我们可以通过 ...
- Canal:同步mysql增量数据工具,一篇详解核心知识点
老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...
随机推荐
- Git环境配置+VSCode中文乱码问题
异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html 1.VSCode中文乱码问题 (files.autoguessEncoding= ...
- 基于微软企业库的AOP组件(含源码)
软件开发,离不开对日志的操作.日志可以帮助我们查找和检测问题,比较传统的日志是在方法执行前或后,手动调用日志代码保存.但自从AOP出现后,我们就可以避免这种繁琐但又必须要实现的方式.本文是在微软企业库 ...
- 浏览器输入URL到响应页面的全过程
B/S网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,HTTP协议采用无状态的短链接的通信方式,通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通 ...
- Linux CentOs集群LVS+Keepalived负载均衡的实现
准备工作 环境:Win10下Centos6.4虚拟机. 负载均衡:两台(一主一备) LVS + Keepalived. HTTP服务器:3台. 给每台服务器配置IP 1.VIP(virtual ip ...
- UVALive - 4329 Ping pong 树状数组
这题不是一眼题,值得做. 思路: 假设第个选手作为裁判,定义表示在裁判左边的中的能力值小于他的人数,表示裁判右边的中的能力值小于他的人数,那么可以组织场比赛. 那么现在考虑如何求得和数组.根据的定义知 ...
- 长整形的使用及cin加速
_int64 和 long long 那么对ACMer来说,最为关心的就是在各个OJ上交题应分别使用哪种方式了.其实方式只有有限的几种: 如果服务器是linux系统,那么定义用long long,IO ...
- MySQL SQL语句分析查询优化
如何获取有性能问题的SQL 1.通过用户反馈获取存在性能问题的SQL 2.通过慢查询日志获取性能问题的SQL 3.实时获取存在性能问题的SQL 使用慢查询日志获取有性能问题的SQL 首先介绍下慢查询相 ...
- eclipse导入/编译hadoop源代码
1. 确保安装好JDK和eclipse 详细教程见: http://blog.csdn.net/kangdakangdaa/article/details/11364985 2. 安装 Subclip ...
- [微信JSSDK] 解决SDK注入权限验证 安卓正常,IOS出现config fail
实测有效 解决微信游览器和企业微信游览器JSSDK注入权限验证 安卓正常,IOS出现config fail 一开始我们想到的是可能微信这边的Bug,但细想一下应该不是.因为可能涉及到了IOS的底层原理 ...
- linux Nagios监控
监控目标 监控目标主机分为四个部分 硬件资源 操作系统 数据库 应用软件 监控目的: 进行服务器性能调整前,知道调整什么,系统瓶颈在什么地方 被一部分必须同时监控,内容包括吞吐量,反应时间,使用率等 ...