[Dr.Lib]跑起一个TiDB

TiDB 是新一代开源分布式 NewSQL 数据库,模型受 Google Spanner / F1 论文的启发, 实现了自动的水平伸缩,强一致性的分布式事务,基于 Raft 算法的多副本复制等重要 NewSQL 特性。 TiDB 结合了 RDBMS 和 NoSQL 的优点,部署简单,在线弹性扩容和异步表结构变更不影响业务, 真正的异地多活及自动故障恢复保障数据安全,同时兼容 MySQL 协议,使迁移使用成本降到极低。

PingCAP

TiDB 是 PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库,具备如下 NewSQL 核心特性:

  • SQL支持 (TiDB 是 MySQL 兼容的)
  • 水平线性弹性扩展
  • 分布式事务
  • 跨数据中心数据强一致性保证
  • 故障自恢复的高可用

一个完整的 TiDB 集群包括 PD,TiKV 以及 TiDB。

获取TiDB 官方 Binary

在 Archlinux 下可以使用AUR中的tidb-bin-nightly包。对于大多数发行版,官方的二进制都能完美的工作。

可以使用-V命令查询当前二进制的版本、编译时间。

部署TiDB

我的测试环境有三台机器,为方便起见做了如下配置

单节点部署

官方文档参考

启动TiDB需要按顺序启动 PD -> TiKV -> TiDB

在服务器上部署的时候,可以在nohup或者tmux中启动。笔者推荐使用基于tmux的byobu以方便管理与监控。

在以受限用户运行tikv的时候,可能会遇到这样的错误

此时可以选择以root用户启动或在配置文件中按实际情况指定RocksDB的max-open-files。

全部启动完成后,就可以使用mysql客户端连接了。TiDB默认的MySQL监听端口是0.0.0.0:4000

添加与卸载节点

官方文档参考

添加pd节点

在两台机器上分别启动pd节点并加入集群

添加tikv节点

可以使用pd-ctl查看当前集群状况

删除节点

可以用pd-ctl进行,或使用PD API

多节点集群模式部署

官方文档参考
在三个机器上分别启动pd实例

pd启动完成后,启动tikv实例

启动tidb

开始使用TiDB

你可以从 MySQL 无缝切换到 TiDB。如果您现有的业务已经基于 MySQL 开发,那么大多数情况下无需修改代码即可直接替换单机的 MySQL

 

更多信息可以参考官方文档

[Dr.Lib]各种.travis.yml

于是这两天撸mod和插件的.travis.yml的时候还是整出了不少东西的,记录一下什么的。

C++: 测试Clang3.8 & GCC 6 的 Coveralls 数据

这个是当年折腾数据结构时写的CI了,因为travis的Ubuntu环境目前还是古代的12.04 precise,所以很多东西要么走PPA要么直接下

这里我用的是两个镜像,分别测Clang与GCC。由于两个编译器的目标gconv版本不同所以还需要判断一下.

Java Minecraft Forge mod:repo无关的.travis.yml & 自动更新update.json

其实主要部分还是给了gradle来做= =

要做到.travis.yml和gradle里不带repo信息的话,善于利用环境变量吧。

有一个遗憾是 travis-ci/dpl issues#613 ,暂时没法自动设定是否为prerelease^

 

Java Spigot plugin:repo无关的.travis.yml & 自动更新maven repo

 gz

Via http://graphbuster.com/?p=486

在MathOverFlow上有这样一段搞笑的问答:

Daniel McLaury: \(\sqrt[3]{2}\) 是无理数的证明:若不然,则存在整数 \(p,q\) 使得 \(\sqrt[3]{2}=\frac{p}{q}\) ,两边三次方得到 \(p^3=q^3+q^3\) ,这与费马大定理相悖,即证. 注意到把3换成更大的正整数仍然可以这么证明.

12+ Comments

R.Shreevatsa:

可惜费马大定理不够强,不能证明 \(\sqrt{2}\) 是无理数.

Vincent.Yu

这不是高射炮,明明是原子弹轰蚊子.

XXX:

说到这个,在一次比荷卢(比利时,荷兰,卢森堡)数学竞赛中,为了证明56不是一个整数立方,一个学生写道:因为 \(56=4^3-2^3\) ,取费马大定理 \(n=3\) 的情况,即证.

材料来源及翻译:Fall_Ark