VastBase技术实践

近两年金融行业搞信创,需要软件国产化,恰好项目组也被要求做oracle到海量数据库的迁移。所以这里做了一个单节点的vastbase安装技术实践。

文章目录

  • VastBase技术实践
  • 1 环境准备
    • 1.1 CentOS7
    • 1.2 关闭防火墙
    • 1.3 SELINUX配置
    • 1.4 IPC参数设置
    • 1.5 内核参数调整
    • 1.6 时间配置
    • 1.7 安装用户规划
    • 1.8 修改资源配置
    • 1.9 Core_Pattern设置
    • 1.10 预装依赖
  • 2. 数据库安装
    • 2.1 上传安装包并解压
    • 2.2 执行安装脚本
    • 2.3 重新拉起安装脚本,按照交互操作修改设置
    • 2.4 变更license设置
    • 2.5 初始化运行环境
  • 3. 数据库启动
    • 3.1 启停数据库
    • 3.2 登陆数据库
    • 3.3 检查状态
    • 3.4 查看服务监听该端口
  • 4. 数据库连接工具配置
    • 4.1 新建一个PostgreSQL的连接
    • 4.2 编辑驱动配置
    • 4.3 连接信息
    • 4.4 测试连接
  • *相关资源

1 环境准备

VastBase安装需要修改多项服务器基础配置,所以最好是能有root权限

1.1 CentOS7

CentOS7安装过程省略

[vastbase@localhost ~]$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[vastbase@localhost ~]$ cat  /proc/version
Linux version 3.10.0-1127.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020

1.2 关闭防火墙

针对centos7以上

  1. 查看防火墙状态
$ firewall-cmd --state
  1. 停止firewall
$ systemctl stop firewalld.service
  1. 禁止firewall开机启动
$ systemctl disable firewalld.service

1.3 SELINUX配置

  1. 查看是否开启 SELINUX,如果是未开启则是 diabled,已开启则是 enforcing
$ getenforce
  1. 临时关闭 SELINUX
$ setenforce
  1. 通过修改配置文件永久关闭 SELINUX
    a) vim编辑配置文件 /etc/selinux/config
    b) 将 SELINUX=enforcing 修改为 SELINUX=disabled
    c) 重启系统 reboot
[root@vastbase1 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

1.4 IPC参数设置

  1. 修改 /etc/systemd/logind.conf 文件,修改 RemoveIPC=no
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
  1. 添加 RemoveIPC=no 到/usr/lib/systemd/system/systemd-logind.service
$ echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
$ systemctl daemon-reload
$ systemctl stop systemd-logind
$ systemctl start systemd-logind

1.5 内核参数调整

编辑/etc/sysctl.conf,添加如下信息:

$ vim /etc/sysctl.conf
kernel.sem = 4096 2147483647 2147483646 512000
kernel.shmall = 419430
kernel.shmmax = 1200572800
net.core.netdev_max_backlog = 629145
net.core.rmem_default = 21299200
net.core.rmem_max = 21299200
net.core.somaxconn = 65535
net.core.wmem_default = 21299200
net.core.wmem_max = 21299200
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.tcp_mem = 362715       483620  725430
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_retries2 = 80
net.ipv4.tcp_rmem = 8192        250000  16777216
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_tso_win_divisor = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_wmem = 8192        250000  16777216
net.ipv4.udp_mem = 725430       967240  1450860

内含参数解释说明[不必过分关注]:

kernel.sem = 4096 2147483647 2147483646 512000 #信号集容纳最大信号数量,所有信号的最大数量,调用单个信号集中最大信号数量,信号集的最大值
kernel.shmall = 1079609302220 #需计算(所有共享内存段相加大小限制,单位page,配小了,库无法启动。建议内存的80%,查看page 大小getconf PAGE_SIZE)
kernel.shmmax = 1079609302220 #需计算(最大单个共享内存段大小,单位bytes,需大于shared_buffers 值)
net.core.netdev_max_backlog = 65535  #内核从网卡收到数据包后,交由协议栈(如IP、TCP)处理之前的缓冲队列。
net.core.rmem_default = 21299200 #接收套接字(socket)缓冲区大小的默认值(以字节为单位)。
net.core.rmem_max = 21299200  #接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.somaxconn = 65535   #用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.wmem_default = 21299200  #发送套接字缓冲区大小的默认值(以字节为单位)。
net.core.wmem_max = 21299200     #发送套接字缓冲区大小的最大值(以字节为单位)。
net.ipv4.tcp_keepalive_intvl = 30 #探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_time = 30 #这个参数表示当keepalive启用时,TCP发送keepalive消息的频度。
net.ipv4.tcp_max_syn_backlog = 65535  #表示那些尚未收到客户端确认信息的连接(SYN消息)队列的长度,加大队列长度为可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 10000 #表示系统同时保持TIME_WAIT套接字的最大数量。
net.ipv4.tcp_mem = 362715       483620  725430 #确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)
net.ipv4.tcp_retries1 = 5  #一个TCP连接请求,重传的N次不成功后放弃请求
net.ipv4.tcp_retries2 = 80 #在已经建立通讯状态下的一个TCP数据包,重传的N次不成功后放弃请求。
net.ipv4.tcp_rmem = 8192        250000  16777216  #tcp协议定义的每个socket链路接收窗口大小,单位字节,有三个值:min、default、max。
net.ipv4.tcp_syn_retries = 5 #控制内核向某个输入的SYN/ACK段重新发送相应的次数
net.ipv4.tcp_tso_win_divisor = 30 #单个TSO段可消耗拥塞窗口的比例
net.ipv4.tcp_tw_reuse = 1    #是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接
net.ipv4.tcp_wmem = 8192        250000  16777216  #tcp协议定义的每个socket链路发送窗口大小,单位字节,有三个值:min、default、max。
net.ipv4.udp_mem = 725430       967240  1450860   #设置UDP缓存,避免UDP缓存溢出,出现丢包、无法连接等现象。

1.6 时间配置

将各数据库节点的时区设置为相同时区,可以将/usr/share/zoneinfo/目录下的时区文件拷贝为 /etc/localtime 文件

$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.7 安装用户规划

  1. 创建用户组和用户:
$ groupadd -g 1005 vastbase
$ useradd -g 1005 -u 1005 -m vastbase
$ passwd vastbase
  1. 创建安装目录:
$ mkdir -p /home/vastbase/vastbase-install  #软件安装路径
$ mkdir -p / home /vastbase/data      #数据库目录
$ chown -R vastbase:vastbase /home/vastbase
$ chmod 700 /home/vastbase
[root@localhost home]# ls -l /home/vastbase/
total 0
drwxr-xr-x. 2 vastbase vastbase 4096 7月   8 10:25 data
drwxr-xr-x. 2 vastbase vastbase   32 7月   7 19:01 vastbase-install

1.8 修改资源配置

$ vim /etc/security/limits.conf
vastbase soft nproc unlimited
vastbase hard nproc unlimited
vastbase soft nofile 102400
vastbase hard nofile 102400
vastbase soft stack unlimited
vastbase hard stack unlimited
vastbase soft core unlimited
vastbase hard core unlimited
vastbase soft memlock unlimited
vastbase hard memlock unlimited

1.9 Core_Pattern设置

为记录数据库异常宕机信息,设定 core_pattern 路径为 vastbase 用户可写
的路径。

$ cat /proc/sys/kernel/core_pattern
$ echo "/data/core_pattern/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

1.10 预装依赖

$ yum install -y libicu libxslt tcl bzip2 perl

2. 数据库安装

2.1 上传安装包并解压

切换vastbase用户,将安装包上传至/home/vastbase/vastbase-install/vastbase-installer并解压

$ tar -zxvf Vastbase-G100-2.2_Build_5.100-rhel_7-x86_64.tar.gz  -C /home/vastbase/vastbase-install/vastbase-install/
[vastbase@localhost vastbase-installer]$ ll
总用量 125340
-rw-r--r--. 1 vastbase vastbase 125176728 3月  30 12:44 Vastbase-G100-2.2_Build_5.100-rhel_7-x86_64.tar.gz
-rwxr-xr-x. 1 vastbase vastbase   3143349 3月  30 12:44 vastbase_installer

2.2 执行安装脚本

[vastbase@localhost vastbase-installer]$./vastbase_installer

*.初次安装失败,经与海量数据库公司实施人员沟通是环境配置有问题,这里在配置文件/home/vastbase/data/postgresql.conf中统一追加配置。这里直接在配置文件末尾追加即可,配置变量重复时,读取靠后的

maintenance_work_mem=512MB  # 64MB~20GB
shared_buffers=4GB   # 25% OS_MEM
cstore_buffers=16MB
effective_cache_size=10GB  # 75% OS_MEM
max_process_memory=10GB    # 75% OS_MEM
archive_mode=on
archive_dest='/data/archive_wals'
vacuum_cost_limit=10000
autovacuum=on
autovacuum_mode=mix
autovacuum_max_workers=5
autovacuum_naptime=20s
autovacuum_vacuum_cost_delay=0
autovacuum_vacuum_scale_factor = 0.02
autovacuum_analyze_scale_factor = 0.1
track_sql_count=on
session_timeout=0
enable_cbm_tracking=on
enable_thread_pool = off
password_encryption_type=0
password_force_alter=off
password_effect_time=36500
wal_level=hot_standby
hot_standby=on
max_wal_senders=10
vastbase_login_info=false
log_statement='ddl'
log_duration = off
log_line_prefix = '%m %r %d %u [%p]'
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
track_activity_query_size=4096

2.3 重新拉起安装脚本,按照交互操作修改设置

有两种模式:典型安装、自定义安装。
典型安装为安装过程的参数按默认值设置,如需自定义安装输入 2 并输入<回车>继续。我输入2,自定义安装输入数据库超级用户(vastbase)密码:
输入密码,至少要8位,我设置为[ZAQ!xsw2]数据库加密密钥设置
输入1,使用超级用户密码Vastbase软件安装目录:
默认位置: /home/vastbase/local/vastbase
我修改为:/home/vastbase/vastbase数据库目录
默认位置: /home/vastbase/data/vastbase
我修改为:/home/vastbase/vastbase设置数据库软件安装目录,默认为 /home/vastbase/local/vastbase
我设置为:/home/vastbase/vastbase设置数据库实例化路径,默认未 /home/vastbase/data/vastbase
我设置为:/home/vastbase/data监听端口,默认5432
我设置为:5430配置最大连接数:默认500
我使用默认值,直接回车配置共享内存:默认为(内存/4)MB,输入共享内存大小,单位MB,或者输入<ENTER>选择默认值(1955):
默认值,回车最后确认安装概要信息:
安装概要
---------------
Vastbase软件安装目录:/home/vastbase/vastbase数据库目录:/home/vastbase/data数据库超级用户:vastbase数据库初始化参数:listen_addresses='*'port=5430max_connections=500shared_buffers=3971MBwork_mem=4MB确认OK,回车继续安装。安装过程包括安装数据库、实例化数据库、配置数据库参数和配置用户环境变量。输出信息如下:正在安装,请稍后...
初始化数据库成功, 数据目录: /home/vastbase/data
加密密钥文件生成成功
成功更新配置文件: /home/vastbase/data/postgresql.conf
正在写入配置文件
正在写入cluster_config.xml文件
正在写入环境变量
成功更新配置文件: '/home/vastbase/.bashrc'
===============================================================================
安装完成

2.4 变更license设置

$ vi /home/vastbase/data/postgresql.conf
末尾追加: license_path='/home/vastbase/vastbase/Vastbase_license_20220401_20221001'

将license文件上传至/home/vastbase/vastbase并改名为Vastbase_license_20220401_20221001

[vastbase@localhost vastbase-installer]$ ll /home/vastbase/vastbase/
-rw-rw-r--. 1 vastbase vastbase  260 7月   8 09:10 Vastbase_license_20220401_20221001

2.5 初始化运行环境

[vastbase@localhost vastbase-installer]$ source ~/.bashrc

3. 数据库启动

3.1 启停数据库

$ vb_ctl <start/stop/restart>

3.2 登陆数据库

实例化数据库过程中会默认创建数据库超级用户 vastbase,执行命令登录数据库。

$ vsql -r -d vastbase

3.3 检查状态

[vastbase@localhost vastbase-installer]$ vb_ctl query
[2022-07-22 20:03:43.352][12612][][vb_ctl]: vb_ctl query, 数据目录是 /home/vastbase/data HA state:           local_role                     : Normalstatic_connections             : 0db_state                       : Normaldetail_information             : NormalSenders info:
No information Receiver info:
No information

3.4 查看服务监听该端口

这里注意,我修改了默认端口5432为5430

[vastbase@localhost vastbase-installer]$ netstat -an |grep 5430
tcp        0      0 0.0.0.0:5430            0.0.0.0:*               LISTEN
tcp        0      0 xxx.xxx.xxx.xxx:5430        xxx.xxx.xxx.xxx:40016      ESTABLISHED
tcp6       0      0 :::5430                 :::*                    LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     325657   /tmp/.s.PGSQL.5430

4. 数据库连接工具配置

这里演示dbeaver的连接配置

4.1 新建一个PostgreSQL的连接

4.2 编辑驱动配置

这里需要连接Vastbase的驱动jar包Vastbase-G100-2.0_2021102010.jar
Jabc连接信息规范如下:

驱动名称:vastbase
类名:org.postgresql.Driver
Url模板:jdbc:postgresql://{host}[:{port}]/[{database}]
默认端口:5432
Default Database:vastbase
Default user:vbadmin (可自定义调整)

4.3 连接信息

4.4 测试连接

*相关资源

详见附件

Vastbase-G100-installer-2.2_Build_5.100-rhel_7-x86_64-20220330.tar.gz
Vastbase_license_20220401_20221001
Vastbase-G100-2.0_2021102010.jar

VastBase技术实践相关推荐

  1. 华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践

    搜索是一个古老的技术,从互联网发展的第一天开始,搜索技术就绽放出了惊人的社会和经济价值.随着信息社会快速发展,数据呈爆炸式增长,搜索技术通过数据收集与处理,满足信息共享与快速检索的需求.基于搜索技术, ...

  2. 使用容器的正确方式,Docker在雪球的技术实践

    " 雪球目前拥有一千多个容器,项目数量大概有一百多个,规模并不是很大.但是得益于容器技术,雪球部署的效率非常高,雪球的开发人员只有几十个,但是每个月的发布次数高达两千多次. 2018 年 5 ...

  3. 计算机书籍-语音识别技术实践

    深度学习:语音识别技术实践 作者:柳若边 出版社:清华大学出版社 出版时间:2019年04月去天猫看看智能鼠标

  4. 下一代超大规模软件定义网络技术实践

    2019独角兽企业重金招聘Python工程师标准>>> 云计算的 IT 架构已经在企业应用中表现出明显优势,但网络设计理念却必须是一种推倒重来的思想.为了适应云计算的灵活.弹性扩展. ...

  5. 实时音视频聊天中超低延迟架构的思考与技术实践

    1.前言 从直播在线上抓娃娃,不断变化的是玩法的创新,始终不变的是对超低延迟的苛求.实时架构是超低延迟的基石,如何在信源编码.信道编码和实时传输整个链条来构建实时架构?在实时架构的基础之上,如果通过优 ...

  6. 阿里移动|《蚂蚁金服移动端高可用技术实践》

    摘要:对于移动技术而言,2017年是继往开来之年.一方面是移动技术领域进入深水区,另一方面移动技术边界和内涵被不断重塑.阿里巴巴希望进一步推动移动应用研发事实标准落地,从而赋能整个行业开发者.在201 ...

  7. 互联网高并发架构技术实践

    一.什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求. 高并发相关常用的一些指标有响应时间( ...

  8. ​周锦民:腾讯在线教育视频互动直播间技术实践

    本文来自腾讯云技术沙龙,本次沙龙主题为在线教育个性化教学技术实践 演讲嘉宾:周锦民 | 2011年毕业进入腾讯, 现任在线教育部在线教育后台中心高级工程师,多年linux后台开发工作经验,目前主要负责 ...

  9. eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593 近日,在飞马网主办的“FMI人工智能大数据高峰论坛”上,来自eBay的数据科学家李睿

    eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593  近日,在飞马网主办的"FMI人工智能&大数据高峰论坛"上,来自eB ...

  10. AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《RPA+AI助力政企实现智能时代的人机协同》、《5G风口到来,边缘计算引领数据中心变革》、《数字化时代金融市场与AI算法如何结合?》

    AI开发者大会之计算机视觉技术实践与应用:2020年7月3日<RPA+AI助力政企实现智能时代的人机协同>.<5G风口到来,边缘计算引领数据中心变革>.<数字化时代金融市 ...

最新文章

  1. cmake语法【一】
  2. 神经网络:你的大脑是一台计算机吗?
  3. vue ts prop
  4. Java 编程下使用 Class.forName() 加载类
  5. 【Flutter】Flutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )
  6. Python环境下的数据库编程
  7. 「第一篇」大学生电子设计竞赛,等你来提问。
  8. 全球最神秘的9大葡萄园...
  9. Spring AOP知识点简介
  10. Linux 下 NFS服务的搭建
  11. 博士在读时,把暗恋的师兄变成了老公是种怎样的体验?
  12. Delphi 10.2.3发布
  13. 微信小程序云开发教程-一文学会Json
  14. 为什么你作为一个.NET的程序员工资那么低?
  15. spring-cloud-sleuth 和 分布式链路跟踪系统
  16. 软件工程导论-Gantt图和工程网络图
  17. matlab像素矩阵数字,图像的一种处理方式----灰度矩阵运算(matlab)
  18. 小程序基本标签与语法
  19. Android开发:开源库集合
  20. PhotoShop中的自由变换UI实现

热门文章

  1. IC面试数字电路基础
  2. 【转载】设备\Device\Harddisk0\D 有一个不正确的区块
  3. python处理rtf文档_python读取word文档的方法
  4. KYLO的计算机网络知识总结
  5. f和摄氏度怎么换算_华氏度怎么换算成摄氏度啊?
  6. 如何在matlab坐标轴上输入希腊字符和开根号符号
  7. vue2项目封装百度地图3.0拾取坐标控件
  8. ios 原生android系统下载地址,iOS原生系统自带分享
  9. matlab画直方图并拟合泊松分布,将泊松分布拟合为数据(直方图+直线)
  10. php 根据url获取域名,php 从url中获取域名的实例代码