FYF
» HerBert
Toggle navigation
FYF
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
HCCDP
实验题
About Me
归档
标签
六、GaussDB数据库日常运维笔记
无
2025-12-01 22:48:04
2
0
0
admin
[TOC] ## 一、数据导入导出 ### 1.1 工具与场景对照表 | 工具 | 适用场景 | Oracle对应工具 | 适用形态 | |----------------------|------------------------------------------|----------------|--------------------| | **gsql** | SQL文本导入导出 | sqlplus | 集中式、分布式 | | **copy to/from** | 查询结果集在线导入导出 | - | 集中式、分布式 | | **gs_dump/gs_restore** | 数据库批量数据导入导出、对象定义导入导出 | expdp/impdp | 集中式、分布式 | | **gs_loader** | Oracle sqlldr兼容场景在线导入 | sqlldr | 当前仅集中式 | | **GDS** | 分布式场景大批量数据导入导出 | - | 仅分布式 | --- ### 1.2 gsql工具 #### 适用场景: - 文本格式对象定义创建(如表结构、函数、索引等) #### 使用方法: ```bash gsql -d db1 -p 16000 -U u1 -W ****** -f /data/table.sql ``` - `-d`:数据库名 - `-p`:端口号 - `-U`:用户名 - `-W`:密码 - `-f`:SQL脚本文件 #### 元命令: - `\o /data/exec.out`:输出结果到文件 - `\i /data/exec.sql`:执行SQL文件 - `\copy t1 from '/data/t1.txt' delimiter ';'`:从文件导入数据 --- ### 1.3 copy命令 #### 适用场景: - 小数据量表文本导入导出 - 查询结果集导出 #### 语法: ```sql -- 导入 COPY t1 FROM '/data/t1.txt' DELIMITER ';'; -- 导出表数据 COPY t1 TO '/data/t1_output.txt' DELIMITER ';'; -- 导出查询结果 COPY (SELECT * FROM t1 WHERE a2=1) TO '/data/t1_output.txt' DELIMITER ';'; ``` #### JDBC中使用CopyManager示例: ```java CopyManager cpManager = new CopyManager((BaseConnection) conn); cpManager.copyIn("COPY metadata FROM STDIN WITH CSV", new FileReader(metaFile)); ``` --- ### 1.4 gs_dump / gs_restore #### 适用场景: - 导出/恢复整个数据库或对象定义 - 支持纯文本、自定义归档、目录归档、tar归档格式 #### 常用命令: ```bash # 导出单表定义(不导数据) gs_dump mydb -U u1 -W ****** -p 16000 -s -t t1 -f /data/t1.sql -F c # 导出整个数据库对象定义 gs_dump mydb -p 16000 -s -f /data/all.sql # 导出所有对象+数据 gs_dump mydb -p 16000 -f /data/all.sql # 恢复(纯文本) gsql -d mydb -p 8000 -f /home/omm/test/MPPDB_backup.sql # 恢复(归档格式) gs_restore backup/MPPDB_backup -p 8000 -d mydb ``` --- ### 1.5 gs_loader #### 适用场景: - 兼容Oracle sqlldr语法 - 支持容错、按行提交、并发导入、列表达式、position定位 #### 使用步骤: 1. 创建用户和错误表 2. 创建目标表 3. 编写控制文件(.ctl) 4. 执行导入 #### 控制文件示例: ``` LOAD DATA truncate into table loader_tbl fields terminated by ',' trailing nullcols ( id integer external, name char(32), dt date ) ``` #### 导入命令: ```bash gs_loader control=loader.ctl data=data.csv db=testdb discard=loader.dis bad=loader.bad errors=5 port=8000 passwd=****** user=load_user ``` #### 高级特性: - **按行提交**:`rows=10000` - **并发导入**:`parallel=8` - **列表达式**:`"trim(name)"` - **position定位**:`position(1:4)` --- ### 1.6 GDS(Gauss Data Service) #### 适用场景: - 分布式场景大批量数据导入导出 - 支持容错、并行导入 #### 原理: - CN只负责任务规划下发,数据导入由DN并行执行 - GDS进程负责数据文件切分和分发 #### 使用步骤: 1. 启动GDS服务: ```bash gds -d /input_data/ -p 10.186.251.85:8808 -H 0.0.0.0/0 -l /log/gds_log.txt -D -t 2 ``` 2. 创建外表: ```sql CREATE FOREIGN TABLE t1_foreign(a1 varchar2(10), a2 int) SERVER gsmpp_server OPTIONS ( location 'gsfs://10.186.251.85:8808/t1.txt', format 'text', encoding 'utf8', delimiter '^', null '' ) PER NODE REJECT LIMIT 'value' WITH error_ftr_sbtest2; ``` 3. 执行导入: ```sql INSERT INTO t1 SELECT * FROM t1_foreign; ``` #### 错误表分析: - `error_ftr_sbtest2`表记录导入错误信息 - 常见错误:编码异常、列缺失、字段超长等 --- ## 二、运维管理工具介绍 ### 2.1 运维管理平台架构 - **统一管控运维平台**:实例管理、容灾管理、日志安全、平台运维 - **智能运维中心**:SQL诊断、全链路监控、索引推荐、执行计划绑定、SQL限流等 - **标准化代理层**:高可靠、低消耗、多层次安全策略 - **开放生态层**:支持公有云、合营云、HCSO、IES、HCS等 --- ### 2.2 平台管理功能 - **用户管理**:增删改查、锁定、重置密码 - **用户组管理**:分组管理、角色分配 - **角色管理**:自定义角色、细粒度权限 - **会话管理**:查看活跃会话、结束会话 --- ### 2.3 实例管理功能 #### 2.3.1 纳管实例 - 主机需先录入主机管理 - 输入管理IP、实例名称、管理员密码 - 提交纳管流程 #### 2.3.2 启停与卸载 - **停止实例**:停止运行 - **启动实例**:启动运行 - **重启实例**:快速重启 - **删除实例**:高危操作,需二次确认(输入"delete") #### 2.3.3 节点扩容 - **适用场景**:性能或存储达到瓶颈 - **扩容单位**:以节点组为单位,仅包含CN、DN - **注意事项**: - 扩容过程有锁表操作,需在业务低峰期进行 - 存在故障节点不允许扩容 - 主备版暂不支持扩容 #### 2.3.4 升级管理 | 升级方式 | 业务中断时间 | 风险 | 用途 | |--------------|--------------|------|--------------------------| | 就地升级 | 约30分钟 | 低 | 常规升级 | | 灰度升级 | 约10秒 | 中 | 新功能上线或修复bug | | 滚动升级 | 10秒(进程切换) | 低 | 独立部署滚动升级 | | 热补丁升级 | 无中断 | 低 | 仅修复产品bug | - **小版本升级**:无需全量备份,参数模板无变更 - **大版本升级**:需全量备份,参数模板有变更 --- ### 2.4 容灾管理 #### 2.4.1 容灾类型 - **流式容灾**:基于流复制的主备容灾 #### 2.4.2 主要功能 - 容灾搭建 - 容灾状态查看(RTO、RPO、日志差距等) - 容灾倒换(主备角色互换) - 灾备升主(备实例提升为主) - 容灾解除(清除容灾关系) --- ### 2.5 监控告警 #### 2.5.1 告警级别 - **紧急告警**:影响服务,需立即处理 - **重要告警**:影响服务质量,需尽快处理 - **次要告警**:未影响服务,需观察处理 - **提示信息**:潜在风险,需关注 #### 2.5.2 监控大盘 - **列表看板**:平铺展示实例CPU、内存等指标 - **趋势看板**:展示单个实例详细监控指标(CPU、内存、磁盘、网络、连接、业务负载等) --- ### 2.6 参数管理 #### 2.6.1 参数模板 - **系统默认模板**:内置推荐配置 - **自定义模板**:用户创建,支持修改、复制、重置、删除 #### 2.6.2 实例参数管理 - 查看当前参数配置 - 修改参数并立即生效 - 支持复制为模板、比较、校准、导出 - 查看7天内参数修改历史 --- ## 三、备份恢复 ### 3.1 备份概述 #### 3.1.1 备份目的 - 防止误操作 - 提供数据冗余,提高可靠性 #### 3.1.2 备份类型 - **全量备份**:备份时刻点的全量数据,可独立恢复 - **差量备份**:仅备份上次全备后的差异数据,需结合全备恢复 - **日志归档**:备份xlog日志,支持任意时间点恢复(PITR) #### 3.1.3 备份方式 - **自动备份**:按策略自动执行,保留期内可恢复任意时间点 - **手动备份**:用户手动触发,永久保存直到手动删除 --- ### 3.2 备份管理 #### 3.2.1 创建备份策略 - **备份周期**:可选择一周内任意组合 - **自动备份开始时间**:设定具体时间 - **差备间隔**:15、30、60、180、360、720、1440分钟 - **备份流控**:控制备份数据上传速率 - **差量预取页面个数**:预读页面数优化 #### 3.2.2 备份容量估算公式 ``` capacity = total * ceil(reserved_cycle/backup_cycle + 1) * ratio + increment * reserved_cycle * (1 + ratio) + manual_num * total * ratio ``` - `total`:业务数据总量(GB) - `reserved_cycle`:备份保留周期(天) - `backup_cycle`:全备周期(天) - `ratio`:压缩比(0.3~0.7) - `increment`:日均数据增量(GB) - `manual_num`:手动备份数量 --- ### 3.3 恢复管理 #### 3.3.1 恢复方式 - **恢复到当前实例**:覆盖当前数据,实例不可用 - **恢复到新实例**:创建新实例并恢复数据 #### 3.3.2 备份删除 - 手动备份可主动删除 - 自动备份超过保留时间自动删除 --- ### 3.4 故障定位 #### 3.4.1 日志查找流程 1. Console获取备份节点实例号 2. 查看`/home/Ruby/log/request_agent.log`,定位备份转发节点 3. 查看`SGAUSSLOG/roach/controller`日志 4. 如有`pollSubprocess ret code abnormal`,查看`SGAUSSLOG/roach/agent`日志 5. 根据报错信息定位具体节点和原因 #### 3.4.2 常见问题 - **集群状态异常**:要求Normal或Degraded状态 - **版本校验失败**:大版本升级后不支持基于旧版本备份的增量备份 --- ## 四、智能运维 ### 4.1 慢SQL诊断 #### 4.1.1 采集配置 - SQL类型:实时、历史、模板SQL - 执行时间范围 - 用户名、数据库名 - 模式(schema) - SQL语句类型 #### 4.1.2 诊断功能 - 可视化统计 - 关键指标趋势分析 - 根因分析与优化建议 --- ### 4.2 索引推荐 #### 4.2.1 功能特点 - 识别冗余/无尾索引 - 推荐高性价比索引 - 基于全量workload代价评估 #### 4.2.2 使用场景 - 单条SQL索引推荐 - 负载级别索引推荐 - 自定义SQL索引推荐 --- ### 4.3 趋势预测 #### 4.3.1 预测指标 - 数据库大小 - 服务器内存使用率 - 磁盘占用率 - 动态内存使用 #### 4.3.2 算法支持 - 线性时序预测(Lasso回归) - 非线性时序预测(ARIMA) - 周期时序预测 --- ### 4.4 会话查杀 #### 4.4.1 查杀方式 - **指定会话查杀**:选择特定会话终止 - **一键查杀空闲会话**:终止所有空闲会话 - **批量查杀**:支持多会话同时终止 #### 4.4.2 增强功能 - 会话查询筛选 - 会话统计 - 持续Kill会话 - 历史会话查询 - 对象锁分析 - 会话阻塞分析 --- ### 4.5 全量SQL洞察 #### 4.5.1 采集特点 - 内存式记录,性能影响<5% - 流式存储至OBS/NAS - 支持数据脱敏 - 支持全链路分析 #### 4.5.2 分析功能 - 实时解析展示 - 历史数据在线分析 - 按traceID或SQLID追踪链路 --- ### 4.6 SQL限流 #### 4.6.1 限流方式 - **SQL限流**:基于SQLID、关键词、作用库限流 - **自治限流**:基于CPU/内存利用率触发限流 #### 4.6.2 限流参数 - 最大并发数 - 限流时长 - 触发条件阈值 --- ### 4.7 SQL PATCH #### 4.7.1 功能特点 - 不改变SQL语义,不进行SQL改写 - 支持SCAN方式、JOIN顺序、JOIN方式、GUC参数等绑定 - 基于unique SQL ID进行调优 #### 4.7.2 使用场景 - 解决执行计划劣化问题 - 避免业务代码修改和重新部署 --- ### 4.8 执行计划绑定 #### 4.8.1 功能特点 - 绑定优秀执行计划,避免性能抖动 - 支持计划大纲(Outline)持久化 - 二级缓存机制实现快速替换 #### 4.8.2 管理功能 - 按时间或代价排序推荐 - 绑定与解绑操作 - 计划状态管理 --- ### 4.9 巡检与报告 #### 4.9.1 巡检类型 - **立即巡检**:立即执行 - **延迟巡检**:定时执行 - **周期巡检**:日检、周检、月检 #### 4.9.2 巡检项目 - **系统资源**:CPU、内存、磁盘、网络 - **实例状态**:组件异常、日志异常 - **数据库资源**:目录占用率、数据库大小 - **数据库性能**:buffer命中率、活跃会话率、TPS、死锁等 - **诊断优化**:长事务、xlog积压、内存使用、GUC参数等 #### 4.9.3 巡检报告 - 实例基本信息 - 巡检结论 - 统计分析与图表展示 - 风险预警与优化建议 --- ### 4.10 异常诊断 #### 4.10.1 诊断类型 - **实例异常诊断**:CN、DN组件异常 - **指标异常诊断**:CPU、内存、磁盘等异常 #### 4.10.2 诊断模型 - **Logical模型**:基于传统逻辑判断 - **Tree模型**:基于决策树算法 #### 4.10.3 关联性分析 - 多指标联动分析 - 发现伴随波动或因果波动 - 给出top10根因及概率 --- ### 4.11 日志分析 #### 4.11.1 日志类型 - **GaussDB日志**:死锁、登录拒绝、ERROR/PANIC、CN/DN断连 - **CMA日志**:节点重启、启动、组件状态异常 - **CMS日志**:节点心跳超时、僵死重启、只读状态 - **系统日志**:IP地址绑定失败 - **GTM日志**:GTM与主节点断连、PANIC日志 - **CORE日志**:Core dump告警 #### 4.11.2 分析功能 - 自定义时间范围查询 - 按节点维度筛选 - 日志指标统计展示 --- ## 五、思考题答案 1. 定时全量备份配置方式:**B. 运维管理平台** 2. gsql copy命令最适合场景:**B. 导出特定查询结果到客户端机器** 3. 全量备份记录的关键信息:**B. LSN(Log Sequence Number)** 4. GDS原理正确描述:**A、C、D** --- ## 六、缩略语 - **CMS**:Cluster Management System - **GDS**:Gauss Data Service - **OBS**:Object Storage Service - **NAS**:Network Attached Storage
上一篇:
五、GaussDB数据库性能调优笔记
下一篇:
关于授权
0
赞
2 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网