GaussDB 备份恢复与主从搭建(完整版)
---
课程目标
- [ ] 熟悉 GaussDB 基本操作:创建数据库、表、索引
- [ ] 熟悉 GaussDB 数据类型与约束
- [ ] 掌握 GaussDB SQL 基础:增删改查
- [ ] 掌握 GaussDB 备份恢复策略(物理备份、逻辑备份)
- [ ] 了解 GaussDB 高可用机制简介
---
第一部分:备份恢复
---
GaussDB 备份恢复分为两种方式:
| 备份类型 | 核心原理 | 适用场景 | 恢复速度 | 跨版本兼容 |
|---|---|---|---|---|
| 逻辑备份 | 备份 SQL 语句 | 小数据量、跨版本迁移 | 较慢 | 兼容 |
| 物理备份 | 备份数据文件 | 大数据量、生产环境 | 快 | 不兼容 |
一、逻辑备份及恢复
逻辑备份通过 gs_dump、gs_dumpall 工具导出 SQL 脚本或二进制文件,必须通过 gs_restore 恢复二进制格式的备份数据。
适用场景: 小数据量备份、跨版本迁移、数据库对象导出。
---
1.1 gs_dump(备份单个数据库)
备份指定数据库的所有对象(表、索引、存储过程等),生成 SQL 脚本或自定义格式文件,支持增量备份、指定表备份。
基本备份操作
# 切换到 gauss 用户
[root@node2 /root]# su - gauss
# 创建存储备份数据的目录
[gauss@node2 /gauss]$ mkdir bak
# 备份指定的数据表(库 --> 表)
# 备份 school 库下面的 student 表
[gauss@node2 /gauss]$ gs_dump -f /gauss/bak/school_student.sql school -t student
# 备份数据库中多张表
[gauss@node2 /gauss]$ gs_dump -f /gauss/bak/school_student_class.sql school -t student -t class
# 备份指定的数据库
[gauss@node2 /gauss]$ gs_dump -f /gauss/bak/school.sql school
# 备份指定的数据库,并在 SQL 文件名中添加日期
[gauss@node2 /gauss]$ gs_dump -f /gauss/bak/school-$(date +%F).sql school
# 备份出的数据为二进制格式(推荐,恢复速度更快)
[gauss@node2 /gauss/backup]$ gs_dump -f /gauss/backup/school.dump -Fc school命令作用:
- 创建目录
bak;父目录必须已存在,若同名目录已存在则命令会报错。
执行结果:
- 成功后目标目录会存在;可用
ls -ld 目录名查看目录权限和属主。
关键参数:
注意事项:
注意事项:
---
**注意事项:**
注意事项:
-----------+-------+----------+---------+-------+------------------- | | | | | gauss=CTc/gauss | | | | | gauss=CTc/gauss
**node2(主服务器)执行备份:**
注意事项:
注意事项:
----+-------
1 | aaa
2 | bbb
3 | ccc
4 | ddd| 模式 | 参数 | 说明 |
|---|---|---|
| 全量备份 | -b full | 备份所有数据文件,备份时间长,占用空间大 |
| 增量备份 | -b ptrack | 仅备份自上次备份以来变化的数据块,速度快,占用空间小 |
| 对比项 | gs_basebackup | gs_probackup |
|---|---|---|
| 增量备份 | 不支持 | 支持(ptrack 模式) |
| 差异备份 | 不支持 | 支持 |
| 时间点恢复(PITR) | 不支持 | 支持 |
| 备份管理 | 手动管理文件 | 内置备份目录管理 |
| 适用场景 | 从库初始化、简单备份 | 生产环境、大数据量备份 |
---
---
---
| 角色 | 主机名 | IP 地址 |
|---|---|---|
| 主节点 | node2 | 192.168.88.162 |
| 从节点 | node3 | 192.168.88.163 |
**注意事项:**
---
执行过程(交互式):
...---
datanode1: datanode2:
| 命令 | 说明 |
|---|
| 操作 | 单机模式 | 集群模式 |
|---|---|---|
| 启动 | gs_ctl start -D ... | gs_om -t start |
| 停止 | gs_ctl stop -D ... | gs_om -t stop |
| 状态 | gs_ctl status -D ... | gs_om -t status --detail |
| 重启 | gs_ctl restart -D ... | gs_om -t restart |
| 默认端口 | 5432 | 15400 |
| 连接命令 | gsql -d postgres -r | gsql -d postgres -p 15400 -r |
---
---
| 工具 | 类型 | 备份范围 | 增量备份 | 恢复方式 | 适用场景 |
|---|---|---|---|---|---|
| gs_dump | 逻辑 | 单个数据库 | 不支持 | gsql / gs_restore | 小数据量、跨版本迁移 |
| gs_dumpall | 逻辑 | 所有数据库 | 不支持 | gsql | 全量逻辑备份 |
| gs_basebackup | 物理 | 整个实例 | 不支持 | 直接替换文件 | 从库初始化、简单备份 |
| gs_probackup | 物理 | 整个实例 | 支持 | gs_probackup restore | 生产环境、大数据量 |
| 特性 | 说明 |
|---|---|
| 架构模式 | 一主一从(Primary-Standby) |
| 数据同步 | 支持同步/异步复制(通过 syncNum 控制) |
| 默认端口 | 集群 15400(单机 5432) |
| 管理工具 | gs_om(集群管理)、gs_ctl(单机管理) |
| 高可用 | 主节点故障时可手动或自动切换到从节点 |