GaussDB使用指南

目录

[1. GaussDB 概述](#1. GaussDB 概述)

[1.1 GaussDB 简介](#1.1 GaussDB 简介)

[1.2 核心技术架构](#1.2 核心技术架构)

[1.3 适用场景与行业案例](#1.3 适用场景与行业案例)

[2. GaussDB 安装与部署](#2. GaussDB 安装与部署)

[2.1 环境准备与依赖检查](#2.1 环境准备与依赖检查)

[2.2 单机版安装(Linux)](#2.2 单机版安装(Linux))

[2.3 分布式集群部署](#2.3 分布式集群部署)

[3. GaussDB 基础操作与语法](#3. GaussDB 基础操作与语法)

[3.1 数据库连接与用户管理](#3.1 数据库连接与用户管理)

[3.2 DDL 语句示例](#3.2 DDL 语句示例)

[3.3 DML 语句](#3.3 DML 语句)

[3.4 复杂查询](#3.4 复杂查询)

[3.5 事务控制](#3.5 事务控制)

[4. GaussDB 运维管理](#4. GaussDB 运维管理)

[4.1 性能监控](#4.1 性能监控)

[4.2 备份与恢复](#4.2 备份与恢复)

[5. GaussDB 高级功能](#5. GaussDB 高级功能)

[5.1 分布式事务](#5.1 分布式事务)

[5.2 高可用方案](#5.2 高可用方案)

[6. 实战案例:电商高并发场景](#6. 实战案例:电商高并发场景)

[7. 常见问题与解决方案](#7. 常见问题与解决方案)

[7.1 连接数不足](#7.1 连接数不足)

[7.2 查询性能下降](#7.2 查询性能下降)

附录


1. GaussDB 概述

1.1 GaussDB 简介

GaussDB 是华为基于开源 PostgreSQL 开发的企业级分布式数据库,支持 OLTP(在线事务处理)和 OLAP(在线分析处理)混合负载。其核心特性包括:

  • 高可用性:多副本自动切换,RPO=0,RTO<10秒。

  • 弹性扩展:支持在线动态扩缩容,数据自动重分布。

  • 安全合规:支持国密算法、数据脱敏、审计日志。

1.2 核心技术架构

1.2.1 分布式存储引擎

  • 数据分片(Sharding):通过哈希、范围、列表等方式将数据分布到多个节点。

    sql 复制代码
    -- 创建分片表(HASH分片)
    CREATE TABLE user_orders (
      order_id BIGINT PRIMARY KEY,
      user_id INT,
      amount DECIMAL(10,2)
    ) DISTRIBUTE BY HASH(user_id);
  • 多副本机制:每个分片默认3副本,通过 RAFT 协议保证一致性。

1.2.2 HTAP 混合引擎

  • 行存储:适用于高并发事务(如订单处理)。

  • 列存储:适用于分析查询(如报表统计)。

  • 内存引擎:支持实时数据处理(如风控系统)。

1.2.3 AI 增强优化器

  • 基于历史查询统计自动优化执行计划。

  • 支持 SQL 性能自动调优(如索引推荐)。

1.3 适用场景与行业案例

案例 1:某银行核心交易系统

  • 需求:日均交易量 1 亿笔,要求 7x24 小时高可用。

  • 方案

    • 使用分布式行存表处理实时交易。

    • 列存表用于每日对账分析。

    • 两地三中心部署,跨城同步延迟 <2 秒。

案例 2:某智慧城市物联网平台

  • 需求:管理 1000 万+ 设备,存储 5 年历史数据。

  • 方案

    • 使用时序表(Timeseries Engine)存储设备数据。

    • 数据按时间分片(每日一个分片)。

    • 压缩率高达 10:1,节省存储成本。


2. GaussDB 安装与部署

2.1 环境准备与依赖检查

硬件要求

组件 最低配置 推荐配置
CPU 4 核(x86_64) 16 核(鲲鹏 920)
内存 16GB 64GB
磁盘 200GB HDD 1TB SSD(RAID 10)

软件依赖

bash 复制代码
# CentOS 7.6+ 示例
sudo yum install -y libaio-devel openssl-devel python3
sudo systemctl disable firewalld  # 关闭防火墙
2.2 单机版安装(Linux)

步骤 1:下载安装包

华为开源镜像站 获取安装包:

bash 复制代码
wget https://mirrors.huaweicloud.com/gaussdb/5.0.1/GaussDB-5.0.1-Linux-x86_64.tar.gz

步骤 2:解压与初始化

bash 复制代码
tar -xzf GaussDB-5.0.1-Linux-x86_64.tar.gz
cd GaussDB/bin
./gs_initdb -D /data/gaussdb --nodename=primary --encoding=UTF-8

关键参数说明

  • -D:数据目录路径。

  • --nodename:节点名称(单机版默认为 primary)。

步骤 3:启动服务

bash 复制代码
./gs_ctl start -D /data/gaussdb -l /var/log/gaussdb/start.log

日志验证

bash 复制代码
tail -f /var/log/gaussdb/start.log  # 查看 "database system is ready" 表示启动成功
2.3 分布式集群部署

配置文件 cluster_config.xml

XML 复制代码
<ROOT>
  <CLUSTER>
    <PARAM name="clusterName" value="gauss_cluster"/>
    <PARAM name="nodeNames" value="node1,node2,node3"/>
    <PARAM name="backIp1s" value="192.168.1.101,192.168.1.102,192.168.1.103"/>
    <PARAM name="gaussdbAppPath" value="/opt/gaussdb"/>
    <PARAM name="gaussdbLogPath" value="/var/log/gaussdb"/>
  </CLUSTER>
</ROOT>

部署命令

bash 复制代码
./gs_om -t install --cluster-config cluster_config.xml

验证集群状态

bash 复制代码
./gs_om -t status  # 输出所有节点状态为 "Normal"

3. GaussDB 基础操作与语法

3.1 数据库连接与用户管理

连接数据库

bash 复制代码
gsql -d postgres -U gaussdb -W -h 127.0.0.1 -p 5432

参数说明

  • -d:数据库名(默认 postgres)。

  • -U:用户名(安装时创建的初始用户)。

创建只读用户

sql 复制代码
CREATE USER analyst WITH PASSWORD 'Analyst@123';
GRANT CONNECT ON DATABASE postgres TO analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst;
3.2 DDL 语句示例

创建分区表

sql 复制代码
CREATE TABLE sensor_data (
  sensor_id INT,
  log_time TIMESTAMP,
  temperature FLOAT
) PARTITION BY RANGE (log_time)
(
  PARTITION p2023_01 VALUES LESS THAN ('2023-02-01'),
  PARTITION p2023_02 VALUES LESS THAN ('2023-03-01')
);

参数优化示例

sql 复制代码
ALTER TABLE sensor_data SET (fillfactor=70);  -- 减少页分裂
3.3 DML 语句

批量插入数据

sql 复制代码
INSERT INTO user_orders 
VALUES 
(1, 1001, 99.99),
(2, 1002, 199.99)
DISTRIBUTE BY HASH(user_id);  -- 显式指定分片键

更新带条件的数据

sql 复制代码
UPDATE user_orders 
SET amount = amount * 0.9 
WHERE user_id IN (SELECT user_id FROM vip_users);
3.4 复杂查询

窗口函数示例

sql 复制代码
SELECT 
  user_id,
  order_date,
  amount,
  SUM(amount) OVER (PARTITION BY user_id ORDER BY order_date) AS cumulative_sum
FROM user_orders;
3.5 事务控制

显式事务示例

sql 复制代码
BEGIN;
SAVEPOINT sp1;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
-- 若后续操作失败可回滚到保存点
ROLLBACK TO sp1;
COMMIT;

4. GaussDB 运维管理

4.1 性能监控

查看实时会话

sql 复制代码
SELECT * FROM pg_stat_activity WHERE state = 'active';

监控工具 gs_checkperf

sql 复制代码
gs_checkperf -i PMK -U gaussdb  # 检查 CPU/内存/磁盘/网络
4.2 备份与恢复

逻辑备份

bash 复制代码
gs_dump -U gaussdb -d mydb -F c -f mydb.dmp  # 自定义格式

物理备份

bash 复制代码
gs_basebackup -D /backup/gaussdb -h 192.168.1.101 -p 5432 -U replica

5. GaussDB 高级功能

5.1 分布式事务

两阶段提交(2PC)流程

  1. Prepare 阶段:协调者询问所有节点是否可以提交。

  2. Commit 阶段:所有节点确认后提交。

代码示例

sql 复制代码
-- 自动启用 2PC(默认配置)
BEGIN;
INSERT INTO node1_table VALUES (1);
INSERT INTO node2_table VALUES (2);
COMMIT;  -- 若任一节点失败则自动回滚
5.2 高可用方案

同城双活架构

  • 主备节点:数据实时同步,故障切换时间 <10 秒。

  • 仲裁节点:防止脑裂,需至少 3 个节点。

配置流复制

sql 复制代码
ALTER SYSTEM SET synchronous_commit = on;
SELECT pg_reload_conf();

6. 实战案例:电商高并发场景

场景需求

  • 支持秒杀活动,峰值 QPS 50,000。

  • 订单数据分库分表,避免单点瓶颈。

GaussDB 方案

  1. 分片设计

    sql 复制代码
    CREATE TABLE orders (
      order_id BIGINT PRIMARY KEY,
      user_id INT,
      item_id INT
    ) DISTRIBUTE BY HASH(user_id);  -- 按用户 ID 分片
  2. 缓存加速

    sql 复制代码
    CREATE EXTENSION redis_fdw;  -- 使用 Redis 缓存热点数据
  3. 限流策略

    sql 复制代码
    ALTER USER app_user SET max_connections = 100;  -- 限制用户连接数

7. 常见问题与解决方案

7.1 连接数不足

报错信息

sql 复制代码
FATAL: remaining connection slots are reserved for non-replication superuser connections

解决方案

sql 复制代码
-- 临时增加连接数
ALTER SYSTEM SET max_connections = 500;
SELECT pg_reload_conf();

-- 长期优化:使用连接池(如 pgBouncer)
7.2 查询性能下降

分析步骤

  1. 检查慢查询日志:

    sql 复制代码
    ALTER SYSTEM SET log_min_duration_statement = '1000ms';
  2. 使用 EXPLAIN ANALYZE 分析执行计划:

    sql 复制代码
    EXPLAIN ANALYZE SELECT * FROM large_table WHERE create_date > '2023-01-01';
  3. 添加索引优化:

    sql 复制代码
    CREATE INDEX idx_create_date ON large_table(create_date);

附录

  • 官方文档成长地图_云数据库 GaussDB_华为云

  • 学习资源

    • 《GaussDB 性能调优指南》

    • 《分布式数据库原理与实践》

  • 工具包下载

    • 数据库监控脚本:gaussdb_monitor_toolkit.zip

    • 压力测试工具:benchmark_kit.tar.gz

相关推荐
Gauss松鼠会4 天前
GaussDB回调机制深度实践:从事件驱动到系统集成
开发语言·javascript·数据库·sql·gaussdb
Gauss松鼠会5 天前
GaussDB Plan Hint调优实战:从执行计划控制到性能优化
数据库·sql·性能优化·database·gaussdb
Gauss松鼠会7 天前
GaussDB性能调优:从根因分析到优化落地
数据库·性能优化·database·gaussdb
Mr.洛 白10 天前
OpenEuler/CentOS一键部署OpenGauss数据库教程(脚本+视频)
数据库·opengauss·gaussdb·国产数据库安装·安装脚本
爱的叹息10 天前
华为高斯(GaussDB)数据库中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格
数据库·哈希算法·gaussdb
爱的叹息13 天前
华为高斯(GaussDB) 集中式数据库 的开发技术手册,涵盖核心功能、开发流程、优化技巧及常见问题解决方案
数据库·gaussdb
runfarther15 天前
华为GaussDB数据库的手动备份与还原操作介绍
gaussdb
笑远20 天前
GaussDB 内存结构详解
数据库·gaussdb
笑远21 天前
GaussDB 主从复制原理详解
数据库·gaussdb