做为一名IT从业人员,我比较关注数据库技术的发展,特别是国产和开源数据库。而在这其中,对于openGauss数据库尤为关注,原因是它的内核源自PostgreSQL,这是完全可以对标Oracle的数据库。并且openGauss采用木兰宽松许可证v2发行,是开源、免费的数据库,更重要的是它出自我们中国最富有自强精神的华为,让人有一种民族自豪感!
在这金秋九月,我有幸参加了由恩墨墨天轮、Gauss松鼠会、openGauss社区联合主办的“openGauss训练营第二期”活动。
在此次活动中,多位openGauss专家老师,给我们学员做了openGauss数据库技术的分享和讲解,从体系架构到主备部署和高可用及问题解决、从实践总结到WDR报告和性能调优、从运维监控工具到AI特性介绍…在周六日短短的两个下午,为我们参加训练营的学员呈现了一大桌openGauss知识和技术的盛宴!
在此,真心地感谢openGauss训练营的各位老师,无私地给我们学员分享知识、传道、授业、解惑。向各位老师致敬!
但也是由于此次盛宴绝佳的大菜太多,而我的消化力却十分有限,因此还需要时间慢慢品尝、逐渐消化:)
此次参加训练营活动,让我感觉收获多多,每一课的内容都非常重要,都需要我再回顾和深入的学习,
而在这其中,先选取两个知识内容,进行回顾和复习:
一是openGauss的行列混合引擎,不但支持行存,还支持列存,根据不同的场景选择不同的存储类型。
这样的特性,对于业务场景为OLTP和OLAP,openGauss可通过行列混合引擎,可以同时支持行存和列存,从而适应企业混合场景的应用。这一特性可以让openGauss在各类企业应用场景中,都可以发挥作用。
二是openGauss的64位事务ID特性,对于PG,采用的是32位事务ID机制,在这样的机制下,对于任一普通事务ID,都有20亿个相对它来说过去的事务,和20亿个未来的事务。也就是说同一个数据库中存在的最旧和最新两个事务之间的差最多是2^31。
为了避免这种问题,需要Vacuum freeze定期的对最旧事务进行回收,以推进该值;当事务ID的差值超过2^31会造成业务中断,强制全库回收事务ID。在事务处理场景中,事务ID增长迅速,会导致32位的事务ID频繁发生回卷,而Vacuum机制回收陈旧的事务ID,效率低,IO开销大。并且如果事务ID回收不及时,会导致停库,对业务造成严重影响。
为了解决PG的这个问题,openGauss采用64位事务ID,解决了事务ID回卷的问题,从而避免了频繁的vacuum对系统造成的性能影响。从这一点可也可看出openGauss是青出于蓝胜于蓝!
在此次训练营活动结束后,我抑制不住学习的兴奋,按照贾军锋老师分享的“基于CentOS 7.6一键部署openGauss2.0.1”(https://www.modb.pro/db/106407)
进行了如下实践:
(1)先创建了一台VMWARE虚拟机
(2)在此虚拟机上最小化安装了CentOS 7.6
(3)启动CentOS 7.6虚拟机
(4)以root用户登录此虚拟机,安装wget工具: yum -y install wget
(5)将贾军锋老师提供的一键部署脚本,按自己创建虚拟机的实际情况,进行调整,如下:
export MY_HOSTNAME=centos76 ## 主机名
export MY_HOSTIP=192.168.20.215 ## IP地址
(6)执行以上脚本
此脚本会自动完成环境的设置、下载安装包、配置XML文件、检查预安装环境、执行安装等操作,
在脚本执行过程中,会提问要求创建omm用户,如下:
Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes
Please enter password for cluster user.
Password:
Please enter password for cluster user again.
Password:
Successfully created [omm] user on all nodes.
随后,会要求设置数据库密码,如下:
begin init Instance…
encrypt cipher and rand files for database.
Please enter password for database:
Please repeat for database:
(7)安装成功后,可以看到相应的数据库进程:
[root@centos76 ~]# ps -ef|grep omm
omm 14461 1 81 19:29 ? 00:00:54 /gaussdb/app/bin/gaussdb -D /gaussdb/data/db1
(8)以omm用户登录虚拟机,可以通过gsql工具登录数据库,如下:
[omm@centos76 ~]$ gsql -d postgres -p 26000 -r
gsql ((openGauss 2.0.1 build d97c0e8a) compiled at 2021-06-02 19:37:17 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type “help” for help.
postgres=#
(9)查看版本号:
postgres=# select version();
version
PostgreSQL 9.2.4 (openGauss 2.0.1 build d97c0e8a) compiled at 2021-06-02 19:37:17 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC)
7.3.0, 64-bit
(1 row)
(10)查看数据库
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------±------±---------±--------±------±------------------
postgres | omm | UTF8 | C | C |
template0 | omm | UTF8 | C | C | =c/omm +
| | | | | omm=CTc/omm
template1 | omm | UTF8 | C | C | =c/omm +
| | | | | omm=CTc/omm
(3 rows)