暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

GaussDB100 HA安装

原创 Darren_Guo 2020-02-25
2087

一、安装环境准备

1、部署架构规划

image.png
GaussDB 100 HA部署的总体架构如上图,DM、CM、ETCD在单机部署中是非必要组件,因此本次不部署,DN节点规划如下:
image.png
注:数据目录需要>=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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论