Spock 项目使用教程
spock Logical Multi-master Replication 项目地址: https://gitcode.com/gh_mirrors/spock3/spock
1. 项目目录结构及介绍
Spock 是一个为 PostgreSQL 提供多主复制和冲突解决功能的扩展。以下是项目的目录结构及文件介绍:
spock/
├── .github/ # GitHub 工作流和配置文件
├── attic/ # 存档文件
├── compat14/ # 兼容 PostgreSQL 14 的文件
├── compat15/ # 兼容 PostgreSQL 15 的文件
├── compat16/ # 兼容 PostgreSQL 16 的文件
├── compat17/ # 兼容 PostgreSQL 17 的文件
├── expected/ # 测试期望结果文件
├── internals-doc/ # 内部文档
├── patches/ # 补丁文件
├── pgindent/ # PostgreSQL 代码格式化文件
├── spock-bench/ # 性能测试相关文件
├── sql/ # SQL 文件
├── t/ # 测试文件
├── tests/ # 测试脚本和配置文件
├── .gitignore # Git 忽略文件
├── COPYRIGHT # 版权信息文件
├── FAQ.md # 常见问题解答
├── Makefile # Makefile 文件,用于构建项目
├── PGEDGE-COMMUNITY-LICENSE.md # 许可证文件
├── README.md # 项目说明文件
├── pgl-cheat-sheet.txt # PostgreSQL 速查表
├── regress-pg_hba.conf # 测试使用的 PostgreSQL hba 配置文件
├── regress-postgresql.conf # 测试使用的 PostgreSQL 配置文件
├── spock--*.sql # 版本升级 SQL 脚本
├── spock.c # Spock 扩展 C 语言源文件
├── spock.h # Spock 扩展 C 语言头文件
├── spock_apply*.c # Spock 应用程序相关 C 源文件
├── spock_common*.c # Spock 公共功能相关 C 源文件
├── spock_conflict*.c # Spock 冲突解决相关 C 源文件
├── spock_create_subscriber*.c # Spock 创建订阅者相关 C 源文件
├── spock_dependency*.c # Spock 依赖管理相关 C 源文件
├── spock_exception_handler*.c # Spock 异常处理相关 C 源文件
├── spock_executor*.c # Spock 执行器相关 C 源文件
├── spock_failover_slots*.c # Spock 故障转移槽相关 C 源文件
├── spock_fe*.c # Spock 前端相关 C 源文件
├── spock_functions*.c # Spock 功能函数相关 C 源文件
├── spock_jsonb_utils*.c # Spock JSONB 工具相关 C 源文件
├── spock_manager*.c # Spock 管理器相关 C 源文件
├── spock_monitoring*.c # Spock 监控相关 C 源文件
├── spock_node*.c # Spock 节点相关 C 源文件
├── spock_output*.c # Spock 输出相关 C 源文件
└── spock_worker*.c # Spock 工作线程相关 C 源文件
2. 项目的启动文件介绍
Spock 扩展的启动主要是通过 SQL 命令来完成。以下是一个简单的启动步骤:
- 将 Spock 扩展的源代码安装到 PostgreSQL 服务器上。
- 在 PostgreSQL 数据库中创建 Spock 扩展。
CREATE EXTENSION spock;
- 配置和初始化复制集。
-- 创建复制集
SELECT spock.create_replication_set('my_repset');
-- 添加表到复制集
SELECT spock.add_table_to_replication_set('my_repset', 'public.my_table');
- 设置节点角色(提供者和订阅者)。
-- 设置节点为提供者
SELECT spock.set_node_role('provider', 'my_provider_node');
-- 设置节点为订阅者
SELECT spock.set_node_role('subscriber', 'my_subscriber_node');
- 开始复制。
SELECT spock.start_replication('my_repset');
3. 项目的配置文件介绍
Spock 扩展的配置主要通过 PostgreSQL 的配置文件 postgresql.conf
以及相关的 SQL 命令来完成。以下是一些主要的配置项:
spock.enable_ddl_replication
: 是否启用 DDL 语句的自动复制。spock.include_ddl_repset
: 是否包含 DDL 语句在复制集中。spock.allow_ddl_from_functions
: 是否允许从函数中执行 DDL 语句。
这些配置项可以在 postgresql.conf
文件中设置,或者在 PostgreSQL 会话中使用 SET
命令来动态设置。
例如,在 postgresql.conf
中设置启用 DDL 复制:
# 启用 DDL 复制
spock.enable_ddl_replication = on
spock.include_ddl_repset = on
spock.allow_ddl_from_functions = on
确保在修改配置文件后重启 PostgreSQL 服务以使更改生效。
spock Logical Multi-master Replication 项目地址: https://gitcode.com/gh_mirrors/spock3/spock
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考