yum install rpm-build
yum install rpmdevtools
rpmdev-setuptree
mkdir -p /root/rpmbuild/BUILD/tmp/GBase8s-V8.8
cd /root/rpmbuild/BUILD/tmp/GBase8s-V8.8
将数据库安装包与init_gbase.sh上传至此目录下
vi init_gbase.sh
#!/bin/bash
################################
#version 1.0
#author wangyongixang
#email wangyongixang@gbase.cn
#init for rpm-gbase8s
################################
export LANG=C
loginfo(){
echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] $*"
}
INSTALL_DIR=/opt/gbase8s
GBASESERVER=gbase8s
SQLHOSTS=/opt/gbase8s/etc/sqlhosts
GBASELOCALE=zh_CN.utf8
PORTNO=9088
DATADIR=/opt/gbase8s/dbs
ONCONFIG=onconfig
ROOTSIZE=512000
PLOGSIZE=102400
LLOGSIZE=102400
SBSPACESIZE=102400
TEMPSIZE=102400
DATASIZE=1024000
groupadd gbasedbt
useradd -g gbasedbt -d /home/gbasedbt -s /bin/bash -m gbasedbt
echo "gbasedbt:GBase123"| chpasswd
mkdir -p $INSTALL_DIR 2>/dev/null
chown gbasedbt:gbasedbt $INSTALL_DIR 2>/dev/null
chmod 0755 $INSTALL_DIR 2>/dev/null
SOFTPACKNAME=$(ls GBase*.tar 2>/dev/null)
tar -xf ${SOFTPACKNAME} 2>/dev/null
timeout 1800 ./ids_install -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=$INSTALL_DIR
cp $INSTALL_DIR/etc/onconfig.std $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^ROOTPATH.*#ROOTPATH $DATADIR/rootdbs#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^ROOTSIZE.*#ROOTSIZE $ROOTSIZE#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DBSERVERNAME.*#DBSERVERNAME $GBASESERVER#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^LTAPEDEV.*#LTAPEDEV /dev/null#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^USERMAPPING.*#USERMAPPING ADMIN#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DEF_TABLE_LOCKMODE.*#DEF_TABLE_LOCKMODE row#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^VPCLASS.*#VPCLASS cpu,num=1,noage #g" $INSTALL_DIR/etc/$ONCONFIG
chown gbasedbt:gbasedbt $INSTALL_DIR/etc/$ONCONFIG
echo "$GBASESERVER onsoctcp 0.0.0.0 $PORTNO" > $SQLHOSTS
chown gbasedbt:gbasedbt $SQLHOSTS
cat >> /home/gbasedbt/.bash_profile <<EOF
export GBASEDBTSERVER=$GBASESERVER
export GBASEDBTDIR=$INSTALL_DIR
export GBASEDBTSQLHOSTS=$SQLHOSTS
export ONCONFIG=$ONCONFIG
export PATH=${INSTALL_DIR}/bin:\${PATH}
export GL_DATE="%iY-%m-%d"
export DATETIME="%iY-%m-%d %H:%M:%S"
export DB_LOCALE=$GBASELOCALE
export CLIENT_LOCALE=$GBASELOCALE
export GL_USEGLU=1
export DBACCESS_SHOW_TIME=1
EOF
mkdir -p $DATADIR
chown gbasedbt:gbasedbt $DATADIR
chmod 0755 $DATADIR
cd $DATADIR
touch rootdbs plogdbs llogdbs sbspace1 tmpdbs1 datadbs1
chown gbasedbt:gbasedbt *
chmod 660 *
su - gbasedbt -c "timeout 1800 oninit -ivy"
sleep 5
su - gbasedbt -c ". /home/gbasedbt/.bash_profile &&
timeout 25 dbaccess sysmaster -<<! >/dev/null 2>&1
select 1 from dual;
!
"
if [ ! $? -eq 0 ];then
exit
fi
su - gbasedbt -c "onspaces -c -d plogdbs -p $DATADIR/plogdbs -o 0 -s $PLOGSIZE >/dev/null 2>&1"
su - gbasedbt -c "onspaces -c -d llogdbs -p $DATADIR/llogdbs -o 0 -s $LLOGSIZE >/dev/null 2>&1"
su - gbasedbt -c "onspaces -c -d tmpdbs01 -p $DATADIR/tmpdbs1 -o 0 -s $TEMPSIZE -k 16 -t >/dev/null 2>&1"
su - gbasedbt -c "onspaces -c -S sbspace01 -p $DATADIR/sbspace1 -o 0 -s $SBSPACESIZE >/dev/null 2>&1"
su - gbasedbt -c "onspaces -c -d datadbs1 -p $DATADIR/datadbs1 -o 0 -s $DATASIZE -k 16 >/dev/null 2>&1"
PLOGFILE=$(echo $PLOGSIZE | awk '{printf("%d\n",substr($1,1,1) * 10 ^ (length($1) - 1))}')
su - gbasedbt -c "onparams -p -d plogdbs -s $PLOGFILE -y >/dev/null 2>&1"
LLOGFILE=$(echo $LLOGSIZE | awk '{printf("%d\n",substr($1,1,1) * 10 ^ (length($1) - 1))}')
NEWFILE=$(expr $LLOGFILE / 10)
[ $NEWFILE -gt 1000000 ] && NEWFILE=1000000
for w in {1..10}
do
su - gbasedbt -c "onparams -a -d llogdbs -s $NEWFILE >/dev/null 2>&1"
done
while :
do
CURRLOG=$(su - gbasedbt -c "onmode -l; onmode -c; onstat -l" | awk '/U---C-L/{print $2}')
if [ $CURRLOG -gt 6 ]; then
break
else
sleep 1
fi
done
for e in {1..6}
do
su - gbasedbt -c "onparams -d -l $e -y >/dev/null 2>&1"
done
touch $INSTALL_DIR/etc/sysadmin/stop
chown gbasedbt:gbasedbt $INSTALL_DIR/etc/sysadmin/stop
chmod 644 $INSTALL_DIR/etc/sysadmin/stop
NUMMEM=$(awk '/^MemTotal:/{printf("%d\n",$2/1000)}' /proc/meminfo)
if [ $NUMMEM -le 1024 ]; then
exit
fi
sed -i "s#^PHYSBUFF.*#PHYSBUFF 1024#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^LOGBUFF.*#LOGBUFF 1024#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DBSPACETEMP.*#DBSPACETEMP tmpdbs01#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^SBSPACENAME.*#SBSPACENAME sbspace01#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^SYSSBSPACENAME.*#SYSSBSPACENAME sbspace01#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^NUMFDSERVERS.*#NUMFDSERVERS 8#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^MULTIPROCESSOR.*#MULTIPROCESSOR 1#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^AUTO_TUNE.*#AUTO_TUNE 0#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^CLEANERS.*#CLEANERS 8#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^STACKSIZE.*#STACKSIZE 512#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^ALLOW_NEWLINE.*#ALLOW_NEWLINE 1#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i 's#^USELASTCOMMITTED.*#USELASTCOMMITTED "COMMITTED READ"#g' $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DS_MAX_QUERIES.*#DS_MAX_QUERIES 5#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DS_TOTAL_MEMORY.*#DS_TOTAL_MEMORY 128000#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DS_NONPDQ_QUERY_MEM.*#DS_NONPDQ_QUERY_MEM 32000#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^TEMPTAB_NOLOG.*#TEMPTAB_NOLOG 1#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DUMPSHMEM.*#DUMPSHMEM 0#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^NETTYPE.*#NETTYPE soctcp,1,100,CPU#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^DIRECT_IO.*#DIRECT_IO 0#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^LOCKS.*#LOCKS 500000#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^SHMVIRTSIZE.*#SHMVIRTSIZE 204800#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^SHMADD.*#SHMADD 8192#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^SHMTOTAL.*#SHMTOTAL 0#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^BUFFERPOOL.*size=2.*#BUFFERPOOL size=2K,buffers=100000,lrus=8,lru_min_dirty=50,lru_max_dirty=60#g" $INSTALL_DIR/etc/$ONCONFIG
sed -i "s#^BUFFERPOOL.*size=16.*#BUFFERPOOL size=16K,buffers=100000,lrus=8,lru_min_dirty=50,lru_max_dirty=60#g" $INSTALL_DIR/etc/$ONCONFIG
su - gbasedbt -c "timeout 1800 onmode -ky"
sleep 5
su - gbasedbt -c "timeout 1800 oninit -vy"
sleep 5
mkdir -p ${INSTALL_DIR}/temp
ADMIN_SQLFILE=${INSTALL_DIR}/temp/admin_sqlfile.sql
cat << ! > $ADMIN_SQLFILE 2>&1
EXECUTE FUNCTION task ("modify chunk extendable on", 6);
!
if [ -s $ADMIN_SQLFILE ]; then
chown gbasedbt:gbasedbt ${INSTALL_DIR}/temp
chown gbasedbt:gbasedbt $ADMIN_SQLFILE
su - gbasedbt -c "dbaccess sysadmin $ADMIN_SQLFILE >/dev/null 2>&1"
fi
echo "su - gbasedbt -c \"oninit\"" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
exit 0
cd /root/rpmbuild/SPECS
vi gbase_test.spec
Name: GBase8s_test
Version: 8.8
BuildArch: x86_64
Release: 1%{?dist}
Summary: GBase8sV8.8_3.0.0_1_93e040_RHEL6_x86_64
Vendor: wyx
AutoReqProv: no
License: MIT
URL: www.gbase.com.cn
%description
test
%prep
%build
%install
cp -r %_builddir/* %buildroot/
%pre
%post
cd /tmp/GBase8s-V8.8
chmod a+x init_gbase.sh
./init_gbase.sh
%preun
su - gbasedbt -c "onmode -ky"
%postun
userdel -rf gbasedbt
rm -rf /opt/gbase8s
rm -rf /GBASEDBTTMP
echo "数据库卸载完成"
%files
%defattr(-,root,root)
/tmp/GBase8s-V8.8/*
%changelog
* Thu May 05 2024 gbasedbt
-
rpmbuild构建rpm包
rpmbuild -gg gbase_test.spce
构建结束后在/root/rpmbuild/RPMS/x86_64下生成数据库rpm安装包
rpm -ivh GBase8s_test-8.8-1.el7.centos.x86_64.rpm 进行数据库安装