GBase 8s
其他
文章
南大通用GBase 8s ER 复制:智能大对象(BLOB/CLOB)空间类型同步
发表于2026-09-10 17:47:28269次浏览2个评论
前言
Enterprise Replication(ER)作为 GBase 8s 的数据复制组件,除支持常规行数据复制外,也支持智能大对象 Smart‑BLOB(BLOB、CLOB)字段的数据同步。智能大对象存储于 sbspace 空间,在配置 ER 复制时有特定的使用约束与操作流程。
本文基于 GBase8sV8.8_TL_3.5.1 版本,完整演示 sbspace 空间创建、大对象表构建、ER 复制定义、数据插入验证全流程,帮助大家完成 BLOB/CLOB 字段多节点 ER 复制验证与落地。
1. 智能大对象空间类型同步
说明:智能大对象空间不支持直接插入,需要使用函数filetoblob和filetoclob完成大对象数据写入。
1.1 创建智能大对象 sbspace 空间
三个节点均执行下面操作
cd $GBASEDBTDIR/storage
chown gbasedbt:gbasedbt subspace
chmod 660 sbspace
onspaces -c -S sbspace -p $GBASEDBTDIR/storage/sbspace -o 0 -s 100000 -k 2
onmode -wf SBSPACENAME=sbspace1.2 CLOB 大对象 ER 复制测试
三个节点 testdb 数据库都执行建表语句:
create table t3(id int, col clob, primary key(id)) with CRCOLS put col in(sbspace);在 er01 节点定义 ER 复制并启动复制:
cdr define replicate -C timestamp testdb_t3 "testdb@er01:gbasedbt.t3" "select * from t3" "testdb@er02:gbasedbt.t3" "select * from t3" "testdb@er03:gbasedbt.t3" "select * from t3"
cdr start repl testdb_t3er01 节点准备测试文件,插入 CLOB 大对象数据:
cd /home/llh/gbaseER1
echo 'abc' > clob.txt
dbaccess testdb -
insert into t3 values (1,filetoclob('/home/llh/gbaseER1/clob.txt','server'));查询验证三节点数据同步结果,er01/er02/er03 实例数据完全一致:
select cdrserver,cdrtime,* from t3;输出样例:
cdrserver 1
cdrtime 1757137060
id 1
col abc
1 row(s) retrieved.1.3 BLOB 大对象 ER 复制测试
三个节点 testdb 数据库都执行建表语句:
create table t4(id int, col blob, primary key(id)) with CRCOLS put col in(sbspace);在 er01 节点定义 ER 复制并启动复制:
cdr define replicate -C timestamp testdb_t4 "testdb@er01:gbasedbt.t4" "select * from t4" "testdb@er02:gbasedbt.t4" "select * from t4" "testdb@er03:gbasedbt.t4" "select * from t4"
cdr start repl testdb_t4er01 节点准备测试文件,插入 BLOB 大对象数据:
cd /home/llh/gbaseER1
echo 'blob' > blob.txt
dbaccess testdb -
insert into t4 values (1,filetoblob('/home/llh/gbaseER1/blob.txt','server'));查询三节点数据,数据同步完成:
select cdrserver,cdrtime,* from t4;输出样例:
cdrserver 1
cdrtime 1757137522
id 1
col <SBlob Data>
1 row(s) retrieved.在 er03 节点,使用lotofile函数把 BLOB 字段导出为本地文件,校验内容正确性:
select lotofile(col,'/home/llh/gbaseER3/blobout.txt!','server') from t4;输出:
(expression) /home/llh/gbaseER3/blobout.txt
1 row(s) retrieved.读取导出文件校验内容:
cd /home/llh/gbaseER3
cat blobout.txt文件输出内容:blob
总结:
- ER 复制支持智能大对象 BLOB、CLOB 同步,全部参与复制的节点都需要预先创建 sbspace 智能大对象空间,并且设置
SBSPACENAME参数; - 大对象不能直接 insert 字面量,必须使用
filetoclob、filetoblob从服务端本地文件载入;可使用lotofile将大对象导出到数据库服务器磁盘做内容校验; - 建表需要使用
put col in(sbspace)指定大对象存储位置,同时带上with CRCOLS增加复制列,保障 ER 复制正常工作; - 复制定义选用
‑C timestamp时间戳冲突解析策略,适配多节点 ER 复制场景。
实操中如果出现大对象复制不同步、sbspace 权限报错、大对象导出失败等问题,欢迎社区留言,后续可补充对应的排查思路。
评论
登录后才可以发表评论
GBase用户28017发表于 1个月前
这两种类型用得较。
GBase用户51829发表于 1个月前
CLOB和BLOB应用比较多,已收藏
热门帖子
- 12025-12-01浏览数:183700
- 22023-05-09浏览数:26397
- 42023-09-25浏览数:20060
- 52020-05-11浏览数:18785