41
DBOne 分布式数据库系统 运维手册(V3.3)

运维手册 - app. · PDF fileDBOne数据库系统运维手册 ©引跑科技版权所有 3 / 41 1 概述

  • Upload
    vukiet

  • View
    345

  • Download
    43

Embed Size (px)

Citation preview

DBOne分布式数据库系统

运维手册(V3.3)

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 1 / 41

目录

1 概述 .......................................................................................................................................................................... 3

2 DBOne 知识点 ........................................................................................................................................................... 3

3 DBOne 工具集 ........................................................................................................................................................... 4

4 项目实施步骤 .......................................................................................................................................................... 4

5 软件版本 .................................................................................................................................................................. 5

6 DBOne 规范及约定 ................................................................................................................................................... 5

7 系统部署架构图 ...................................................................................................................................................... 7

8 硬件 .......................................................................................................................................................................... 8

8.1 硬件配置 ....................................................................................................................................................... 8

8.2 服务器数量规划 ........................................................................................................................................... 9

9 操作系统 ................................................................................................................................................................10

10 DBOne 配置 ..........................................................................................................................................................12

10.1 dbone-global.properties ............................................................................................................................13

10.2 dbone-global.xml .......................................................................................................................................13

10.3 AcrossJoinConfig.properties ......................................................................................................................19

10.4 AppNode.xml ............................................................................................................................................19

10.5 IDB.CONF .................................................................................................................................................... 20

10.6 实例 IO 分配 .............................................................................................................................................21

11 数据导入和迁移 ..................................................................................................................................................22

12 系统监控..............................................................................................................................................................23

13 调优方法(最重要) ...............................................................................................................................................24

13.1 路由调整 ..................................................................................................................................................24

13.2 索引 .......................................................................................................................................................... 25

13.3 实例数调整 .............................................................................................................................................. 26

13.4 数据插入 .................................................................................................................................................. 26

13.5 执行计划 .................................................................................................................................................. 26

13.6 IDB 调优 ..................................................................................................................................................... 27

13.7 连接数 ...................................................................................................................................................... 27

14 热分片 ................................................................................................................................... 错误!未定义书签。

15 TPCC 测试 ...........................................................................................................................................................28

16 高性能 .................................................................................................................................................................29

16.1 测试原型 ..................................................................................................................................................29

16.2 测试场景 ..................................................................................................................................................31

17 No SQL ................................................................................................................................................................33

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 2 / 41

17.1 XML 数据类型 ...........................................................................................................................................33

17.2 JSON 数据类型 ..........................................................................................................................................33

18 GTM .....................................................................................................................................................................34

19 GIS ........................................................................................................................................................................35

20 ODBC ...................................................................................................................................................................35

21 应用集成.............................................................................................................................................................. 37

22 附录 ...................................................................................................................................................................... 37

22.1 IDB 节点操作 ............................................................................................................................................. 37

22.2 TPC-C 测试参考 .........................................................................................................................................39

22.3 高性能测试参考.......................................................................................................................................39

22.4 无法获得 uuid ..........................................................................................................................................39

22.5 修改 IDB 用户密码 ...................................................................................................................................40

22.6 查看 DBOne 版本 .....................................................................................................................................40

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 3 / 41

1 概述

DBOne 是一个弹性的、高性能、高可靠性,支持多应用、多租户、事务处理的分布式数据库系统,支

持热迁移、热备份、热恢复,提供标准的 JDBC ,ODBC, JSON, OGC 等接口 , 或查询服务器(Query

Server)模式,支持所有主流应用开发语言如 Java, C#, C, C++, Python, Perl 等。 DBOne 主要包括分布

式数据库引擎和分布式数据存储节点。分布式数据库引擎是系统核心,其负责 SQL 解析、优化、路由、

分发、合并等操作,同时将底层的众多存储节点管理起来;分布式存储节点使用引跑自行设计和完全自主

可控的 IDB(Intple DB)数据库产品。用户可灵活构建不同规模的数据库集群,通过将业务数据分片到不

同的数据库存储节点中,极大降低了普通数据库面对海量数据时的压力;通过将用户的 SQL 请求分发到

各节点上执行,充分利用各节点的计算资源,从而能够使 PC 服务器集群达到并超越小型机、中大型机的

性能。本文档以 5.4 版本为主进行说明。

2 DBOne 知识点

序号 知识点 说明

1 硬件基础 x86服务器(另外包括 Power、飞腾、龙芯等平台)配置,RAID配置,交换

机及网络配置

2 linux 操作系统安装,基本命令,内核调优

3 dbone dbone 部署架构、参数配置

4 中间件 Haproxy、nigix(负载均衡)

5 idb idb 基本操作、性能调优、日志

6 java 基于 jdbc驱动调用 Query Server 的开发测试代码

7 性能测试工具 loadrunner,jmeter等

8 集群性能检测 检测集群各个服务所在服务器的性能指标,如 LoadRunner 和 nmon。

9 SQL分析和改写 标准 SQL及 PLSQL分析

10 数据量估算 数据存储、索引、归档日志等大小

11 通用数据库 Oracle、SQLServer、DB2

12 客户沟通能力 与客户或配合代理商的现场沟通能力

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 4 / 41

3 DBOne 工具集

系统实施常用工具集

分类 名称 版本 用途

telnet 和 ssh

客户端 SecureCRT/XShell4 最新 远程登录 linux服务器(多个)

文件传输 wincp 最新 windows和 linux的文件传输

各类 ftp工具 最新 用于文件传输

数据导入 Oracle SQL Developer 12 用于 Oracle 数据导出

DBOne ETL 5.0 用数据迁移导入导出

虚拟机环境

vmware workstation 8.0及以上 模拟环境,可以进行单机调试,如

DBOne。

zabbix(mysql) 2.0.11及以上

图形化监控服务器状态,可以全面获

悉测试过程中的性能瓶颈,部署在虚

拟机上

本机软件

Oracle 10G 及以上 若客户为 Oracle,可进行分析

Oracle SQL Developer 最新版本 Oracle开发管理工具

sqlserver(含企业管理

器) 2008及以上 若客户为 SQLServer,可进行分析

Teamviewer 9版本以上 采用非商业用途,设置个人密码

QQ 最新版本 可以沟通及远程协助

navicat(for pg) 最新版本 管理 DBOne IDB、Oracle等

openvpn 2.2.0及以上 VPN接入公司,便于最新版本获取

loadrunner 10及以上 性能测试工具

eclipse(JDK1.6/1.7) 3.4及以上 测试时需要

其它开发工具 以客户情况为准 visual studio 等

安装包 软件安装包 以客户情况为准 产品软件安装包,如 DBOne

Zabbix 或 nmon 2.0.11 被监控服务器安装的代理软件

文档 实施相关文档 以客户情况为准 一般包括部署、开发、使用、测试、

运维

记录工具 mybase/notepad++/Ultr

aEdit 最新版本 记录现场操作日志,便于日后整理

4 项目实施步骤

序号 阶段 相关文档 负责人 备注

1 需求分析 产品调查问卷 方案组 由商务/方案/系统协助组成

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 5 / 41

2 方案制定 测试方案 方案组 由商务/方案/系统协助组成

3 实施计划及内容 测试计划及用例 系统部 明确时间,测试场景,测试目标,

必须测试准线性性能变化趋势

4 项目实施 测试记录 系统部 记录测试环境及测试结果

5 测试结束 测试报告 方案组 由商务/方案/系统协助组成

其中需求分析阶段是最重要的,也就是测试的要达到目的,解决客户什么问题,此部分必须明确,依次

如下:

A.表结构,数据量,数据分布

B.测试数据怎么产生

C.测试 SQL

D.性能测试需要达到的目标

上述文档都有模板,务必保持一致,测试 license 在\\10.0.0.4\SystemResource\测试许可目录下。

5 软件版本

序号 版本 版本说明 备注

1 5.3 继承了之前所有版本的优点 JDK1.7,小版本要 40 以上

2 5.4 在热分片、备份恢复、冗余模式上有很大调整。 JDK1.7,小版本要 40 以上

根据用户测试要求选择版本,一旦 5.4正式发布后以 DBOne5.4版本为主。

6 DBOne 规范及约定

序号 项目名称 建议值 备注

1 实例和 shard 关系 每实例一个 Shard DBOne 支持多实例或多 Shard 两种模式(一

个实例),当前推荐每个实例一个 Shard 模

式。

2 单台数据节点服务器实

例数

2-4 个,(标准硬件配置,参

见后续章节,此数量包括

冗余数量)

可以充分利用多核性能,Join 等部分测试,

在测试阶段可以增加实例数量,以达到性能

测试要求,一般一个数据节点的 Shard 数 6

个为宜,也可以根据机器配置及测试要求情

况再做适当调整

3 单 DBOne 集群最多可以

多少数据节点

理论上不受限制,通常不

超过 100 个数据节点。

主要涉及网络、引擎连接池等因素限制,特

别是引擎连接池。

4 单 DBOne 集群最多可以

多少引擎节点

理论上不受限制,通常不

超过 100 个引擎节点。

主要涉及操作系统内核、IDB 的最大连接数、

每引擎连接池大小及 Shard 数限制,此引擎

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 6 / 41

包括 Engine 和 Query Server。

5 单 DBOne 集群最多可以

多少实例数

理论上不受限制,通常不

超过 100 个实例数。

主要涉及 CPU 核数、网络、引擎连接池因素

限制,特别是引擎连接池。

6 单 Shard 下单表记录数

单表记录数建议 5000 万

左右, 建议不要超过 1

个亿。

如果是 OLAP 应用模式,单表记录数可以适

当增大,Join 查询建议单表记录数小于 2000

万,此数值后续随着 IDB 性能提升而增大

7 虚拟 Shard 数的配置

(virtualShardNumber)

如果 Shard 的数量不是 2

的指数倍,为了确保数据

分布均匀,需要配置虚拟

Shard 数,取值满足以下条

件:A.>1000,B.兼顾扩展,如

6 ->9->12 台,取最大公约

数的 2 的指数倍。

创建应用的时候需要根据应用的 shard 规模

进行计算实际需要的大小。该配置项默认值

在 dbone-global.xml

8 基础环境设置 hostname、时钟同步、操

作系统内核参数、环境变

参见部署文档

9 软件部署 部署软件名称全部小写,

名称包括版本号,所有软

件安装包统一上传到管理

服务器的/opt,IDB 数据节

点安装目录

便于其他运维人快速熟悉环境,IDB 数据节

点安装目录配置见下面章节说明。

11 数据库对象命名规范 如无大小写要求,数据库

涉及的对象(表、字段)必须

小写

一旦大写,后续实施工作量将大大增加,至

少是小写的 2-3 倍。

12 服务器网卡 默认配置第一块,网络没

要求情况下,地址必须

static

如 DHCP,一旦重启,DBOne 恢复会有很大

工作量

13 IDB 备份用户 建议该用户于数据库用户

密码一致

此处为操作系统用户,系统部署时默认创建

14 集群、监控等名称 同一网络内必须要唯一,

因此名称后缀增加信息,

信息一般采用用户名称、

项目名称、元数据 IP 地址

其中之一。

clusterName:channal_zhaohang

15 维护第一件事情 生产环境下,必须先做备

确保可以数据正确且完整。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 7 / 41

7 系统部署架构图

DBOne部署时,数据节点有两种方式,包括异步冗余和同步冗余,建议异步冗余模式,逻辑架构如图2

所示:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 8 / 41

检查 Engine 和 queryserver 的配置文件:dbone-global.xml,有如下配置表示 DBOne 为异步

冗余模式,若无表示为同步冗余模式。

vi dbone-install/dbone/engine/config/dbone-global.xml

<RedundanceMode>AsyncRedundance</RedundanceMode>

8 硬件

8.1 硬件配置

DBOne硬件包括服务器及网络设备,具体配置如下:

序号 服务器类型 配置信息 备注

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 9 / 41

1 引擎节点 CPU 2 路 4 核主频 2.0GHz 以上,内存 48G

以上,磁盘 SAS 900Gx3 RAID5 或 SAS

900X2RAID1 以上

以具体测试要求为准,CUP 主频

及核数尽量高和多

2 数据节点 CPU 2 路 4 核主频 2.0GHz 以上,内存 32G

以上,按用途进行区分

读为主的应用(OLAP),磁盘 SATA

2Tx3 以上 ,CUP 主频及核数尽量

高和多,内存尽量大,以减少磁

盘 IO,具体容量和 RAID 模式以实

际应用要求进行配置;

读写为主的应用(OLTP),磁盘 SAS

900Gx3 以上,CUP 主频及核数尽

量高和多,内存尽量大,以减少

磁盘 IO,具体容量和 RAID 模式以

实际应用要求进行配置,节点服

务器的配置最好要一样,保证各

节点处理能力相当。

3 网络设备 千兆或万兆交换机 一般交换机容量为 48G,如果有

大结果集或大批量数据插入,此

配置需要较大,建议 128G。如果

集群规模较大,且集群上联端口

网络吞吐超过千兆,建议采用万

存储容量测算包括数据库数据,索引数据,归档日志(一般归档日志为数据的 1-2 倍左右),说

明如下:

1.数据库数据容量为所有表的容量总和,主要是大表,可通过控制台查看,也可通过命令查

看表数据占用空间(见附录)。

2.索引数据容量需根据索引的数量及索引的大小来判断。在查询条件组合较多的场景下,

索引大小会超过数据库数据大小。

3.归档日志容量需根据场景进行判断,主要是对数据的更新操作是否频繁(如插入,修改),

一般情况下归档日志为数据容量的 1-2 倍左右。

RAID 配置需根据数据安全级别及容量要求进行配置,主要分 RAID1,RAID5,RAID10,可以多

个组合。

测试网络带宽的方法为:tar 一个 1G 以上的文件,进行 SCP 测试,一般情况下超过 13MB/s

说明是千兆网络。

8.2 服务器数量规划

根据不同的测试要求,各服务器配置数量也是不同的。

序号 测试类型 配置信息 备注

1 功能测试(基本

功能)

1 个引擎+2 个数据节点,配置无要求 简单功能演示

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 10 / 41

2 功能测试(基本+

包括扩展功能)

1个负载均衡+2个引擎+2个数据节点以上 热分片、高可用

3 性能测试(OLAP) 1个负载均衡+2个引擎以上+3个数据节点

以上,内存大小》数据大小,CPU 核数和

主频要相对好

高并发测试通常情况下采用多引

擎多节点模式,多引擎做成负载

均衡。一般简单查询并发数超过

500 就需要多个引擎,复杂查询

每个引擎 200,具体需要查看负

载情况进行灵活调整。

4 性能测试(OLTP) 1个负载均衡+2个引擎以上+3个数据节点

以上,内存越大越好,CPU 核数和主频要

相对好

高并发测试通常情况下采用多引

擎多节点模式,多引擎做成负载

均衡。一般并发数超过 200 就需

要多个引擎,具体需要查看负载

情况进行灵活调整。。

如果服务器紧张,有时引擎和节点适当可以共用,但前提是相互影响较小。

9 操作系统

操作系统默认 centos6.3 及以上版本,除合作伙伴之外,如中标麒麟。整个安装过程默认

为主,以下几项进行调整:

1.语言选择简体中文

DBOne的日志信息涉及中文需要查看。

2.目录容量配置

/swap 默认即可

/boot 100M

/ 剩余空间

3.存储挂载(多个 RAID 或磁盘单独挂载)

不超过2T,挂载步骤如下:

A.fdisk - l|more (查看需挂载的磁盘标识,如 sdb/、sdc/...)

B.fdisk /dev/sdb(进入 fdisk模式)

输入n进行分区,选择分区类型(1个主分区),设置柱面(默认 ),输入w,写入分区表。

C.mkfs.ext4 /dev/sdb

D.mkdir /data(创建挂载点)

E.vi /etc/fstab (配置文件系统列表,最后一行增加 /dev/sdb /data ext4

defaults 0 0)

F.mount -a(挂载磁盘)

超过2T,采用 GPT 模式,具体操作步骤如下:

A.fdisk - l|more (查看需挂载的磁盘标识,如 sdb/、sdc/...)

B.parted /dev/sdb (用 part命令对 3T硬盘进行分区处理)

C.mklabel gpt (用 gpt格式)

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 11 / 41

D.unit TB (设置单位为 TB)

E.mkpart primary 0 3 (设置为一个主分区,大小为 3TB,开始是 0,结束是 3)

F.print (显示设置的分区大小)

G.quit (退出 parted程序)

H.mkfs.ext4 /dev/sdb (用 parted将分区做好后,进行格式化操作)

I.mkdir /data(创建挂载点)

J.vi /etc/fstab (配置文件系统列表,最后一行增加 /dev/sdb /data ext4

defaults 0 0)

K.mount -a(挂载磁盘)

4.内核参数调整

默认 DBOne 安装程序会自动配置完成。

1)检查操作系统内核参数/etc/sysctl.conf,增加或修改以下参数

kernel.sem=500 128000 500 256

vm.overcommit_memory = 2

vm.overcommit_ratio = 70

修改后,在root用户下运行 sysctl -p 命令,使之生效

2)单进程最大文件数 /etc/security/limits.conf ,增加或修改以下参数

* soft nofile 65535

* hard nofile 65535

3)单用户最大进程数/etc/security/limits.d/90-nproc.conf,增加或修改以下参数

* soft nproc 65535

4)检查每台机器的 ssh 设置

/etc/ssh/sshd_config 中#MaxStartups,将其改为 MaxStartups 1000

/etc/ssh/sshd_config 中#LoginGraceTime ,将其改为 LoginGraceTime 0,其中 0 表示不限制

连接时间

/etc/selinux/config,将 selinux 设置为 SELINUX=disabled

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 12 / 41

修改参数需要重启操作系统后生效;

5.防火墙设置

测试环境建议将 iptables 关闭,方法如下:

chkconfig --level 345 iptables off

生产环境建议配置 iptables,增加 DBOne 访问规则,规则如下:

vi /etc/syscon/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080

-j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2800

0 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2900

0 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9001

-j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000

0:30100 -j ACCEPT

service iptables restart

其中 30000:30100 端口以实际服务器数量为准。

6.时钟同步

确保集群中的时钟都处于同一时间,建议与时钟服务器保持同步,具体方法参见部署文档。

10 DBOne 配置

DBOne 涉 及 的 配 置 文 件 有 : dbone-global.properties , dbone-global.xml ,

AcrossJoinConfig.properties,AppNode.xml。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 13 / 41

10.1 dbone-global.properties

dbone-global.properties 为元数据连接配置文件,说明如下:

#全局metadata的url

metadata.url=jdbc:dbone://localhost/dbs_metadata

#全局metadata的用户名

metadata.username=root

#全局metadata的密码

metadata.password=%EF%BF%95%EF%BE%86%EF%BF%88%1647%EF%BE%8Bh

#全局metadata所在机器的ssh端口号,要求启动ssh服务

metadata.sshPort=22

#全局metadata的AppNode端口

metadata.appNodePort=29000

#全局metadata所使用数据库Idb的端口

metadata.idbPort=30000

#metadata所在机器的操作系统用户名(用于备份)

metadata.backupUsername=idb

#metadata所在机器的操作系统用户密码(用于备份)

metadata.backupPassword=password

#jdbc driver,固定为com.intple.dbone.Driver,请不要更改

metadata.driverClassName=com.intple.dbone.Driver

#以下为GIS的配置,若不支持GIS时,可不配置

#批量导入GIS数据的操作系统用户和密码

gis.import.executeUserName=idb

gis.import.executePassword=%EF%BF%95%EF%BE%86%EF%BF%88%1647%EF%BE%8Bh

#导出的默认线程数

exportThreadCnt=20

#metadata所在机器的备份路径(用于备份)

metadata.backupPath=/home/idb/backup

#是否开启自动升级metadata数据库结构

metadata.autoupgrade=false

注意:密码都是进行加密设置的

10.2 dbone-global.xml

dbone-global.xml 为 DBOne 引擎和 Query Server 的配置文件,重点关注集群名字要唯一,连接池大

小(初始化时以配置文件为准,通过管理控制台修改后以元数据配置为准),引擎地址,冗余份数。配置

文件说明如下:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 14 / 41

<?xml version="1.0" encoding="UTF-8"?>

<root>

<!-- 集群配置 -->

<!-- 广播地址: 集群内各机器的配置是相同的,否则不能加入集群, 不同集群是不

能相同 -->

<dbone.udp.mcast_addr>239.9.9.232</dbone.udp.mcast_addr>

<!-- 广播端口号:集群内各机器是相同的 -->

<dbone.udp.mcast_port>45588</dbone.udp.mcast_port>

<!-- 绑定地址:本地IP(当前机器的IP) -->

<dbone.udp.bind_addr>10.0.0.124</dbone.udp.bind_addr>

<!-- 绑定端口号:要保证端口不会和其他的应用相冲突 -->

<dbone.udp.bind_port>0</dbone.udp.bind_port>

<!-- 如果在集群环境下,必须配置成不同的数,允许的范围为0-128 -->

<nodeId>35</nodeId>

<!-- 集群配置结束 -->

<!-- metadata通讯频道名,用于集群间通知metadata变更,集群环境下必须配置 相

同,否则消息无法同步,同一局域网不同的引擎必须设置成不同,否则消息同步会错乱-->

<clusterName>cluster</clusterName>

<!--底层idb节点的运行模式: one_inst_multi_shard 表示为原来的老模式,一个

instance多个shard,兼容老版本;one_inst_one_shard一个instance一个shard 为今

后的主要模式-->

<InstanceMode>one_inst_one_shard</InstanceMode>

<!-- 冗余模式 :AsyncRedundance 表示异步冗余模式 ,如果不配置此配置项,则

默认是原来的模式-->

<RedundanceMode>AsyncRedundance</RedundanceMode>

<!-- 只在RedundanceMode为异步时有效,true为读写分离,冗余节点参与读,false

则读写均只发往主节点-->

<readwriteSeparate>fasle</readwriteSeparate>

<!-- 冗余模式下检测到故障是否自动重建,这个开关配置的是是否需要系统对故障

shard进行自动重建,在健康检查发现了主节点故障后主从切换一直会做的-->

<AutoRebuild>false</AutoRebuild>

<!-- 热分片输出目录(linux目录,默认为/tmp,其他目录需设置权限) -->

<liveShardOutputDir>/tmp</liveShardOutputDir>

<!-- DBOneID实现模式选择:0,3: 0不启用dboneid,3,启用基于rowid的

varchar22的dboneid -->

<dboneIdMode>0</dboneIdMode>

<!-- 是否采用PLPgSQL语法创建存储过程,true为采用,false为不采用,不采用则

为兼容oracle的plsql语法,默认为false -->

<usePLPgSQL>false<usePLPgSQL/>

<!-- 界面输入的sql在传输之前是否转码,避免被防火墙拦截,默认为false -->

<SqlEncode>false</SqlEncode>

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 15 / 41

<!-- 是否在提交或者 回滚时关闭对应的Shard连接,在并发数大于idb连接数时有

效,默认为false -->

<closeShardConnectionOnCommit>false</closeShardConnectionOnCommit>

<!-- 用于标志加锁的engine,一般提供engie提供外部访问的网卡IP,若不设置,则

默认值为localhost -->

<currentEngine>192.168.1.115</currentEngine>

<!-- 用于文本导入,标志行数据解析线程数,默认5 -->

<lineDataParseThreadInitCount>5</lineDataParseThreadInitCount>

<!-- 用于文本导入,标志单shard行数据导入线程数,默认2 -->

<shardDataLoadThreadInitCount>2</shardDataLoadThreadInitCount>

<!-- 用于文本导入,标志文件读取线程数,默认1 -->

<fileParseThreadInitCount>1</fileParseThreadInitCount>

<metadata>

<!-- 虚拟shard的数目,默认为128,需要根据实例的需要进行动态调整,shard

个数需要能够被 virtualShardNumber整除,否则可能出现数据不均匀的现象-->

<virtualShardNumber>128</virtualShardNumber>

<!-- 是否记录SQL运行情况,在生成环境下不建议设为true,默认为false -->

<sqlExecutionStat>false</sqlExecutionStat>

<!-- 冗余数,若设为1,表示1份冗余,2表示两份冗余,依此类推,默认为0,

表示没有冗余 -->

<redundance>0</redundance>

<!-- instance默认创建目录 该目录必须有idb用户权限-->

<defaultInstanceDir>/lzs</defaultInstanceDir>

<!-- 以下为应用配置,可配置多个应用 -->

<applications>

<application list="true">

<!-- 应用名称,同时作为管理界面的登录名 -->

<name>app123</name>

<!-- 管理界面登录密码 -->

<managerPassword>DI%EF%BF%80G7%EF%BE%AF%EF%BE%AC%EF%BE%9D*%EF%BE%A6%

EF%BE%A7%1B%EF%BF%BD%EF%BE%96w%EF%BF%97</managerPassword>

<!-- 数据库登录用户名,在使用jdbc或其他客户端接口连接数据库时,

使用此用户名 -->

<userName>lzs</userName>

<!-- 数据库登录密码 -->

<userPassword>%EF%BF%BA%EF%BF%A5%26%1Ei%3F%EF%BF%85c%EF%BE%82%EF%BE%

8C5%EF%BF%8C0%EF%BE%BD%3E%60</userPassword>

</application>

</applications>

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 16 / 41

<!-- 以下是节点配置,如果冗余大于0,节点数应该不小于冗余数 -->

<nodes>

<node list="true">

<!-- node 标识名 -->

<nodeID>node11</nodeID>

<!-- node IP地址 -->

<nodeIP>192.168.1.11</nodeIP>

<!-- node 心跳IP地址 可选-->

<heartIP>192.168.100.11</heartIP>

<!--node 用户名 -->

<rootUsername>idb</rootUsername>

<!--node 用户密码 -->

<rootPassword>%EF%BF%95%EF%BE%86%EF%BF%88%1647%EF%BE%8Bh</rootPasswo

rd>

<!-- ssh 端口号 -->

<sshPort>22</sshPort>

<!--node idb安装目录 -->

<idbInstallDir>/usr/local/idb</idbInstallDir>

<!-- instance权重 -->

<weight>1</weight>

</node>

<node list="true">

<!-- node 标识名 -->

<nodeID>node13</nodeID>

<!-- node IP地址 -->

<nodeIP>192.168.1.13</nodeIP>

<!-- node 心跳IP地址 可选-->

<heartIP>192.168.100.13</heartIP>

<!--node 用户 -->

<rootUsername>idb</rootUsername>

<!--node 用户密码 -->

<rootPassword>%EF%BF%95%EF%BE%86%EF%BF%88%1647%EF%BE%8Bh</rootPasswo

rd>

<!-- ssh 端口号 -->

<sshPort>22</sshPort>

<!--node idb安装目录 -->

<idbInstallDir>/usr/local/idb</idbInstallDir>

<!-- instance权重 -->

<weight>1</weight>

</node>

</nodes>

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 17 / 41

<!-- 以下为数据库实例(instance)配置,可配置多个instance -->

<instances>

<instance list="true">

<!-- instance url -->

<url>jdbc:idb://192.168.1.11:30001/</url>

<!-- 以下配置instance下的shard 如果冗余大于0系统会自动创建冗

余实例来建shard-->

<shard list="true">

<!-- 该shard所属应用 -->

<application>app123</application>

<!-- shard名称 -->

<shardid>shard001</shardid>

</shard>

</instance>

<instance list="true">

<!-- instance url -->

<url>jdbc:idb://192.168.1.13:30002/</url>

<!-- 以下配置instance下的shard -->

<shard list="true">

<!-- 该shard所属应用 -->

<application>app123</application>

<!-- shard名称 -->

<shardid>shard002</shardid>

</shard>

</instance>

</instances>

</metadata>

<!-- 连接池最大连接数,默认为200 -->

<dataSourceMaxActive>200</dataSourceMaxActive>

<!-- 连接池默认初始化连接数,默认为20 -->

<dataSourceInitialSize>20</dataSourceInitialSize>

<!-- 连接池最大空闲连接数,默认为20 -->

<dataSourceMaxIdle>20</dataSourceMaxIdle>

<!-- 连接池最大等待时间,默认为60000毫秒(1分钟),-1则表示为无穷大 -->

<dataSourceMaxWait>60000</dataSourceMaxWait>

<!-- 是否需要更新统计数据,统计数据用于计算sql的开销,影响跨节点执行计划,

大数据量时需要在集群中选择一个节点的设为true -->

<needUpdateStats>false</needUpdateStats>

<!-- false,建表时默认采用hash分片, true,建表时默认采用Global分片方式 -->

<defaultRuleGlobal>false</defaultRuleGlobal>

<!-- 性能调优选项,为true时将打印SQL执行各阶段时间供分析 -->

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 18 / 41

<performanceAnalysis>true</performanceAnalysis>

<!--是否启用权限验证,默认为false-->

<checkPermission>false</checkPermission>

<!--是否启用行锁控制(对insert\update\delete等涉及行锁的操作将串行执行),

默认为true,false时则不控制,-->

<rowExclusiveLock>true</rowExclusiveLock>

<!-- tcp报告连接超时 (以毫秒为单位)。-->

<tcpTimeOut>6000</tcpTimeOut>

<!-- 健康检查任务检查周期表达式 代码中默认值取消,如果该处没有设置检查周期

则不在进行健康检查 -->

<failureDetectionExpression>0/10 * * *

* ?</failureDetectionExpression>

<!-- 最大检测次数 -->

<maxChecktimes>10</maxChecktimes>

<!-- 要使用的超时值(以毫秒为单位)。 -->

<timeout>5000</timeout>

<!-- 最大读取时间(以毫秒为单位)。 -->

<maxReadTime>3000</maxReadTime>

<!-- 慢查询日志目录 -->

<logSlowQueries>/var/logs/dbone_slow.log</logSlowQueries>

<!-- 慢查询时长(豪秒) -->

<longQueryTime>1000</longQueryTime>

<!-- 配置参数检查功能各个检查项目预期值 -->

<configparacheck>

<SystemPara>

<!-- 服务器时间一致性检查允许误差值 单位秒 -->

<DATETIME>1800</DATETIME>

<!-- tcp参数net.ipv4.tcp_tw_recycle期望值-->

<net.ipv4.tcp_tw_recycle>1</net.ipv4.tcp_tw_recycle>

<!-- tcp参数net.ipv4.tcp_max_syn_backlog期望值-->

<net.ipv4.tcp_max_syn_backlog>4096</net.ipv4.tcp_max_syn_backlog>

<!-- ssh参数MaxStartups期望值-->

<MaxStartups>500</MaxStartups>

<!-- ssh参数MaxSessions期望值-->

<MaxSessions>500</MaxSessions>

<!-- ssh参数UseDNS期望值-->

<UseDNS>no</UseDNS>

<!-- Ulimit参数kernel.sem期望值-->

<kernel.sem>500 128000 500 256</kernel.sem>

<!-- Ulimit参数softnofile期望值-->

<soft.nofile>65535</soft.nofile>

<!-- Ulimit参数hard.nofile期望值-->

<hard.nofile>65535</hard.nofile>

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 19 / 41

<!-- Ulimit参数soft nproc期望值-->

<soft.nproc>65535</soft.nproc>

</SystemPara>

</configparacheck>

</root>

10.3 AcrossJoinConfig.properties

AcrossJoinConfig.properties 为 DBOne 跨节点相关配置文件,说明如下:

#是否启用全局事务 ID,on 时需要部署 GTM 版本,并且用 GTM 版 IDB,为 off 时

不需要部署 GTM,直接用 no-GTM 版 IDB 即可。

gxid.mode =off

#是否启用 AppNode 处理跨节点 join 和子查询

appNode.mode=off

#是否启用集群锁检测

clusterdeadLock.mode=off

#GTM 地址,修改成服务器 GTM 的 IP 地址,gxid.mode 或者 clusterdeadLock.mode 为

on 是必须配置

gtm.ip.address=192.168.1.237

#每个 ENGINE 一个 ID,全局唯一,把 IP 改成 GTM 的 IP 地址

gtm.engine.id=ENGINE_ID_192.168.1.237

#是否启用 XA

xa.mode=off

10.4 AppNode.xml

<AppNode>

<SQLPort>28000</SQLPort> #appnode 与 Engine 之

间监听端口号

<APPServerPort>29000</APPServerPort> #appnode 之

间传递消息监听端口号

<SQLThreadNumber>16</SQLThreadNumber>

#appnode 与 Engine 之间消息传递线程数

<AppServerThreadNumber>16</AppServerThreadNumber>

#appnode 之间消息传递线程数

<AppClientThreadNumber>16</AppClientThreadNumber>

#appnode 与 IDB 之间消息传递线程数

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 20 / 41

<PGIP>127.0.0.1</PGIP> #appnode 连接 IDB 的

网络地址

<PGPort>30000</PGPort> #appnode 连 接

IDB 的端口

<identification>10.0.0.167</identification> #appnode 唯一标

志,必须与源数据库配置一致

<locale>zh_CN.UTF-8</locale> #本地语言设置

<PGDiskCachePath>/home/appnode/cache</PGDiskCachePath>

#缓存目录

<GTM>false</GTM> #是否 GTM 版本

<MemPoolPercent>30</MemPoolPercent> #

<MaxMemPercent>80</MaxMemPercent> #

<IsPrintNetMsg>true</IsPrintNetMsg> #网络消息是否输

出 log

<IsPrintLog>true</IsPrintLog> #是否输出 log

<LogLevel>error</LogLevel> #log 输出级别,按优先

级别从低到高分别为 trace->debug->warning->information->error->fatal

</AppNode>

<l1>

<name>appnodelogger</name>

<channel>c1</channel>

<level>information</level>

</l1>

</loggers>

</logging>

</config>

10.5 IDB.CONF

IDB 数据库节点的配置主要在 idb.conf,其中关键配置项说明如下:

序号 参数名 建议值 单位 备注

1 max_connections 500 个

它决定数据库可以同时建立的最大的客户端连接的数目。通常,

max_connections 需要防止 max_connections * work_mem 超出了实际

内存大小,重启生效,该参数默认100,需根据具体连接数进行调整。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 21 / 41

2 shared_buffers 512 MB

数据缓冲区位于数据库的共享内存中,它越大越好,不能小于128KB。

IDB通过 shared_buffers与内核和磁盘打交道,因此应该尽量大,让

更多的数据缓存在 shared_buffers中,重启生效,该参数最重要,单服

务器上所有实例的 Shared_buffer值建议为物理可用内存的50%-75%。

3 temp_buffers 8 MB

它决定存放临时表的数据缓冲区中的数据块的个数,每个数据块的大

小是8KB。临时表缓冲区存放在每个数据库进程的私有内存中,而不是

存放在数据库的共享内存中。默认值是1024。即改即生效,当前该值

不需要做调整。

4

max_prepared_tr

ansactions 200 个

它决定能够同时处于 prepared状态的事务的最大数目,它的值通常应

该和 max_connections 的值一样大。重启生效。

5 work_mem 8 MB

它决定数据库的排序操作和哈希表使用的内存缓冲区的大小。在执行

排序操作时,会根据 work_mem的大小决定是否将一个大的结果集拆分

为几个小的和 work_mem差不多大小的临时文件。显然拆分的结果是

降低了排序的速度。因此增加 work_mem有助于提高排序的速度。默认

值为1M,实际需根据查询所需的 buffer进行参考,即改即生效,该值

为最大可用内存,非每次查询的固定大小的值,如果量分组排序时建议

调整此值。

6

maintenance_wor

k_mem 512 MB

它决定数据库的维护操作使用的内存空间的大小。数据库的维护操作

包括 VACUUM、CREATE INDEX 和 ALTER TABLE ADD FOREIGN KEY 等操作。

这里定义的内存只是在 CREATE INDEX, VACUUM 等时用 到,因此用到

的频率不高,但是往往这些指令消耗比较多的资源,因此应该尽快让

这些指令快速执行完毕。建议10%,如果集中批量进行索引和空间整理,

该值设置越大越好,完成后恢复正常,即改即生效

7

effective_cache

_size 4096 MB

只是个度量值, 不是实际分配使用的内存值, 表示系统有多少内存可

以作为操作系统的 cache. 越大的话, 数据库越倾向使用 index这种

适合 random访问的执行计划. 一般设置为内存大小减去数据库的

shared_buffer再减去系统和其他软件所需的内存

8

checkpoint_segm

ents 32 MB

checkpoints参数合理的配置不仅能够减少系统 IO写入的阻塞,同时

还会减少高峰时 IO给系统带来的压力,如果频繁更新数据,建议调大

改值,如128甚至256M。

10.6 实例 IO 分配

当服务器磁盘有多个物理隔离的区分情况下,可以进行实例 IO 分流,即把不同实例创建在不同的

物理磁盘上,为了能更好的识别服务器上有哪些实例目录,建议把所有实例的相关目录链接到 idb 安装目

录(默认为 /usr/local/idb)下,具体操作如下:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 22 / 41

以两个实例、两块独立物理磁盘(挂载在/data1, /data2)为例:

创建实例的时候,把所有实例目录创建在 /usr/local/idb 目录下面,如:

实例 1:/usr/local/idb/arc1 /usr/local/idb/data1 /usr/local/idb/bak1

实例 2:/usr/local/idb/arc2 /usr/local/idb/data2 /usr/local/idb/bak2

创建好实例之后,停止实例,然后把实例相关目录移动到不同的物理磁盘下去(实例 2 类似):

mv /usr/local/idb/arc1 /data1/

mv /usr/local/idb/data1 /data1/

mv /usr/local/idb/bak1 /data1/

移动完成后,确认为 idb 用户的权限,然后创建相应的软链接:

ln -s /data1/arc1 /usr/local/idb/arc1

ln -s /data1/data1 /usr/local/idb/data1

ln -s /data1/bak1 /usr/local/idb/bak1

创建完成后,启动实例,上述处理完成之后,所有的实例都被分流到不同的物理磁盘上面了,同时也能

在 /usr/local/idb 目录下面看到所有的实例信息。

11 数据导入和迁移

数据导入导出建议文本方式首选。文本尽量符合以下规范:

1.逗号分割字段,最好是单字符。

2.采用双引号为字段包围符。

3.文本字符集为 UTF8。

可以结合各数据库导出工具进行文本生成。

当前数据迁移可采用数据迁移工具和 ETL 结合方式进行。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 23 / 41

1.数据迁移工具:目前支持文本、Oracle、SQLServer、DB2 直接导入,已经在几个项目中得到验证,

但太复杂的没有进行过验证,不能保证完全支持。未来可能会被 ETL 代替。

2.ETL 工具支持全库及单表导入,文本导入最好是 CSV 格式。

12 系统监控

系统监控是一切调优的基础和依据,特别是性能测试,单台机器的状态监控推荐使用 nmon 工具。

集群模式下建议采用 Zabbix 方式,可以全局实时查看每台机器的状态。监控重点关注 CPU、内存、磁盘、

网络等资源状况。

Nmon 监控如下:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 24 / 41

Zabbix 监控如下:

13 调优方法(最重要)

调优方法包括路由、索引、实例数量、执行计划、IDB 节点配置、连接数等。

13.1 路由调整

表路由配置,路由配置是非常关键,涉及数据的正确性及数据库的性能,特别是 Join 的性能,路由配

置原则为按 Join 字段进行分片,确保 Join 的数据在同一 Shard 上,在此基础上如果数据相对均匀最好。

路由配置需进行整体判断,在 No GTM 版本中,一旦 join 跨节点了,结果肯定不正确,如果无法避免跨节

点操作,此时需要部署 GTM 版本,但 GTM 版本原则上表路由也是尽量避免跨节点操作。如何不跨节点的

关键是查询 SQL 涉及的数据都可在本节点内完成。表的路由通常配置说明如下:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 25 / 41

序号 场景说明 路由配置 备注

1 单表,小表 全局路由 数据分布均匀

2 单表,大表 大表路由 数据分布均匀

3 两表 join,大、小表 大表 Join 字段路由 数据分布均匀

4 两表 join,大、大表 两个大表 Join 字段路由 数据分布均匀

5 三表 join, 大、小、小表 大表 Join 字段路由,两小表全局路由 数据分布均匀

大、小表 Join 字段路由,小表全局路由 数据分布均匀

6 三表 join, 大、大、小表 大、大表 Join 字段路由,小表全局路由 数据分布均匀

7 三表 join, 大、大、大表 大、大表 Join 字段路由,大表全局或分片路由 需根据具体 SQL 进

行判断

数据插入后,需查看每个 shard 的记录数或大小,确保相对均匀的分布到各个 shard 上。

13.2 索引

索引是查询效率的关键,千万不要漏了索引,较容易遗漏的索引如下:

Where 条件字段,多种 Where 条件组合,需要综合考虑,适当减少索引数量,尽量

整合相差不多的索引条件。

函数索引,如条件中的 substring(字段,4,4)。

group by,order by(带 where 条件时,全表无作用)

Join 字段(带 where 条件时,全表无作用)

Distinct 等

如果经过大量的插入和修改后,建议手工执行 VACUUM,会显著提升性能。vacuum analyze

tablename,重新对该表相关的空间整理。有时存在个别 IDB 节点索引未建完成等情况,这将影响查询效率,

一旦出现查询效率低的情况(索引已经建立前提下),建议检查各节点的索引大小,如发现可重新建,或

个别节点补建。

注:通过 select pg_size_pretty(pg_relation_size('index name'))检查索引大小。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 26 / 41

13.3 实例数调整

由于 IDB 单个连接只能利用单核,多个实例可以减少单表记录数,特别对 Join/group by 查询来讲性

能可以提高很多,理论上单 Shard 上单表 5000 万作为一个参考值,需结合具体的测试场景进行调整。

13.4 数据插入

数据插入必须采用 batch 模式,batch 大小以 2000 为宜,在插入数据前索引先不创建,需要非常注意

分片字段,分片字段合理,可以所有存储节点并行插入,充分发挥分布式的优势,可通过监控所有节点的 CPU

和磁盘 IO,单引擎 30-50 并发为宜,可增加引擎和节点进行准线性提升。测试阶段建议关闭 Archive 模式。

13.5 执行计划

Explain Analysis,这是必须要掌握的 SQL 分析命令,通过它可以了解执行 SQL 是否用了索引,用了

什么索引,耗时情况,可以准确推断索引的有效性及 buffer 所需的大小,从而调整索引和相关内存参数。

如果 NO SQL 数据测试,须调整 IDB 配置文件 IDB.conf 的 enable_seqscan = off,确保索引生效。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 27 / 41

13.6 IDB 调优

除 IDB.conf 相关配置参数外,还可以进行以下相关调优。work_mem 参数主要针对统计分析

SQL(Group by,order by 等)需要适当调大,如果数据量较大可以调整为 128M 或 256M,如果查询中间结

果超过设定值,会把结果临时写入磁盘,从而影响性能。

IDB 数据及归档日志 IO 分离,修改 Archive_command = 'cp -i %p /data/idb/archive/%f

</dev/null',前提是有独立的磁盘,且空间容量足够。

判断 IDB 缓存是否生效,可以在控制台执行 SQL,看第一次和第二次的时间区别,一般第二次执行时

间比第一次要快很多,如果不是需要监控数据节点的 CPU 和 IO,一般情况下 CPU 和 IO 会较高。判断数

据是否进缓存,参见附录(查看表的缓存)。

跟踪耗时 SQL 语句或进程,有针对性的进行 SQL、索引、缓存优化,参见附录(查看当前进程执行 SQL

和定期统计耗时的 SQL)。

13.7 连接数

具体高并发测试时需要调整以下参数:

1.应用程序的连接池大小。

2.QueryServer 的最大连接数,配置文件 engine_ctl.sh 的 JVM_DEFINES 项增加以下选项:

-Dqueryserver.maxConnection=1000

3.每引擎的最大连接池设置,通过界面进行设置。

4.IDB 最大连接数,通过修改 IDB.CONF 的 max_connections 配置项。

上述之间的关系为:应用程序连接池《QueryServer 最大连接数(所有)《引擎连接池(所有),IDB 的

最大连接数计算方法如下:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 28 / 41

Max_connections = 所有引擎连接数的总和+50 个连接(管理连接/后台运行维护),其中每个引擎所

需的连接数为:最大连接数乘以每实例的 shard 数(当前一个实例对应一个 shard)。引擎包括 Engine 和

Query Server。

14 TPCC 测试

TPC-C 是由交易处理性能委员会制定的专门针对联机交易处理系统(OLTP 系统)的性能测试规范,一

般情况下把这类系统称为业务处理系统。其测试过程如下:

修改配置文件:vi run/props.idb //配置文件名称以实际为准

创建测试表:./runSQL.sh props.idb sqlTableCreates //多次测试时,创建一次即可,严格检查表分片必

须按手册指定的 ID 进行分片。

导入数据:./runLoader.sh props.idb numWarehouses 10 //与配置文件 warehouses 一致

创建索引:./runSQL.sh props.idb sqlIndexCreates //多次测试时,创建一次即可

运行测试:./runBenchmark.sh props.idb //每次执行,数据都要单独清空并重新导入

清除数据:./runSQL.sh props.idb sqlTableTruncates //清除测试数据

后续操作为:清除数据-》导入数据-》运行测试,反复循环

参考测试用例:

引擎节

数据节

每节点

实例数

测试参数 测试结果

1 3 1 warehouses=10

terminals=30

runTxnsPerTerminal=100

runMins=0

limitTxnPerMin=-1

Measured tpmC (NewOrders) =

Measured tpmTOTAL =

2 3 1 warehouses=10

terminals=30

runTxnsPerTerminal=100

runMins=0

Measured tpmC (NewOrders) =

Measured tpmTOTAL =

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 29 / 41

limitTxnPerMin=-1

1 3 1 warehouses=10

terminals=30

runTxnsPerTerminal=0

runMins=480

limitTxnPerMin=-1

Measured tpmC (NewOrders) =

Measured tpmTOTAL =

2 3 1 warehouses=10

terminals=30

runTxnsPerTerminal=0

runMins=480

limitTxnPerMin=-1

Measured tpmC (NewOrders) =

Measured tpmTOTAL =

1 3 1 warehouses=20

terminals=30

runTxnsPerTerminal=100

runMins=0

limitTxnPerMin=-1

Measured tpmC (NewOrders) =

Measured tpmTOTAL =

2 3 1 warehouses=20

terminals=30

runTxnsPerTerminal=100

runMins=0

limitTxnPerMin=-1

Measured tpmC (NewOrders) =

Measured tpmTOTAL =

15 高性能

15.1 测试原型

高并发测试一般清空下需要多引擎多节点模式,引擎做成负载均衡。一般并发数超过 200 就需要多个

引擎,通常,简单查询每个引擎支持《500,复杂查询及更新数据操作每个引擎《200,具体需要查看负载

情况进行灵活调整。通用测试用例如下:

customer sharding 数据量:5 亿

create table customer (

customer_id int4 not null,

name varchar(100),

country varchar(100),

province varchar(100),

city varchar(100),

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 30 / 41

street varchar(100),

age int4,

register_date date,

sex varchar(10),

birth date,

tel varchar(100),

hometel varchar(100),

address varchar(100),

email varchar(100),

hobby varchar(100),

marital bool,

customerbit varchar(100),

customervarbit varchar(100),

idcard varchar(100),

haircolor bpchar(10),

salary int4,

school varchar(100),

carid varchar(100),

height int4,

weight int4,

qqnumber varchar(100),

company varchar(100),

companysite varchar(100),

a_fathername varchar(100),

a_mothername varchar(100),

a_fatherbirth date,

a_motherbirth date,

a_ifdaughter bool,

a_daughtername varchar(100),

a_daughterage int4,

a_dautherhobby varchar(100),

a_ifson bool,

a_sonname varchar(100),

a_sonage int4,

a_sonhobby varchar(100),

b_fathername varchar(100),

b_mothername varchar(100),

b_fatherbirth date,

b_motherbirth date,

b_ifdaughter bool,

b_daughtername varchar(100),

b_daughterage int4,

b_dautherhobby varchar(100),

b_ifson bool,

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 31 / 41

b_sonname varchar(100),

b_sonage int4,

b_sonhobby varchar(100),

c_fathername varchar(100),

c_mothername varchar(100),

c_fatherbirth date,

c_motherbirth date,

c_ifdaughter bool,

c_daughtername varchar(100),

c_daughterage int4,

c_dautherhobby varchar(100),

c_ifson bool,

c_sonname varchar(100),

c_sonage int4,

c_sonhobby varchar(100)

);

order sharding 数据量:1 亿

create table "order" (order_id int4,customer_id int4,product_id int4,order_date

date,amount1 varchar(100),order_stat1 varchar(50),express1 varchar(50),amount2

varchar(100),order_stat2 varchar(50),express2 varchar(50),amount3

varchar(100),order_stat3 varchar(50),express3 varchar(50),amount4

varchar(100),order_stat4 varchar(50),express4 varchar(50),amount5

varchar(100),order_stat5 varchar(50),express5 varchar(50))

product global 数据量:10w

create table product(product_id int4,name varchar(50),category

varchar(50),product_date date,product_company varchar(50),prop1 varchar(50),prop2

varchar(50),prop3 varchar(50),prop4 varchar(50),prop5 varchar(50),prop6 varchar(50),prop7

varchar(50),prop8 varchar(50),prop9 varchar(50),prop10 varchar(50),prop11

varchar(50),prop12 varchar(50),prop13 varchar(50),prop14 varchar(50))

15.2 测试场景

单引擎单表多线程入库:

用例 ID IN-01 ( 单引擎单表多线程入库 )

场景信息 单引擎,4 节点,每节点 2 个实例,入库数据量:5 亿

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 32 / 41

线程数量 30 50 100

入库速度(条/s)

说明

双引擎单表多线程入库:

用例 ID IN-02 ( 双引擎单表多线程入库 )

场景信息 双引擎,4 节点,每节点 2 个实例,入库数据量:5 亿

线程数量 30 50 100

入库速度(条/s)

说明

单表多线程多字段查询

用例 ID QR-01 ( 单表多线程 多字段查询 )

场景信息 单引擎,4 节点,每节点 2 个实例

线程数量 50 100 200

响应时间(ms)

说明 查询对象:customer 数据量:5 亿

语句:select customer_id,address from customer where customer_id = resultCount

单表多线程带条件查询

用例 ID QR-02 ( 单表多线程带条件查询 )

场景信息 单引擎,4 节点,每节点 2 个实例

线程数量 50 100 200

响应时间(ms)

说明

查询对象:customer 数据量:5 亿

语句:select customer_id,address from customer where customer_id > resultCount and

customer_id < resultCount+500;

多表多线程 join 查询-大大表

用例 ID QR-03 ( 多表多线程 join 查询-大大表)

场景信息 单引擎,4 节点,每节点 2 个实例

线程数量 50 100 200

响应时间(ms)

说明

查询对象:customer,"order" 数据量:customer-5 亿,"order"-1 亿

语句:select t1.customer_id,t1.address from customer t1 left join "order" t2 on

t1.customer_id=t2.customer_id and t2.order_date > '2013-12-11' and t2.order_date <

'2013-12-18';

多表多线程 join 查询-大小表

用例 ID QR-04 ( 多表多线程 join 查询-大小表)

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 33 / 41

场景信息 单引擎,4 节点,每节点 2 个实例

线程数量 50 100 200

响应时间(ms)

说明

查询对象:"order",product 数据量:"order"-1 亿,product-10w

语句:select t1.order_id,t2.name from "order" t1 left join product t2 on

t1.product_id=t2.product_id and t2.category=category;

16 No SQL

No SQL 测试包括 XML 和 JSON 两种类型,说明如下(详细以客户测试为准):

16.1 XML 数据类型

创建支持 XML 的 NOSQL 表:create table testxml(id int, a xml, b xml);

插入 XML 数据:

insert into testxml(id,a,b,c) values(1,('<?xml version="1.0"

encoding="UTF-8"?><note><to>George</to><from>John</from><heading>

Reminder</heading><body>Dont forget the meeting!</body></note>')::xml,'<test>aaa</test>',

'<test>bbb</test>');

删除数据: delete from testxml where id = 1;

更新数据:update testxml set b=(SELECT xmlconcat('<name/>', '<age>29</age>')) where id='1';

查询数据:select * from testxml;

16.2 JSON 数据类型

创建支持 JSON 的 NOSQL 表:create table testjson(id int, b json);

插入 json 数据:

nosql=#insert into testjson values(1,'{"Image": { "Width": 800, "Height": 600, "Title": "View

from 15th Floor", "Thumbnail": {"Url":

"http://www.example.com/image/481989943","Height": 125,"Width": "100" },"IDs": [116, 943,

234, 38793]}}','{"hello":"world"}');

删除数据:delete from testjson where id = 1;

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 34 / 41

更新数据:

update testjson set anotherjson='{"col1":1,"col2":"francs","col3":true}' where

(anotherjson->>'hello')::text = 'world';

查询数据:select * from testjson;

17 GTM

GTM 版本和 NO GTM 在配置上的差异如下:

GTM 相关错误汇总如下:

1)创建表的时候失败并报如下错误:

此种情况,是因为单个 appnode 节点上的 appnode.xml 中 identification 参数和元数据库的

dbs_node 中的 node_id 不一致引起的,要修改这两处一致即可。最好的解决是在创建节点的时候:节点

标识与 ip 一致,能避免上面的两处值不同,从而不会出现创建表时的错误。

2)删除应用后,重新添加应用后,无法创建表,报错连不上:0 端口

配置文件 GTM NO GTM

AcrossJoinCo

nfig.propert

ies

gxid.mode =on

appNode.mode=on

gxid.mode =off

appNode.mode=off

AppNode.xml <GTM>true</GTM>

IDB需采用 GTM版本

<GTM>false</GTM>IDB需

采用 NO GTM 版本

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 35 / 41

这是因为应用被删除后,appnode 端口被修改成了 0;

此时,应检查元数据库和应用元数据库中的 dbs_instance 表的 appnodeport 和 url 的值是否为 28000,

如果不是 28000,则修改为 28000 并重新启动 ,则可解决此问题。

18 GIS

具体参考《DBOne 测试用例(GTM&NO SQL&GIS)》

19 ODBC

Windows ODBC 驱动根据字符集分为 Unicode 和 ANSI,按操作系统位数分为 32 位和 64 位。其

中连接 DBOne 时需要注意以下 ODBC 选项:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 36 / 41

ODBC 连接 DBOne 采用扩展协议,游标对 DBOne 无效。 ODBC 连接 IDB 时,必须去除扩展协议选项,

同时游标选项可以加快批处理能力。

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 37 / 41

20 应用集成

当前应用集成方式包括 JDBC、ODBC、OLEDB(多维分析)、Node.js、BDE 等方式,其中已经对接的

工具包括:SAAS、SAS、BIEE、Informatic、ETL、SPSS、Datastage 等。

21 附录

21.1 IDB 节点操作

查看表的缓存

create extension pgfincore;

select * from pgfincore('table_name'::regclass);

查看表空间大小

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 38 / 41

进入所属库,执行:

SELECT pg_size_pretty(pg_total_relation_size('table_name')) As

fulltblsize,pg_size_pretty(pg_relation_size('table_name')) As justthetblsize;

查看数据库大小

SELECT pg_size_pretty(pg_database_size('database_name')) As fulldbsize;

查看当前被锁定的表

SELECT pg_class.relname AS table, pg_database.datname AS database, pid, mode, granted FROM pg_locks,

pg_class, pg_database WHERE pg_locks.relation = pg_class.oid AND pg_locks.database = pg_database.oid;

查看当前进程执行 SQL

SELECT client_addr ,client_port,waiting,query_start,query FROM pg_stat_activity where pid=?;

定期统计耗时的 SQL

select row_number() over() as rn, * from (select query,' calls:'||calls||'

total_time_s:'||round(total_time::numeric,2)||'

avg_time_ms:'||round(1000*(total_time::numeric/calls),2) as stats from pg_stat_statements order by

total_time desc limit 20) t;

备份数据库

idb_dump -U idb --schema=public -h 192.168.2.16 -p 30000 -FC -b shard7>shard7.dump

恢复数据库

idb_restore -U idb --schema=public -h 192.168.2.12 -p 30000 --disable-triggers --single-transaction -c -d

shard12 shard12.dump

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 39 / 41

21.2 TPC-C 测试参考

等本次测试结束进行更新

21.3 高性能测试参考

等本次测试结束进行更新

21.4 无法获得 uuid

1)如没有安装 dmidecode 请执行: yum -y install dmidecode

2)如 dmidecode 版本过低导致在执行“dmidecode -s system-uuid”命令时有两行以“#”开头的警告信息时,

执行:yum -y update dmidecode

3)如执行“dmidecode -s system-uuid”时无任何显示或者非 X86 平台无法执行 yum 操作时,请使用如下方

法:

DBOne数据库系统运维手册

www.intple.com ©引跑科技版权所有 40 / 41

A.重命名原 dmidecode 命令,如果原本没有 dmidecode 命令的话忽略此步骤

cd /usr/sbin

mv dmidecode dmidecode.bak

B.在/usr/sbin 目录的 dmidecode 内容是:

#!/bin/bash

cat /var/lib/dbus/machine-id

保存退出

C.执行命令:

chmod a+x /usr/sbin/dmidecode

D.输入命令: dmidecode -s system-uuid 检查确认

21.5 修改 IDB 用户密码

修改 IDB 用户密码涉及操作系统和 IDB 节点,方法如下:

操作系统:root 用户下, passwd idb,输入新密码和确认密码。

IDB 节点:su - idb, alter user idb with password 新密码'。

21.6 查看 DBOne 版本

用 DBoneplus 工具,输入 version。