您现在的位置:首页 >> 创意家居

GitLab在CockroachDB和YugabyteDB上的兼容性对比(一)-系统会初始化

发布时间:2025/09/15 12:17    来源:普陀家居装修网

ee

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类人要特别注意防范新冠!

上一篇: 传和硕将MR管理工作卖给立讯,何时量产仍是未解之谜

下一篇: 直播预告 ▏2022数博会网络沙龙:互联网+诊疗创新之路

友情链接