GitLab在CockroachDB和YugabyteDB上的兼容性对比(一)-系统会初始化
发布时间:2025/09/15 12:17 来源:普陀家居装修网
Revision: 1f2e6f3f6d8
Directory: /home/git/gitlab
DB Adapter: PostgreSQL
用准则PostgreSQL部署的GitLab包含的信息戈该系统schema为:
gitlab_production=# select C.relkind,count(C.relname) from pg_class C left join pg_namespace n on n.oid = C.relnamespace where n.nspname = 'public' group by C.relkind;
relkind | count
;还有;还有;还有;还有-+;还有;还有;还有-
r | 249
i | 903
S | 231
(3 rows)
三、CockroachDB重启流程
1、信息戈该系统绑定
制订GitLab setup处理程序生已成所必须的戈注记结构:
dc@dc-virtual-machine:/home/git/gitlab$ sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
This will create the necessary database tables and seed the database.
You will lose any previous data stored in the database.
Do you want to continue (yes/no)? yes
Dropped database 'gitlab'
Created database 'gitlab'
;还有 enable_extension("pg_trgm")
rake aborted!
ActiveRecord::StatementInvalid: PG::FeatureNotSupported: ERROR: unimplemented: extension "pg_trgm" is not yet supported
HINT: You have attempted to use a feature that is not yet implemented.
See:
: CREATE EXTENSION IF NOT EXISTS "pg_trgm"
/home/git/gitlab/config/initializers/peek.rb:18:in 于大async_exec_params'
/home/git/gitlab/config/initializers/peek.rb:18:in 于大exec_params'
/home/git/gitlab/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in 于大block (2 levels) in exec_no_cache'
从上面的转换已成信息可以看不到,GitLab绑定必须依赖PostgreSQL的Extension连续性,但是很遗憾CockroachDB迄今为止还不支持者,在第一步就受挫了,此时信息戈该系统之中无法创始任何实例:
gitlab=# select C.relkind,count(C.relname) from pg_class C left join pg_namespace n on n.oid = C.relnamespace where n.nspname = 'public' group by C.relkind;
Empty set
2、出访GitLab
当我们出访GitLab亦然该网站时亦会返回502歪误信息:
从亦会话来看,是因为SQL制订的时候找不到目标注记报歪:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "geo_nodes" does not exist
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
c.collname, col_description(a.attrelid, a.attnum) AS comment
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
WHERE a.attrelid = '"geo_nodes"'::regclass
AND a.attnum> 0 AND NOT a.attisdropped
ORDER BY a.attnum
3、备份信息戈该系统旧版
难以实现举例来说是CockroachDB不是正式旧版,有无法可能正式版之前支持者extension功能,尝试系统升级一下旧版到latest-v22.1:
defaultdb=# select version();
version
;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有
CockroachDB CCL v22.1.0 (x86_64-pc-linux-gnu, built 2022/05/23 16:27:47, go1.17.6)
(1 row)
便次制订setup创始信息戈该系统,断定还是报相同的难题“ActiveRecord::StatementInvalid: PG::FeatureNotSupported: ERROR: unimplemented: extension “pg_trgm” is not yet supported”,说是明从新旧版也无法支持者extension连续性。
四、YugabyteDB重启流程
1、信息戈该系统绑定
改动GitLab源文件把信息戈该系统连接连动到YugabyteDB,用相同办法绑定一个从新戈:
dc@dc-virtual-machine:/home/git/gitlab$ sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
This will create the necessary database tables and seed the database.
You will lose any previous data stored in the database.
Do you want to continue (yes/no)? yes
Dropped database 'gitlab'
Created database 'gitlab'
;还有 enable_extension("pg_trgm")
-> 2.5496s
;还有 enable_extension("plpgsql")
-> 0.1143s
;还有 create_table("abuse_reports", {:id=>:serial, :force=>:cascade})
-> 0.3709s
;还有 create_table("appearances", {:id=>:serial, :force=>:cascade})
-> 0.3022s
;还有 create_table("issue_tracker_data", {:force=>:cascade})
-> 3.7627s
;还有 create_table("issues", {:id=>:serial, :force=>:cascade})
rake aborted!
ActiveRecord::StatementInvalid: PG::InternalError: ERROR: index method "ybgin" not supported yet
HINT: See Click '+' on the description to raise its priority
: CREATE INDEX "index_issues_on_description_trigram" ON "issues" USING gin ("description" gin_trgm_ops)
/home/git/gitlab/vendor/bundle/ruby/2.6.0/gems/peek-pg-1.3.0/lib/peek/views/pg.rb:17:in 于大async_exec'
/home/git/gitlab/vendor/bundle/ruby/2.6.0/gems/peek-pg-1.3.0/lib/peek/views/pg.rb:17:in 于大async_exec'
从以上转换已成信息可以看得出,刚开始setup试运行也就是说,可以也就是说创始extension和table,持续约20分钟后碰到创始录入受挫,原因是YugabyteDB不亦会识别“gin”子类的录入,取而代之的子类是“ybgin”。
看一下到这一步信息戈该系统生已成了哪些实例:
gitlab=# select C.relkind,count(C.relname) from pg_class C left join pg_namespace n on n.oid = C.relnamespace where n.nspname = 'public' group by C.relkind;
relkind | count
;还有;还有;还有;还有-+;还有;还有;还有-
S | 113
i | 391
r | 117
(3 rows)
上述情况看起来比CockroachDB要好一些,但是比完整的戈注记结构还是便加很多。
2、出访GitLab
此时依然无法出访GitLab亦然该网站,从亦会话之中断定报歪原因是缺少目标注记:
source=rack-timeout id=7gatOugcqB8 timeout=60000ms state=ready
Started GET "/" for 10.3.74.126 at 2022-05-27 16:05:31 +0800
Processing by RootController#index as HTML
Completed 500 Internal Server Error in 78ms (ActiveRecord: 58.8ms | Elasticsearch: 0.0ms)
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "projects" does not exist
LINE 8: WHERE a.attrelid = '"projects"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
c.collname, col_description(a.attrelid, a.attnum) AS comment
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
WHERE a.attrelid = '"projects"'::regclass
AND a.attnum> 0 AND NOT a.attisdropped
ORDER BY a.attnum
):
3、备份信息戈该系统旧版
同样地,我们尝试把YugabytesDB系统升级到正式旧版,看是否之前完已成了Gin录入可选:
postgres=# select version();
version
;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有;还有-
PostgreSQL 11.2-YB-2.13.2.0-b0 on x86_64-pc-linux-gnu, compiled by clang version 12.0.1 ( bdb147e675d8c87cee72cc1f87c4b82855977d94), 64-bit
(1 row)
便次制订setup处理程序,这个操作过程比较顺利,左右30分钟以后处理程序也就是说退出无报歪。这时候我们看一下信息戈该系统之中的实例上述情况:
gitlab=# select C.relkind,count(C.relname) from pg_class C left join pg_namespace n on n.oid = C.relnamespace where n.nspname = 'public' group by C.relkind;
relkind | count
;还有;还有;还有;还有-+;还有;还有;还有-
S | 231
i | 903
r | 249
(3 rows)
可以看不到和准则PostgreSQL戈对比完全一致。锁住浏览器出访GitLab亦然页亦会备用控件到登记页,查看亦会话无报歪:
填写其他用户注册注记单建议书后从新其他用户注册已成功,备用控件到GitLab亦然该网站:
可行性来看,GitLab功能无法受到连动信息戈该系统的阻碍,愈来愈详细的测试将在下一期之中给大家显现。
五、测试结论
1、CockroachDB v21.2不支持者Extension功能,加剧GitLab无法绑定信息戈该系统,最终重启受挫,备份到正式旧版v22.1后难题依旧存在。
2、YugabyteDB v2.9不支持者Gin Index(Generalized inverted indexes),加剧创始一部分注记后报歪,同样无法重启,但是备份到正式旧版v2.13后难题解决,可以也就是说出访GitLab该网站以及注册其他用户。
3、YugabyteDB支持者PostgreSQL Extension,CockroachDB不支持者。
六、下一步原计划
下一步我们将尝试绕过GitLab生已成信息戈该系统这一步骤,把一个带信息的准则GitLab戈导入到CockroachDB和YugabyteDB之中,选取一部分不时常用的读写情景,便对比两者的相容性注记现。
>>>>其所
PostgreSQL Compatibility yugabyte/yugabyte-db 关于我们 dbaplus一个组织是围绕Database、BigData、AIOps的企业级专业一个组织。资深大老爸、技术开发干货,每天精品原创评论启动时,每周线上技术开发分享,每月线下技术开发沙龙,每季度Gdevops&DAMS从业者大亦会。 关注公众号【dbaplus一个组织】,获取愈来愈多原创技术开发评论和精选工具下载。西安看白癜风哪家专科医院好贵州男科医院哪个最好
成都甲状腺医院哪里好
驻马店看妇科去哪好
重庆看白癜风医院哪个好
哮喘
新冠为何又抬头?当前病毒有什么特点?专家解答来了
止咳化痰的药哪个效果好
小儿呼吸科
端午即将到来,这3类人要特别注意防范新冠!
-
小米电视 ES Pro今日开售:多尺寸可会分,双 120Hz、HDMI 2.1、VRR
IT之家 7 月 18 日死讯,今年 5 月,新品正式发布了新品电视节目 ES Pro 86 英寸电视节目,上半年 7999 元。那时候,新品又推出了 55 英寸、65 英寸、75 英寸的版本,
- 2025-09-15三星联动星巴克立时主题保护壳系列 经典马克杯拉花
- 2025-09-15传和硕将MR管理工作卖给立讯,何时量产仍是未解之谜
- 2025-09-15GitLab在CockroachDB和YugabyteDB上的兼容性对比(一)-系统会初始化
- 2025-09-15直播预告 ▏2022数博会网络沙龙:互联网+诊疗创新之路
- 2025-09-15旗翼博士Ⅳ:寻找失落的当今世界
- 2025-09-15云米小蓝调家电杀菌省电更安全,首发有福利
- 2025-09-1539页|2022欧洲各国主流AI翻译机实测报告(附下载)
- 2025-09-15酷睿i9-13900K游戏精度抢先测试:对比12代最低帧猛增 爱了!
- 2025-09-15态路小课堂丨保偏光纤产品第一部—在线式保偏光纤机械式可调光纤衰减器
- 2025-09-15机器翻译为何仍取代不了人类?自然形式化的微妙是其瓶颈