1.操作系统准备
安装centos 7.3以上操作系统,安装完以后关闭防火墙服务,禁用防火墙服务,确保这三台机器的root用户密码完全一致,确保SSH在默认的22端口,配置这些机器都开启ntp校时,并配置同一个授时源,关闭内存交换
yum install numactl
systemctl stop firewalld
systemctl disable firewalld
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p
分别编辑三台机器的/etc/hostname文件,修改里面的机器名称,我这里是分别改为了tidb01.localdomain/tidb02.localdomain/tidb03.localdomain
1.1 修改大页面设置为按需开启
sudo echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
执行cat /sys/kernel/mm/transparent_hugepage/enabled后显示
always [madvise] never 就对了,如果中括号在[always]上面显示就不对。
1.2 复制从tidb官网下载的tidb-community-server-v5.1.1-linux-amd64.tar到中控机器上面
tar -zxvf tidb-community-server-v5.1.1-linux-amd64.tar 进行解压缩
我这里解压缩以后的路径是/data/tidb-community-server-v5.1.1-linux-amd64
进入解压缩以后的目录,执行local_install.sh
cd /data/tidb-community-server-v5.1.1-linux-amd64
sh local_install.sh
执行完以上命令后执行 source /root/.bash_profile 让新加入$PATH的环境变量生效,或者重启一下机器也行。
1.3 配置自动部署配置文件
cd /data
vi topology.yaml
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/data/tidb-deploy"
data_dir: "/data/tidb-data"
server_configs: {}
pd_servers:
- host: 10.1.1.31
- host: 10.1.1.32
- host: 10.1.1.33
tidb_servers:
- host: 10.1.1.31
- host: 10.1.1.32
- host: 10.1.1.33
tikv_servers:
- host: 10.1.1.31
- host: 10.1.1.32
- host: 10.1.1.33
tiflash_servers:
- host: 10.1.1.32
data_dir: /data/tidb-data/tiflash-9000
deploy_dir: /data/tidb-deploy/tiflash-9000
monitoring_servers:
- host: 10.1.1.31
grafana_servers:
- host: 10.1.1.32
alertmanager_servers:
- host: 10.1.1.33
我这里是测试环境,一共就三台机器,ip是10.1.1.31-33,所有的东西都安装到这三台机器里面了。
配置文件写好以后,执行
tiup cluster check ./topology.yaml --apply --user root -p
输入这三台机器共用的root用户密码后
最后出现三个绿色的done done done就可以了,因为我的测试环境没有关SELinux,和其他机器的防火墙,所以上面出现了很多红色的信息,不过看起来tiup都已经自动修复好了。
把上一条命令里面的check改成deploy,去掉--apply开始进行真正的程序部署安装
tiup cluster deploy tidb v5.1.1 ./topology.yaml --user root -p
根据屏幕提示,输入
tiup cluster start tidb启动数据库
这样数据库就启动成功了
输入tiup cluster dispaly tidb 查看数据库运行情况如下图
开浏览器访问http://10.1.1.32:2379/dashboard,密码默认为空后可看到tidb dashboard
开navicat等数据库管理工具软件,连接集群的10.1.1.31 的4000端口,用户名root,密码空即可开始应用。
update
实践是检验真理的唯一标准,实际用postgresql 11.5和tidb 5.1.1做查询对比
with tmp as (
select * from xxx where create_time<='2015010100000000'
)
select orgid,count(0) from tmp group by orgid
这个查询够简单了吧,pg11 返回结果的时间是4.106秒,tidb 5.1.1返回结果的时间是194.545s,差了47.38倍
把SQL改成下面这样
select orgid,count(0) from xxx where create_time<='2015010100000000' group by orgid
tidb 返回数据的时间变成了0.997s,pg 是0.627s,tidb还是没能干的过pg。
再搞个带有窗口函数的查询试试,SQL语句如下:
WITH RECURSIVE T AS (
SELECT
a.*
FROM
org_info A
WHERE
A.org_status = 1
AND ( A.org_id = '1202--' ) UNION ALL
SELECT
dd.*
FROM
org_info dd
JOIN T cc ON dd.org_parent_id = cc.org_id
WHERE
dd.org_status = 1
)
SELECT
aa.org_id,
max(aa.org_name) as org_name,
sum(case biaozhi when '1' then 1 else 0 end ) as count_1,
sum(case biaozhi when '2' then 1 else 0 end ) as count_2
FROM
T aa inner join xxx b on aa.org_id=b.orgid
WHERE
aa.org_status = 1 and b.create_time<='20151201000000000' and b.actflag<'4' group by aa.org_id order by aa.org_id
上面的org_info表里面存的是组织机构信息,通过org_parent_id和上级org_id进行树状关联,实地测试tidb执行时间0.619s,PG11执行时间1.480s,tidb比pg11快2倍左右。