前言:
继上次看了尹老师的HALODB 相关文章,对这个数据库很感兴趣,工作之余拿来学习一下。
准备抄一篇尹老师大作:https://www.modb.pro/db/1730394293255364608
完整的安装流程如下,为了朋友们看的清楚些我做了一个流程图给大家参考。
一、数据库及操作系统相关版本:
主机名 | halodb1 |
操作系统 | CentOS 7.9 |
IP地址 | 19.168.1.77 |
DB版本 | HaloDB 14 |
二、操作系统安装部署以及相关设置:
注意:网卡配置信息如下,请参考。
1、关闭selinux,
这里为大家推荐两种方式来关闭selinux。
方法一:通过配置文件修改
使用文本编辑器打开 /etc/selinux/config 文件。
找到 SELINUX 参数,并将其值修改为 disabled(禁用)。
保存文件并退出。
重启系统使更改生效。
方法三:通过命令行永久关闭
打开终端。
执行命令 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config。
该命令将修改 /etc/selinux/config 文件中的 SELINUX 参数,将其值改为 disabled,从而永久禁用 SELinux。或者简单点直接vi 编辑config文件,截图如下:
重启系统使更改生效。
验证selinux 是否关闭:
[root@halodb1 ~]# getenforce
Disabled2、关闭防火墙:
[root@Halodb1 ~]# systemctl stop firewalld.service #停止 firewall
[root@Halodb1 ~]# systemctl disable firewalld.service #禁止 firewall 开机启动3、修改系统参数:
这里需要修改kernel.sem 参数,这个参数是Linux系统用来控制信号量Semaphore的参数,可以通过/proc/sys/kernel/sem文件或sysctl命令调整参数。
vim /etc/sysctl.conf
kernel.sem = 4096 4194304 32768 1024
sysctl -p这里多说两句,这个命令将设置信号量为4096个,从0开始,最大值为4194304,通常只要设置足够大就可以,第三个值100表示初始值是32768,最后一个值1024表示信号集的最大值。
如果对这个参数更感兴趣的朋友可以参考这个链接:https://www.python100.com/html/86999.html以及https://www.cnblogs.com/santia-god/p/16995811.html
4、修改用户资源限制
[root@halodb1 ~]# 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二、开始halo DB 的安装:
1、配置本地yum源:
配置本地yum源: 先删除原有的配置文件,然后建立一个yum.repo文件
[root@halodb1 ~]# mv /etc/yum.repos.d /etc/yum.repos.d.bak
[root@halodb1 ~]# cd /etc/yum.repos.d
[root@halodb1 yum.repos.d]# vi yum.repo
[base-local]
name=Centos-local
baseurl=file:///media
enabled=1
gpgcheck=0
然后挂载yum包
mount /dev/cdrom /media
使用完毕记得卸掉yum包
umount /media验证:
2、安装所需依赖包:
CentOS:
yum -y install iproute bind iptables which sudo 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++ kshuuid-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 autoconf如果是Ubuntu系统:
# apt-get install -y tar iptables sudo sysstat ftp make cmake gcc uuid uuid-dev
libreadline-dev libssh-dev bison flex perl python3-dev libxml2 libxml2-dev gettext libperl-dev iotop
tcpdump strace gdb systemtap net-tools ksh libaio-dev make smartmontools tcl openssl
bc binutils
pkg-config git zstd libzstd-dev lz4 liblz4-1 liblz4-dev libicu-dev autoconf curl libcurl4-openssl-dev备注:apt-get 类似于yum的作用,相关文章可以参考:https://zhuanlan.zhihu.com/p/607275083?utm_id=0
3、 相关用户组的创建:
[root@halodb1 ~]# groupadd -g 3000 halo
[root@halodb1 ~]# useradd -u 3000 -g halo halo
[root@halodb1 ~]# passwd halo ###我这里将密码设置成halo
Changing password for user halo.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.4、 创建相关的安装目录:
这里官方的安装建议为使用/u01/app/halo,让我感觉有点意外和熟悉的影子,dddd。
[root@halodb1 ~]# mkdir -p /u01/app/halo
[root@halodb1 ~]# chown -R halo:halo /u01/app/halo
[root@halodb1 ~]#mkdir /var/run/halo
[root@halodb1 ~]#chown halo:halo /var/run/halo
#重启后/var/run目录下内容会被自动清理,因此可以通过以下方式实现开机后创建对应目录
[root@halodb1 ~]#vim /etc/rc.local
[root@halodb1 ~]#/usr/bin/mkdir /var/run/halo
[root@halodb1 ~]#/usr/bin/chown halo:halo /var/run/halo
[root@halodb1 ~]#chmod +x /etc/rc.d/rc.local5、 配置haloDB数据库用户环境变量:
[root@halodb1 14]# su - halo
[halo@halodb1 ~]$ vi .bash_profile
添加以下项
export HALO_HOME=/u01/app/halo/product/dbms/14 ### 数据库主目录
export LD_LIBRARY_PATH=$HALO_HOME/lib
export PGHOST=/var/run/halo
export PATH=$HALO_HOME/bin:$PATH
export PGDATA=/data/halo
使环境变量生效:
[halo@Halo131 ~]$ source .bash_profile验证环境变量是否正常:这里可以看到,环境变量已经正常生效
6、验证安装版本:
[halo@halodb1 ~]$ pg_ctl -V
pg_ctl (Halo) 1.0.14.10 (2311307、规划数据存放路径:
[root@halodb1 ~]# mkdir -p /data/halo
[root@halodb1 ~]# chown -R halo:halo /data/halo
8、初始化数据库:
[root@halodb1 ~]# su - halo
Last login: Mon Dec 18 06:00:51 CST 2023 on pts/0
[halo@halodb1 ~]$ pg_ctl init -D /data/halo
The files belonging to this database system will be owned by user "halo".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /data/halo ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
/u01/app/halo/product/dbms/14/bin/pg_ctl -D /data/halo -l logfile start
至此,整个HaloDB 的安装和初始化工作就完成了。
9、启动数据库验证:
pg_ctl start这里启动的过程中出现了一点点的小插曲:
本以为手拿把掐的安装部署出现报错了,定睛一看,缺少进程目录/var/run/halo,再次确认下:
参考了一下尹老师和手册,原来是我遗漏了步骤,重新添加和创建的相关路径,整理后合并到步骤4,用红色标出,请参考。
再次启动数据库,一切正常,截图如下:
进入数据库:psql
[halo@halodb1 ~]$ psql
psql (1.0.14.10 (231130))
Type "help" for help.
# 查看当前数据库的版本信息
halo0root=# SELECT version();
version
-----------------------------------------------------------------------------------------------------------------------
羲和(Halo) 1.0.14.10 (231130) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)截图如下:
10、创建测试数据库:
halo0root=# create database testzz;
CREATE DATABASE
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
testzz | halo | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)11、创建相关测试表:
(1)、建立dept表
CREATE TABLE DEPT
(DEPTNO int CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR(14) ,
LOC VARCHAR(13) ) ;
--插入四行记录
INSERT INTO DEPT VALUES
(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
(40,'OPERATIONS','BOSTON');
(2)、建立emp表
CREATE TABLE EMP
(EMPNO int CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR int,
HIREDATE DATE,
SAL int,
COMM int,
DEPTNO int CONSTRAINT FK_DEPTNO REFERENCES DEPT);
--插入十四行记录
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87','dd-mm-rr')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87', 'dd-mm-rr')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
(3)、建立bonus表
CREATE TABLE BONUS
(
ENAME VARCHAR(10) ,
JOB VARCHAR(9) ,
SAL int,
COMM int
) ;
(4)、建立salgrad表
CREATE TABLE SALGRADE
( GRADE int,
LOSAL int,
HISAL int );
--插入五行记录
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;在commit的时候发现:
自动提交,好东西。看来Halo 在使用者的体验感上确实做了很多工作。虽然是慢工,但是不是什么细活,如有问题还请各位批评指正。




