一、安装环境准备
1、部署架构规划

GaussDB 100 HA部署的总体架构如上图,DM、CM、ETCD在单机部署中是非必要组件,因此本次不部署,DN节点规划如下:

注:数据目录需要>=20GB,如果要减小,需要修改install.py和create_database.sample.sql。
2、操作系统配置
root远程登录权限修改(两个节点均需操作)
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/ PasswordAuthentication yes/g' /etc/ssh/sshd_config
--修改完重庆sshd服务
/bin/systemctl restart sshd.service
关闭防火墙和SELinux(官方建议是添加信任,此处直接关闭避免后续连接有问题)(两个节点均需操作)
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
配置corefile(两个节点均需操作)
echo 'ulimit -c unlimited'>>/etc/profile
echo 'kernel.core_pattern =/opt/gdb/corefile/core-%e-%p-%t'>>/etc/sysctl.conf
--使配置生效
source /etc/profile
sysctl -p
检查ntp和lsof(此单机环境不需要ntp,可略过)(两个节点均需操作)
rpm -qa|grep ntp --NTP 4.2.6或以上版本
若没有,使用yum安装ntp
yum install ntp
which lsof
--若没有,使用yum安装lsof
yum install lsof
创建数据库安装用户组和用户(两个节点均需操作)
groupadd dbgrp
useradd -g dbgrp -d /home/omm -m -s /bin/bash omm
--设置密码
passwd omm
配置数据目录(两个节点均需操作)
--查看可用磁盘
[root@gauss01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 7.8G 0 part
├─rhel-root 253:0 0 6.8G 0 lvm /
└─rhel-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 21G 0 disk
sr0 11:0 1 1024M 0 rom
--创建PV
[root@gauss01 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
--创建GV
[root@gauss01 ~]# vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
--创建LV
[root@gauss01 ~]# lvcreate -L 20G -n datalv datavg
Logical volume "datalv" created.
--格式化LV
[root@gauss01 ~]# mkfs.ext4 /dev/datavg/datalv
--创建挂载点目录
[root@gauss01 ~]# mkdir -p /gdb/gauss01/data
--挂载LV
[root@gauss01 ~]# mount /dev/datavg/datalv /gdb/gauss01/data
--删除目录中的lost+found文件,防止安装软件时报错
[root@gauss01 ~]# find /gdb -name lost+found | xargs rm -rf
--将文件挂载信息写入fstab文件
[root@gauss01 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Feb 19 17:30:47 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / ext4 defaults 1 1
UUID=a3e33662-9f1b-4a0a-a8c2-7f7681c5d6c9 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/datavg/datalv /gdb/gauss01/data ext4 defaults,noatime,nobarrier 0 0 --注意添加noatime,nobarrier选项,提升性能
--重新挂载文件系统
[root@gauss01 ~]# mount -o remount /gdb/gauss01/data
二、安装数据库软件
解压安装包(本次使用的是一个大包,包含多个安装包,因此解压了多次)(两个节点均需操作)
chown omm:dbgrp GaussDB_100_1.0.1-REDHAT7.5-X86.tar.gz
su - omm
tar -xvf GaussDB_100_1.0.1-REDHAT7.5-X86.tar.gz
tar -xvf GaussDB_100_1.0.1-CLUSTER-REDHAT7.5-64bit.tar.gz
[omm@gauss01 software]$ tar -xvf GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/sshexkey.py
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/upgrade.py
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/funclib.py
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/install.py
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/GaussDB_100_1.0.1-RUN-REDHAT-64bit.sha256
GaussDB_100_1.0.1-DATABASE-REDHAT-64bit/GaussDB_100_1.0.1-RUN-REDHAT-64bit.tar.gz
使用root用户安装(添加-O参数不建库,手工建库方便定制化)(两个节点均需操作)
python install.py -U omm:dbgrp -R /gdb/gaussdb/app -D /gdb/gaussdb/data -O
三、创建主库和备库
1、 配置主库参数文件
虽然安装软件是没有建库,但是相关的目录已经创建好,不需要手工创建
--到 /gdb/gaussdb/data/cfg目录修改zengine.ini
TEMP_BUFFER_SIZE = 1G
DATA_BUFFER_SIZE = 2G
SHARED_POOL_SIZE = 1G
LOG_BUFFER_SIZE = 64M
DBWR_PROCESSES = 8
LOG_BUFFER_COUNT = 8
SESSIONS = 800 --跟进需要设置,最大值为8000
INSTANCE_NAME = gyl_pri --修改实例名
LSNR_ADDR = 127.0.0.1,192.168.80.121 --添加本机地址到监听端口
LSNR_PORT = 1888 --监听端口
ENABLE_SYSDBA_LOGIN = TRUE
REPL_PORT =1889
ARCHIVE_DEST_2=local_host=192.168.80.121 SERVICE=192.168.80.122:1889 SYNC PRIMARY_ROLE
2、启动主库到nomount阶段
[omm@gauss01 cfg]$ cd $GSDB_HOME/bin
[omm@gauss01 bin]$ python zctl.py -t start -m nomount -D /gdb/gaussdb/data
Successfully started instance.
3、创建主库
[omm@gauss01 bin]$ zsql / as sysdba -q
connected.
SQL> @/home/omm/create_db.sql
SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Succeed.
SQL>
SQL> select instance_name,status from dv_instance;
INSTANCE_NAME STATUS
-------------------- --------------------
gyl_pri OPEN
1 rows fetched.
SQL> select name,status from dv_database;
NAME STATUS
-------------------------------- --------------------
GYL_PRI OPEN
1 rows fetched.
create_db.sql内容如下
create database gyl_pri character set utf8
CONTROLFILE('/gdb/gaussdb/data/cntl1', '/gdb/gaussdb/data/cntl2', '/gdb/gaussdb/data/cntl3')
LOGFILE('/gdb/gaussdb/data/log1' size 128M, --这里将日志组数和大小进行了修改
'/gdb/gaussdb/data/log2' size 128M,
'/gdb/gaussdb/data/log3' size 128M)
system tablespace DATAFILE '/gdb/gaussdb/data/system' size 1G
undo tablespace DATAFILE '/gdb/gaussdb/data/undo' size 1G
default tablespace DATAFILE '/gdb/gaussdb/data/user1' size 1G autoextend on next 32M,
'/gdb/gaussdb/data/user2' size 1G autoextend on next 32M,
'/gdb/gaussdb/data/user3' size 1G autoextend on next 32M,
'/gdb/gaussdb/data/user4' size 1G autoextend on next 32M,
'/gdb/gaussdb/data/user5' size 1G autoextend on next 32M
temporary tablespace TEMPFILE '/gdb/gaussdb/data/temp1_01' size 160M autoextend on next 32M,
'/gdb/gaussdb/data/temp1_02' size 160M autoextend on next 32M nologging
tablespace TEMPFILE '/gdb/gaussdb/data/temp2_01' size 160M autoextend on next 32M,
'/gdb/gaussdb/data/temp2_02' size 160M autoextend on next 32M
nologging undo tablespace TEMPFILE '/gdb/gaussdb/data/temp2_undo' size 1G
sysaux tablespace DATAFILE '/gdb/gaussdb/data/sysaux' size 160M autoextend on next 32M ARCHIVELOG;
4、配置备库参数
--到 /gdb/gaussdb/data/cfg目录修改zengine.ini
TEMP_BUFFER_SIZE = 1G
DATA_BUFFER_SIZE = 2G
SHARED_POOL_SIZE = 1G
LOG_BUFFER_SIZE = 64M
DBWR_PROCESSES = 8
LOG_BUFFER_COUNT = 8
SESSIONS = 800 --跟进需要设置,最大值为8000
INSTANCE_NAME = gyl_std --修改实例名
LSNR_ADDR = 127.0.0.1,192.168.80.122 --添加本机地址到监听端口
LSNR_PORT = 1888 --监听端口
ENABLE_SYSDBA_LOGIN = TRUE
REPL_PORT =1889
ARCHIVE_DEST_2=local_host=192.168.80.122 SERVICE=192.168.80.121:1889 SYNC PRIMARY_ROLE
5、启动备库到nomount阶段
[omm@gauss02 cfg]$ cd $GSDB_HOME/bin
[omm@gauss02 bin]$ python zctl.py -t start -m nomount -D /gdb/gaussdb/data
6、创建备库
[omm@gauss02 bin]$ zsql / as sysdba -q
connected.
SQL> build database;
Succeed.
SQL> select instance_name,status from dv_instance;
INSTANCE_NAME STATUS
-------------------- --------------------
gyl_std OPEN
1 rows fetched.
SQL> select name,status from dv_database;
NAME STATUS
-------------------------------- --------------------
GYL_PRI OPEN
1 rows fetched.
四、附录
1、主库状态查询
SQL> select dbid,name,status,open_status,database_role,switchover_status,protection_mode from dv_database;
DBID NAME STATUS OPEN_STATUS DATABASE_ROLE SWITCHOVER_STATUS PROTECTION_MODE
------------ -------------------------------- -------------------- -------------------- ------------------------------ -------------------- --------------------
328124986 GYL_PRI OPEN READ WRITE PRIMARY NOT ALLOWED MAXIMUM_PERFORMANCE
1 rows fetched.
2、备库状态查询
SQL> select dbid,name,status,open_status,database_role,switchover_status,protection_mode from dv_database;
DBID NAME STATUS OPEN_STATUS DATABASE_ROLE SWITCHOVER_STATUS PROTECTION_MODE
------------ -------------------------------- -------------------- -------------------- ------------------------------ -------------------- --------------------
328124986 GYL_PRI OPEN READ ONLY PHYSICAL_STANDBY TO PRIMARY MAXIMUM_PERFORMANCE
1 rows fetched.
3、备库的build database原理
从上面备库创建的过程发现,备库是通过一条命令实现的,对照Oracle的备库搭建,需要做备份还原,那GaussDB是如何实现备库创建的呢?观察/gdb/gaussdb/data/log/run下运行日志
UTC+8 2020-02-21 22:20:55.012|ZENGINE|00054|2904|INFO>[BUILD] build start, compress NONE, level 0 [knl_build.c:420]
UTC+8 2020-02-21 22:20:55.012|ZENGINE|00054|2904|INFO>[ARCH] Initialization complete [knl_archive.c:824]
UTC+8 2020-02-21 22:20:55.012|ZENGINE|00054|2904|INFO>[BUILD] remote backup, standby connect to primary 192.168.80.121:1889 [knl_build.c:141]
UTC+8 2020-02-21 22:21:03.855|ZENGINE|00000|2911|INFO>[RESTORE] restore datafiles finished [knl_restore.c:949]
UTC+8 2020-02-21 22:21:03.855|ZENGINE|00000|2911|INFO>[BACKUP] create logfiles completed [knl_restore.c:565]
UTC+8 2020-02-21 22:21:03.901|ZENGINE|00000|140247862086495|INFO>[BACKUP] Create /gdb/gaussdb/data/archive_log/arch_0_1.arc [knl_restore.c:362]
UTC+8 2020-02-21 22:21:04.110|ZENGINE|00000|140247862086495|INFO>[ARCH] Record archive log file /gdb/gaussdb/data/archive_log/arch_0_1.arc for log [0-1] s
tart 0 end 1 [knl_archive.c:284]
UTC+8 2020-02-21 22:21:04.110|ZENGINE|00000|2911|INFO>[RESTORE] restore logfiles finished, current backupset [knl_restore.c:964]
UTC+8 2020-02-21 22:21:28.078|ZENGINE|00054|2904|INFO>[BUILD] remote backup finished, release resources [knl_build.c:89]
UTC+8 2020-02-21 22:21:29.076|ZENGINE|00054|2904|INFO>[DB] database backup successfully [knl_database.c:1583]
UTC+8 2020-02-21 22:21:29.082|ZENGINE|00054|2904|INFO>start to alter database MOUNT [knl_database.c:1047]
UTC+8 2020-02-21 22:21:29.223|ZENGINE|00054|2904|INFO>[ARCH] Already initialized [knl_archive.c:803]
UTC+8 2020-02-21 22:21:29.223|ZENGINE|00054|2904|INFO>sucessfully alter database MOUNT [knl_database.c:1103]
UTC+8 2020-02-21 22:21:29.223|ZENGINE|00054|140247862086488|INFO>start to alter database OPEN [knl_database.c:1322]
UTC+8 2020-02-21 22:21:29.378|ZENGINE|00000|2883|INFO>rollback thread closed [knl_tran.c:1203]
......省略
从上述日志看,GaussDB的备库也是通过备份还原建立的。
最后修改时间:2020-02-25 14:45:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




