Halo数据库介绍
Halo数据库是杭州易景数通科技有限公司采用世界领先的数据库技术,并且结合实际核心生产业务系统实践,通过自主研发而精心打造的一款数据库产品。
数据库特点
- 多模数据库技术:Halo数据库拥有先进的多模数据库技术,能高度兼容多种主流数据库,降低了系统的迁移成本和风险。
- 100%兼容PostgreSQL:任何基于PostgreSQL的系统可以无缝迁移至Halo数据库。
- 针对在Oracle、MySQL、PostgreSQL等数据库上构建的系统能够实现平滑的迁移。
产品特性
- 独有的多模解析引擎技术:可以大幅减少迁移项目中的代码修改量,根据实践表明,至少可以减少95%以上的代码修改量,降低迁移成本和风险。
- 灵活多样的系统架构:支持读写分离、Sharding等架构模式,满足实际业务需求。
- CDP能力:提供分钟级的任意时间点的数据快速恢复能力,帮助企业快速找回数据,减少业务损失。
- 灾备能力:可以实现同城及异地的灾备建设。
- HWR诊断工具:性能针对工具,类似于oracle的AWR工具。
Halo数据库体系结构
Halo数据库实例主要包含共享内存区域、本地内存区域和一系列后台进程。其中共享内存区域主要由共享缓存、事务日志缓存构成。后台进程主要由Background Writer(数据写进程)、WAL Writer(事务日志写进程)、Checkpointer(检查点进程)、Statistic Collector(统计信息收集进程)、Autovacuum(自动清理进程)以及Backend Process(会话进程)等构成。数据库群集主要由数据文件、事务日志文件及其它一些辅助文件组成。

Halo数据库实例的主要成分。通过插件式内核的设计,可以非常灵活的实现多种协议的兼容、多种语法的兼容、以及分布式存储引擎(HFSX,发展中技术)的支持等,这个重要特性也是Halo能够称之为新一代统一数据库的重要原因。

Halo数据库安装
1、系统配置
检查系统环境
# uname -r
3.10.0-1160.71.1.el7.x86_64
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
安装系统软件包
yum install -y sysstat ftp make cmake gcc uuid uuid-devel bison flex perl perl-devel python-devel readline readline-devel libxml2 libxml2-devel iotop tcpdump strace gdb systemtap net-tools xdpyinfo libstdc++-devel gcc-c++ ksh uuid-devel libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools zlib-devel tcl glibc glibc-devel openssl openssl-devel bc binutils nfs-utils perl-ExtUtils-Embed zstd zstd-devel libcurl libcurl-devel lz4 lz4-devel libicu libicu-devel
设置内核限制
# vi /etc/sysctl.conf 加入
kernel.sem = 4096 4194304 32768 1024
# sysctl -p
设置资源限制
# vi /etc/security/limits.conf 加入
halo soft nproc unlimited
halo hard nproc unlimited
halo soft nofile 1024000
halo hard nofile 1024000
halo soft stack unlimited
halo hard stack unlimited
halo soft memlock unlimited
halo hard memlock unlimited
halo soft core unlimited
halo hard core unlimited
关闭透明大页
# vi /etc/systemd/system/disable-thp.service 加入
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"
[Install]
WantedBy=multi-user.target
--启动服务
# systemctl daemon-reload
# systemctl start disable-thp
# systemctl enable disable-thp
--查看THP状态
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
创建组和用户
# groupadd -g 10000 halo
# useradd -u 10000 -g halo halo
# echo halo|passwd --stdin halo
创建软件安装目录
# mkdir -p /opt/halo
# chown -R halo:halo /opt/halo
2、数据库软件安装
上传介质并解压
tar -zxf halo_14.el7.x86_64.build240306.tar.gz -C /opt/halo
安装 License 文件至安装目录
将 License 文件,名称为 license.lic 拷贝至数据库根目录。
mv license.lic /opt/halo/product/dbms/14
环境变量配置
# su - halo
$ vi .bash_profile
export HALO_HOME=/opt/halo/product/dbms/14
export LD_LIBRARY_PATH=$HALO_HOME/lib
export PGHOST=/var/run/halo
export PATH=$HALO_HOME/bin:$PATH
$ source .bash_profile
测试数据库软件是否安装正确
$ pg_ctl -V
pg_ctl (Halo) 1.0.14.10 (240306)
如果正确输出版本号,则说明安装正常。
3、数据库初始化
创建数据目录
# mkdir -p /data/halo
# chown -R halo:halo /data/halo
数据库初始化
# su - halo
$ pg_ctl init -D /data/halo
创建进程目录
Halo 数据库需要额外的路径来存放临时进程文件。默认路径为:/var/run/halo。
# mkdir /var/run/halo
# chown halo:halo /var/run/halo
/var/run 目录下的用户内容在操作系统重启后会被系统自动清理,为防止因为系统重启导致的路径丢失错误,可以在/etc/rc.local 中配置系统重启后自动重建路径。在/etc/rc.local 中增加以下内容:
/usr/bin/mkdir /var/run/halo
/usr/bin/chown halo:halo /var/run/halo
/etc/rc.local 默认是缺少执行权限的,需要增加执行权限:
# chmod +x /etc/rc.d/rc.local
启动数据库
$ pg_ctl -D /data/halo start
waiting for server to start....2024-06-06 23:30:34.048 CST [32651] LOG: starting 羲和(Halo) 1.0.14.10 (240306) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2024-06-06 23:30:34.048 CST [32651] LOG: listening on IPv6 address "::1", port 1921
2024-06-06 23:30:34.048 CST [32651] LOG: listening on IPv4 address "127.0.0.1", port 1921
2024-06-06 23:30:34.051 CST [32651] LOG: listening on Unix socket "/var/run/halo/.s.PGSQL.1921"
2024-06-06 23:30:34.053 CST [32652] LOG: database system was shut down at 2024-06-06 23:30:30 CST
2024-06-06 23:30:34.056 CST [32651] LOG: database system is ready to accept connections
done
server started
4、测试数据库连接
psql连接数据库
[halo@node1 halo]$ psql
psql (1.0.14.10 (240306))
Type "help" for help.
halo0root=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
halo0root | halo | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | halo | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/halo +
| | | | | halo=CTc/halo
template1 | halo | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/halo +
| | | | | halo=CTc/halo
(3 rows)
halo0root=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
halo | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
testdb=> select version();
version
-----------------------------------------------------------------------------------------------------------------------
羲和(Halo) 1.0.14.10 (240306) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)
testdb=> \conninfo
You are connected to database "halo0root" as user "halo" via socket in "/var/run/halo" at port "1921".
testdb=> show port;
port
------
1921
halo0root=# create database testdb;
CREATE DATABASE
halo0root=# \c testdb
You are now connected to database "testdb" as user "halo".
testdb=# create user testuser with password 'testuser';
CREATE ROLE
dbeaver连接数据库

参考文档
http://www.halodbtech.com/
https://mp.weixin.qq.com/s/-5AR20h9HK2rdlbyAomA5Q
总结&建议
官网文档目前访问起来不顺畅,希望有所改善,同时希望Halo数据库发展的越来越好。
让我们一起为国产数据库的发展添砖加瓦!加油!
最后修改时间:2024-06-07 00:30:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




