1. Vertica概述与环境规划
Vertica是一款高性能的分析型数据库管理系统,基于列式存储架构,专为大规模数据分析和商业智能应用设计。Vertica支持MPP(大规模并行处理)架构,可以处理PB级别的数据分析任务。更多学习教程www.fgedu.net.cn
1.1 Vertica版本说明
Vertica目前主要版本为Vertica 12,本教程以Vertica 12为例进行详细讲解。
$ vsql -c “SELECT version();”
version
——————————–
Vertica Analytic Database v12.0.2-0
(1 row)
# 查看详细版本信息
$ admintools -t version_info
Node Status Version
—- —— ——-
v_fgedudb_node0001 UP v12.0.2-0
1.2 环境规划
本次安装环境规划如下:
IP地址:192.168.1.51
数据库名:fgedudb
数据库用户:dbadmin
端口号:5433
集群节点:3节点
磁盘空间规划:
/data/vertica 500GB (数据库数据)
/data/vertica/catalog 100GB (编目数据)
/backup/vertica 200GB (备份空间)
1.3 Vertica核心特性
1. 列式存储:高效的列式存储架构
2. MPP架构:大规模并行处理能力
3. 压缩编码:多种压缩算法,高压缩比
4. 投影优化:自动优化查询性能
5. 实时加载:支持实时数据加载
6. SQL兼容:标准SQL支持
7. 高可用性:K-safety机制保证数据安全
8. 扩展性:支持在线扩展节点
2. 硬件环境要求与检查
在安装Vertica之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com
2.1 最低硬件要求
CPU:4核心x86_64处理器
内存:8GB
磁盘:50GB
推荐配置(生产环境):
CPU:16核心以上
内存:64GB以上
磁盘:1TB以上SSD存储
网络:万兆网卡
集群配置(3节点):
CPU:32核心以上
内存:128GB以上
磁盘:2TB以上SSD存储
网络:万兆网卡
2.2 系统环境检查
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)
# 检查内核版本
# uname -a
Linux fgedudb01 4.18.0-477.10.1.el8_8.x86_64 #1 SMP Fri Apr 4 10:00:00 CST 2026 x86_64 x86_64 x86_64 GNU/Linux
# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 125Gi 4.0Gi 118Gi 256Mi 3.0Gi 120Gi
Swap: 31Gi 0B 31Gi
# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 50G 2.5G 48G 5% /
/dev/sda2 1014M 150M 865M 15% /boot
/dev/mapper/vg_data-lv_data 500G 20G 480G 4% /data
/dev/mapper/vg_backup-lv_backup 200G 10G 190G 5% /backup
# 检查所需软件包
# rpm -qa | grep -E “mcelog|sysstat|chrony”
mcelog-195-1.el8.x86_64
sysstat-11.7.1-6.el8.x86_64
chrony-4.3-1.el8.x86_64
# 安装依赖包
# dnf install -y mcelog sysstat chrony dialog
2.3 内核参数配置
# vi /etc/sysctl.d/99-vertica.conf
# 添加以下参数
# 共享内存参数
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.shmmni = 4096
# 信号量参数
kernel.sem = 250 32000 100 128
# 文件描述符限制
fs.file-max = 655360
# 异步I/O限制
fs.aio-max-nr = 1048576
# 虚拟内存参数
vm.swappiness = 1
vm.dirty_ratio = 15
vm.dirty_background_ratio = 3
vm.overcommit_memory = 0
vm.overcommit_ratio = 95
vm.max_map_count = 655360
vm.min_free_kbytes = 1048576
# 网络参数
net.core.rmem_max = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 262144 4194304
net.ipv4.tcp_wmem = 4096 262144 4194304
# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-vertica.conf
# 输出示例:
kernel.shmmax = 68719476736
kernel.shmall = 16777216
kernel.shmmni = 4096
…
2.4 用户资源限制配置
# vi /etc/security/limits.conf
# 添加以下配置
dbadmin soft nofile 65536
dbadmin hard nofile 65536
dbadmin soft nproc 65536
dbadmin hard nproc 65536
dbadmin soft memlock unlimited
dbadmin hard memlock unlimited
dbadmin soft stack unlimited
dbadmin hard stack unlimited
dbadmin soft as unlimited
dbadmin hard as unlimited
# 配置systemd限制
# vi /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=65536
# 禁用透明大页
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久禁用
# vi /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# chmod +x /etc/rc.d/rc.local
3. Vertica数据库安装步骤
本节详细介绍Vertica 12的安装过程。学习交流加群风哥QQ113257174
3.1 创建用户和目录
# useradd -m -s /bin/bash dbadmin
# 设置密码
# passwd dbadmin
更改用户 dbadmin 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 创建目录结构
# mkdir -p /data/vertica/{data,catalog}
# mkdir -p /backup/vertica
# 设置目录权限
# chown -R dbadmin:dbadmin /data/vertica
# chown -R dbadmin:dbadmin /backup/vertica
# chmod -R 755 /data/vertica
# chmod -R 755 /backup/vertica
# 验证目录权限
# ls -la /data/
总用量 0
drwxr-xr-x. 3 dbadmin dbadmin 20 4月 4 10:00 vertica
3.2 配置SSH免密登录
# su – dbadmin
# 生成SSH密钥
$ ssh-keygen -t rsa -N “” -f ~/.ssh/id_rsa
# 输出示例:
Generating public/private rsa key pair.
Created directory ‘/home/dbadmin/.ssh’.
Your identification has been saved in /home/dbadmin/.ssh/id_rsa.
Your public key has been saved in /home/dbadmin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:abc123… dbadmin@fgedudb01
The key’s randomart image is:
+—[RSA 3072]—-+
| … |
| … |
+—-[SHA256]—–+
# 配置免密登录
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
# 测试SSH连接
$ ssh localhost “echo SSH OK”
# 输出示例:
SSH OK
# 对于集群环境,需要在所有节点之间配置免密登录
$ ssh-copy-id -i ~/.ssh/id_rsa.pub dbadmin@fgedudb02
$ ssh-copy-id -i ~/.ssh/id_rsa.pub dbadmin@fgedudb03
3.3 安装Vertica软件
$ exit
# 下载Vertica安装包
# wget https://www.vertica.com/package/vertica-12.0.2-0.x86_64.RHEL8.rpm
# 输出示例:
–2026-04-04 10:00:00– https://www.vertica.com/package/vertica-12.0.2-0.x86_64.RHEL8.rpm
正在解析主机 www.vertica.com… 192.168.1.100
正在连接 www.vertica.com|192.168.1.100|:443… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:500000000 (477M) [application/x-rpm]
正在保存至: “vertica-12.0.2-0.x86_64.RHEL8.rpm”
100%[======================================>] 500,000,000 50.0MB/s 用时 9.5s
2026-04-04 10:00:10 (50.0 MB/s) – 已保存 “vertica-12.0.2-0.x86_64.RHEL8.rpm”
# 安装Vertica
# rpm -ivh vertica-12.0.2-0.x86_64.RHEL8.rpm
# 输出示例:
警告:vertica-12.0.2-0.x86_64.RHEL8.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID xxxxxx: NOKEY
Verifying… ################################# [100%]
准备中… ################################# [100%]
正在升级/安装…
1:vertica-12.0.2-0 ################################# [100%]
Vertica has been successfully installed in /opt/vertica.
# 验证安装
# ls -la /opt/vertica/
总用量 0
drwxr-xr-x. 2 root root 6 4月 4 10:00 bin
drwxr-xr-x. 2 root root 6 4月 4 10:00 config
drwxr-xr-x. 2 root root 6 4月 4 10:00 examples
drwxr-xr-x. 2 root root 6 4月 4 10:00 include
drwxr-xr-x. 2 root root 6 4月 4 10:00 lib
drwxr-xr-x. 2 root root 6 4月 4 10:00 log
drwxr-xr-x. 2 root root 6 4月 4 10:00 packages
drwxr-xr-x. 2 root root 6 4月 4 10:00 sbin
drwxr-xr-x. 2 root root 6 4月 4 10:00 scripts
drwxr-xr-x. 2 root root 6 4月 4 10:00 share
drwxr-xr-x. 2 root root 6 4月 4 10:00 sprom
3.4 配置Vertica
# /opt/vertica/sbin/install_vertica –hosts 192.168.1.51 –rpm vertica-12.0.2-0.x86_64.RHEL8.rpm –dba-user dbadmin
# 输出示例:
Vertica Analytic Database 12.0.2-0 Installation Tool
>> Validating options…
>> Locating cluster hosts…
192.168.1.51 (fgedudb01)
>> Starting installation tasks.
>> Copying/Unpacking RPM…
>> Installing RPM on each host…
>> Creating/Verifying dbadmin user and group…
>> Validating node and cluster prerequisites…
Prerequisites check passed!
>> Configuring instance…
>> Creating admintools.conf…
>> Configuring default parameters…
>> Installation completed successfully!
Next steps:
1. Create a database using the admintools or vsql.
2. Connect to the database using vsql.
# 验证配置
# su – dbadmin
$ admintools -t list_allnodes
Node Host State
—- —- —–
v_fgedudb_node0001 192.168.1.51 DOWN
3.5 创建数据库
$ /opt/vertica/bin/admintools
# 或使用命令行创建
$ /opt/vertica/bin/admintools -t create_db -d fgedudb -s 192.168.1.51 -p fgedupass
# 输出示例:
Database with 1 or more nodes created successfully.
3.6 启动数据库
$ /opt/vertica/bin/admintools -t start_db -d fgedudb -p fgedupass
# 输出示例:
Info: no password specified, using none
Starting nodes:
v_fgedudb_node0001 (192.168.1.51)
Starting Vertica on all nodes. Please wait, databases with large catalog may take a while to initialize.
Node Status: v_fgedudb_node0001: (DOWN)
Node Status: v_fgedudb_node0001: (DOWN)
Node Status: v_fgedudb_node0001: (INITIALIZING)
Node Status: v_fgedudb_node0001: (UP)
Database fgedudb started successfully
# 验证数据库状态
$ /opt/vertica/bin/admintools -t db_status -s
Database | Node | Host | State
———+——————–+—————+——-
fgedudb | v_fgedudb_node0001 | 192.168.1.51 | UP
# 连接数据库
$ vsql -d fgedudb -U dbadmin -w fgedupass
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
fgedudb=> SELECT version();
version
——————————–
Vertica Analytic Database v12.0.2-0
(1 row)
fgedudb=> \q
4. 数据库参数配置
数据库参数配置是Vertica安装的关键步骤,直接影响数据库性能和稳定性。更多学习教程公众号风哥教程itpux_com
4.1 配置数据库参数
$ vsql -d fgedudb -U dbadmin -w fgedupass
# 查看当前参数
fgedudb=> SHOW ALL;
# 设置内存参数
fgedudb=> ALTER DATABASE fgedudb SET MaxClientSessions = 100;
ALTER DATABASE
fgedudb=> ALTER DATABASE fgedudb SET ResourcePoolSize = 0.8;
ALTER DATABASE
fgedudb=> ALTER DATABASE fgedudb SET TMResourcePoolSize = 0.1;
ALTER DATABASE
# 设置查询参数
fgedudb=> ALTER DATABASE fgedudb SET MaxQueryExecTime = 3600;
ALTER DATABASE
fgedudb=> ALTER DATABASE fgedudb SET QueryBudget = 0;
ALTER DATABASE
# 设置压缩参数
fgedudb=> ALTER DATABASE fgedudb SET CompressNetworkData = 1;
ALTER DATABASE
# 设置安全参数
fgedudb=> ALTER DATABASE fgedudb SET PasswordMinLength = 8;
ALTER DATABASE
fgedudb=> ALTER DATABASE fgedudb SET PasswordMaxAge = 90;
ALTER DATABASE
# 验证参数设置
fgedudb=> SELECT parameter_name, current_value FROM v_catalog.config_parameters
fgedudb-> WHERE parameter_name IN (‘MaxClientSessions’, ‘ResourcePoolSize’, ‘MaxQueryExecTime’);
parameter_name | current_value
———————–+—————
MaxClientSessions | 100
ResourcePoolSize | 0.8
MaxQueryExecTime | 3600
(3 rows)
fgedudb=> \q
4.2 配置资源池
$ vsql -d fgedudb -U dbadmin -w fgedupass
# 查看默认资源池
fgedudb=> SELECT * FROM v_catalog.resource_pools;
pool_name | is_internal | memorysize | maxmemorysize | priority | runtimepriority | runtimeprioritythreshold | queuetimeout | plannedconcurrency | maxconcurrency | singleinitiator
——————–+————-+————+—————+———-+—————–+————————–+————–+——————–+—————-+—————-
general | f | | | 0 | MEDIUM | 2 | 1800 | 16 | -1 | f
sysquery | t | 0M | 0M | -1 | MEDIUM | 2 | 1800 | 4 | -1 | f
sysdata | t | 0M | 0M | -1 | MEDIUM | 2 | 1800 | 4 | -1 | f
wosdata | t | 0M | 0M | -1 | MEDIUM | 2 | 1800 | 4 | -1 | f
tm | t | 0M | 0M | -1 | MEDIUM | 2 | 300 | 16 | -1 | f
refresh | t | 0M | 0M | -1 | MEDIUM | 2 | 1800 | 4 | -1 | f
recovery | t | 0M | 0M | -1 | MEDIUM | 2 | 1800 | 4 | -1 | f
dbd | t | 0M | 0M | -1 | MEDIUM | 2 | 1800 | 4 | -1 | f
(8 rows)
# 创建自定义资源池
fgedudb=> CREATE RESOURCE POOL fgedu_pool
fgedudb-> WITH MEMORYSIZE = ‘2G’
fgedudb-> MAXMEMORYSIZE = ‘4G’
fgedudb-> PRIORITY = HIGH
fgedudb-> RUNTIMEPRIORITY = HIGH
fgedudb-> PLANNEDCONCURRENCY = 8;
CREATE RESOURCE POOL
# 修改默认资源池
fgedudb=> ALTER RESOURCE POOL general
fgedudb-> WITH MEMORYSIZE = ‘4G’
fgedudb-> MAXMEMORYSIZE = ‘8G’
fgedudb-> PLANNEDCONCURRENCY = 16;
ALTER RESOURCE POOL
# 验证资源池配置
fgedudb=> SELECT pool_name, memorysize, maxmemorysize, priority FROM v_catalog.resource_pools WHERE pool_name IN (‘general’, ‘fgedu_pool’);
pool_name | memorysize | maxmemorysize | priority
————+————+—————+———-
general | 4G | 8G | 0
fgedu_pool | 2G | 4G | HIGH
(2 rows)
fgedudb=> \q
5. 存储与投影管理
Vertica使用投影(Projection)作为存储单元,投影是表的物理存储形式。from:www.itpux.com
5.1 创建Schema和表
$ vsql -d fgedudb -U dbadmin -w fgedupass
# 创建Schema
fgedudb=> CREATE SCHEMA fgedu;
CREATE SCHEMA
# 创建表
fgedudb=> CREATE TABLE fgedu.users (
fgedudb(> user_id INT NOT NULL,
fgedudb(> username VARCHAR(50) NOT NULL,
fgedudb(> password VARCHAR(100) NOT NULL,
fgedudb(> email VARCHAR(100),
fgedudb(> created_at TIMESTAMP DEFAULT NOW(),
fgedudb(> updated_at TIMESTAMP DEFAULT NOW(),
fgedudb(> PRIMARY KEY (user_id)
fgedudb(> );
CREATE TABLE
fgedudb=> CREATE TABLE fgedu.orders (
fgedudb(> order_id INT NOT NULL,
fgedudb(> user_id INT NOT NULL,
fgedudb(> order_no VARCHAR(50) NOT NULL,
fgedudb(> amount DECIMAL(12,2) NOT NULL,
fgedudb(> status VARCHAR(20) DEFAULT ‘pending’,
fgedudb(> created_at TIMESTAMP DEFAULT NOW(),
fgedudb(> PRIMARY KEY (order_id)
fgedudb(> );
CREATE TABLE
# 查看表结构
fgedudb=> \d fgedu.users
List of Fields by Table
Schema | Table | Column | Type | Size | Default | Not Null | Primary Key | Foreign Key
——–+——-+————+————–+——+———+———-+————-+————-
fgedu | users | user_id | int | 8 | | t | t |
fgedu | users | username | varchar(50) | 50 | | t | f |
fgedu | users | password | varchar(100) | 100 | | t | f |
fgedu | users | email | varchar(100) | 100 | | f | f |
fgedu | users | created_at | timestamp | 8 | now() | f | f |
fgedu | users | updated_at | timestamp | 8 | now() | f | f |
(6 rows)
# 插入测试数据
fgedudb=> INSERT INTO fgedu.users (user_id, username, password, email) VALUES (1, ‘admin’, ‘password123’, ‘admin@fgedu.net.cn’);
OUTPUT
——–
1
(1 row)
fgedudb=> INSERT INTO fgedu.orders (order_id, user_id, order_no, amount, status) VALUES (1, 1, ‘ORD001’, 100.00, ‘completed’);
OUTPUT
——–
1
(1 row)
fgedudb=> COMMIT;
COMMIT
5.2 管理投影
fgedudb=> SELECT projection_name, anchor_table_name FROM v_catalog.projections WHERE projection_schema = ‘fgedu’;
projection_name | anchor_table_name
———————-+——————-
users_b0 | users
orders_b0 | orders
(2 rows)
# 创建自定义投影
fgedudb=> CREATE PROJECTION fgedu.users_proj (
fgedudb(> user_id ENCODING RLE,
fgedudb(> username ENCODING BLOCKDICT,
fgedudb(> password ENCODING BLOCKDICT,
fgedudb(> email ENCODING BLOCKDICT,
fgedudb(> created_at ENCODING DELTARANGE_COMP,
fgedudb(> updated_at ENCODING DELTARANGE_COMP
fgedudb(> ) AS
fgedudb-> SELECT * FROM fgedu.users
fgedudb-> ORDER BY user_id
fgedudb-> SEGMENTED BY HASH(user_id) ALL NODES;
WARNING 6929: Projection “fgedu.users_proj” is not used by any table
HINT: Use ALTER TABLE .. ALTER PROJECTION .. ACTIVE to activate the projection
CREATE PROJECTION
# 激活投影
fgedudb=> ALTER TABLE fgedu.users ALTER PROJECTION users_proj ACTIVE;
ALTER PROJECTION
# 刷新投影
fgedudb=> SELECT REFRESH(‘fgedu.users_proj’);
REFRESH
——————-
Refresh completed
(1 row)
# 查看投影详情
fgedudb=> SELECT projection_name, ros_count, ros_size_bytes FROM v_catalog.projection_storage WHERE projection_schema = ‘fgedu’;
projection_name | ros_count | ros_size_bytes
—————–+———–+—————-
users_b0 | 1 | 1024
orders_b0 | 1 | 1024
users_proj | 1 | 512
(3 rows)
fgedudb=> \q
5.3 数据压缩与编码
fgedudb=> SELECT column_name, encoding_type FROM v_catalog.column_storage WHERE projection_name = ‘users_proj’;
column_name | encoding_type
————-+—————
user_id | RLE
username | BLOCKDICT
password | BLOCKDICT
email | BLOCKDICT
created_at | DELTARANGE_COMP
updated_at | DELTARANGE_COMP
(6 rows)
# 常用编码类型说明:
# RLE: 游程编码,适合重复值多的列
# BLOCKDICT: 块字典编码,适合基数较低的列
# DELTARANGE_COMP: 增量范围压缩,适合时间序列数据
# GZIP: GZIP压缩,适合文本数据
# BZIP_COMP: BZIP压缩,高压缩比
# 分析表统计信息
fgedudb=> SELECT ANALYZE_STATISTICS(‘fgedu.users’);
ANALYZE_STATISTICS
——————–
0
(1 row)
# 查看压缩效果
fgedudb=> SELECT projection_name,
fgedudb-> ros_count,
fgedudb-> ros_size_bytes / 1024.0 / 1024.0 AS size_mb,
fgedudb-> total_row_count
fgedudb-> FROM v_catalog.projection_storage
fgedudb-> WHERE projection_schema = ‘fgedu’;
projection_name | ros_count | size_mb | total_row_count
—————–+———–+——————–+—————–
users_b0 | 1 | 0.0009765625000000 | 1
orders_b0 | 1 | 0.0009765625000000 | 1
users_proj | 1 | 0.0004882812500000 | 1
(3 rows)
fgedudb=> \q
6. 网络连接配置
网络连接配置是客户端访问数据库的关键,需要正确配置监听端口和连接方式。更多学习教程www.fgedu.net.cn
6.1 配置网络监听
$ netstat -tlnp | grep vertica
tcp 0 0 0.0.0.0:5433 0.0.0.0:* LISTEN 12345/vertica
tcp 0 0 0.0.0.0:5434 0.0.0.0:* LISTEN 12345/vertica
# 查看Vertica端口配置
$ vsql -d fgedudb -U dbadmin -w fgedupass -c “SELECT parameter_name, current_value FROM v_catalog.config_parameters WHERE parameter_name = ‘PortInfo’;”
parameter_name | current_value
—————-+—————
PortInfo | 5433
(1 row)
# 配置防火墙
# firewall-cmd –permanent –add-port=5433/tcp
success
# firewall-cmd –permanent –add-port=5434/tcp
success
# firewall-cmd –reload
success
6.2 配置客户端连接
$ vsql -d fgedudb -U dbadmin -w fgedupass
# 远程连接
$ vsql -h 192.168.1.51 -d fgedudb -U dbadmin -w fgedupass
Welcome to vsql, the Vertica Analytic Database interactive terminal.
Type: \h or \? for help with vsql commands
\g or terminate with semicolon to execute query
\q to quit
fgedudb=> SELECT * FROM fgedu.users;
user_id | username | password | email | created_at | updated_at
———+———-+————-+——————–+———————+———————
1 | admin | password123 | admin@fgedu.net.cn | 2026-04-04 10:00:00 | 2026-04-04 10:00:00
(1 row)
fgedudb=> \q
# 使用JDBC连接
# jdbc:vertica://192.168.1.51:5433/fgedudb
# 使用ODBC连接
# Driver={Vertica};Server=192.168.1.51;Port=5433;Database=fgedudb;UID=dbadmin;PWD=fgedupass
7. 备份恢复配置
备份恢复是数据库管理的重要环节,Vertica提供了vbr工具进行备份恢复。学习交流加群风哥微信: itpux-com
7.1 配置备份
$ vi /home/dbadmin/backup_config.ini
[misc]
snapshotName = fgedudb_backup
tempDir = /tmp/vbr
enableFreeSpaceCheck = true
[database]
dbName = fgedudb
dbUser = dbadmin
dbPromptForPassword = False
dbPassword = fgedupass
[transmission]
type = rsync
[Mapping]
v_fgedudb_node0001 = 192.168.1.51:/backup/vertica/
# 创建备份目录
$ mkdir -p /backup/vertica
$ chmod 750 /backup/vertica
# 执行全备份
$ vbr -t backup –config-file /home/dbadmin/backup_config.ini
# 输出示例:
Starting backup of database fgedudb.
Snapshot created: fgedudb_backup_20260404_100000
Copying data to backup location…
Backup completed successfully.
# 查看备份
$ vbr -t list –config-file /home/dbadmin/backup_config.ini
# 输出示例:
snapshot | backup_host | backup_dir
——————+————–+——————-
fgedudb_backup_20260404_100000 | 192.168.1.51 | /backup/vertica/
7.2 恢复数据库
$ vbr -t restore –config-file /home/dbadmin/backup_config.ini
# 输出示例:
Starting restore of database fgedudb.
Restoring from snapshot: fgedudb_backup_20260404_100000
Copying data from backup location…
Restore completed successfully.
# 验证恢复
$ vsql -d fgedudb -U dbadmin -w fgedupass -c “SELECT * FROM fgedu.users;”
user_id | username | password | email | created_at | updated_at
———+———-+————-+——————–+———————+———————
1 | admin | password123 | admin@fgedu.net.cn | 2026-04-04 10:00:00 | 2026-04-04 10:00:00
(1 row)
7.3 自动备份脚本
$ vi /home/dbadmin/scripts/vertica_backup.sh
#!/bin/bash
export PATH=/opt/vertica/bin:$PATH
BACKUP_CONFIG=/home/dbadmin/backup_config.ini
LOG_FILE=/home/dbadmin/logs/backup.log
DATE=$(date ‘+%Y-%m-%d %H:%M:%S’)
echo “=== Backup started at $DATE ===” >> $LOG_FILE
vbr -t backup –config-file $BACKUP_CONFIG >> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo “Backup completed successfully” >> $LOG_FILE
else
echo “Backup failed” >> $LOG_FILE
fi
echo “=== Backup finished at $(date) ===” >> $LOG_FILE
echo “” >> $LOG_FILE
# 设置脚本权限
$ chmod +x /home/dbadmin/scripts/vertica_backup.sh
# 创建日志目录
$ mkdir -p /home/dbadmin/logs
# 配置定时任务
$ crontab -e
# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /home/dbadmin/scripts/vertica_backup.sh
# 验证定时任务
$ crontab -l
0 2 * * * /home/dbadmin/scripts/vertica_backup.sh
8. 升级与迁移
数据库升级和迁移是运维工作中的重要环节,需要仔细规划和执行。更多学习教程公众号风哥教程itpux_com
8.1 版本升级
$ vsql -c “SELECT version();”
version
——————————–
Vertica Analytic Database v12.0.2-0
(1 row)
# 执行完整备份
$ vbr -t backup –config-file /home/dbadmin/backup_config.ini
# 停止数据库
$ admintools -t stop_db -d fgedudb
# 安装新版本
# rpm -Uvh vertica-12.0.3-0.x86_64.RHEL8.rpm
# 升级数据库
$ admintools -t start_db -d fgedudb –upgrade
# 输出示例:
Starting upgrade of database fgedudb…
Upgrading catalog…
Upgrade completed successfully.
# 验证版本
$ vsql -c “SELECT version();”
version
——————————–
Vertica Analytic Database v12.0.3-0
(1 row)
8.2 数据迁移
$ vsql -d fgedudb -U dbadmin -w fgedupass
fgedudb=> COPY fgedu.users FROM ‘/data/import/users.csv’ DELIMITER ‘,’ SKIP 1;
Rows Loaded
————-
1000
(1 row)
fgedudb=> COMMIT;
COMMIT
# 使用EXPORT命令导出数据
fgedudb=> EXPORT TO CSV(‘/data/export/users.csv’) AS SELECT * FROM fgedu.users;
Rows Exported
—————
1001
(1 row)
# 使用vbr迁移数据库
$ vbr -t copycluster –config-file /home/dbadmin/migrate_config.ini
# 输出示例:
Starting cluster copy…
Copying data to target cluster…
Cluster copy completed successfully.
9. 生产环境实战案例
本节提供一个完整的生产环境配置案例,帮助读者更好地理解Vertica的实际应用。from:www.itpux.com
9.1 创建分区表
$ vsql -d fgedudb -U dbadmin -w fgedupass
# 创建分区表
fgedudb=> CREATE TABLE fgedu.order_details (
fgedudb(> order_id INT NOT NULL,
fgedudb(> product_id INT NOT NULL,
fgedudb(> quantity INT NOT NULL,
fgedudb(> price DECIMAL(12,2) NOT NULL,
fgedudb(> created_at DATE NOT NULL
fgedudb(> )
fgedudb-> PARTITION BY DATE(created_at);
CREATE TABLE
# 插入测试数据
fgedudb=> INSERT INTO fgedu.order_details VALUES (1, 101, 2, 50.00, ‘2026-04-01’);
OUTPUT
——–
1
(1 row)
fgedudb=> INSERT INTO fgedu.order_details VALUES (1, 102, 1, 100.00, ‘2026-04-02’);
OUTPUT
——–
1
(1 row)
fgedudb=> COMMIT;
COMMIT
# 查看分区信息
fgedudb=> SELECT partition_key, ros_count FROM v_catalog.partitions WHERE table_schema = ‘fgedu’ AND table_name = ‘order_details’;
partition_key | ros_count
—————+———–
2026-04-01 | 1
2026-04-02 | 1
(2 rows)
# 删除旧分区
fgedudb=> SELECT DROP_PARTITION(‘fgedu.order_details’, ‘2026-03-01’);
DROP_PARTITION
—————-
0
(1 row)
fgedudb=> \q
9.2 性能监控
$ vsql -d fgedudb -U dbadmin -w fgedupass
fgedudb=> SELECT node_name,
fgedudb-> total_memory_usage_mb,
fgedudb-> total_cpu_usage_percent
fgedudb-> FROM v_monitor.resource_usage;
node_name | total_memory_usage_mb | total_cpu_usage_percent
——————–+———————–+————————-
v_fgedudb_node0001 | 2048 | 15.5
(1 row)
# 查看查询性能
fgedudb=> SELECT query,
fgedudb-> execution_time_ms,
fgedudb-> memory_allocated_bytes
fgedudb-> FROM v_monitor.query_requests
fgedudb-> ORDER BY execution_time_ms DESC
fgedudb-> LIMIT 5;
query | execution_time_ms | memory_allocated_bytes
——————————–+——————-+———————–
SELECT * FROM fgedu.users | 10 | 1048576
SELECT * FROM fgedu.orders | 5 | 524288
(2 rows)
# 查看投影状态
fgedudb=> SELECT projection_name,
fgedudb-> ros_count,
fgedudb-> delete_vector_count
fgedudb-> FROM v_catalog.projection_storage
fgedudb-> WHERE projection_schema = ‘fgedu’;
projection_name | ros_count | delete_vector_count
—————–+———–+———————
users_b0 | 1 | 0
orders_b0 | 1 | 0
users_proj | 1 | 0
(3 rows)
fgedudb=> \q
9.3 集群管理
$ admintools -t list_allnodes
Node | Host | State | Version
——————–+—————+——-+———
v_fgedudb_node0001 | 192.168.1.51 | UP | v12.0.2-0
# 添加节点(集群扩展)
$ admintools -t add_node -d fgedudb -s 192.168.1.52
# 输出示例:
Adding node v_fgedudb_node0002 to database fgedudb…
Rebalancing data…
Node added successfully.
# 删除节点
$ admintools -t remove_node -d fgedudb -s 192.168.1.52
# 输出示例:
Removing node v_fgedudb_node0002 from database fgedudb…
Rebalancing data…
Node removed successfully.
# 查看数据库状态
$ admintools -t db_status -s
Database | Node | Host | State
———+——————–+—————+——-
fgedudb | v_fgedudb_node0001 | 192.168.1.51 | UP
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
