整个过程还是很简单的
mkdir -p /gdb/gaussdb/app /gdb/gaussdb/data
chown -R omm.dbgrp gaussdb
/gdb/software/gaussdb/python-3.9.2/bin/python3 install.py -U omm:dbgrp -R /gdb/gaussdb/app -D /gdb/gaussdb/data -C LSNR_ADDR=127.0.0.1,192.168.1.75 -C LSNR_PORT=1888 -C REPL_PORT=1889 -C "LOG_ARCHIVE_DEST_2=SERVICE=192.168.1.76:1889 SYNC"
备库 -O 不建库
/gdb/software/gaussdb/python-3.9.2/bin/python3 install.py -U omm:dbgrp -R /gdb/gaussdb/app -D /gdb/gaussdb/data -C LSNR_ADDR=127.0.0.1,192.168.1.76 -C LSNR_PORT=1888 -C REPL_PORT=1889 -C "LOG_ARCHIVE_DEST_2=SERVICE=192.168.1.75:1889 SYNC" -O
主备库 | 云环境规格 | 操作系统 | 主机名 | IP地址 | 端口号 |
---|---|---|---|---|---|
主库 | 4vCPUs 8G | EulerOS 2.8 64bit with ARM | THR102-0001 | 192.168.0.164 | 1888 |
备库 | 4vCPUs 8G | EulerOS 2.8 64bit with ARM | THR102-0002 | 192.168.0.231 | 1888 |
主备机分别完成以下操作
- 创建用户及用户组
groupadd dbgrp
useradd -g dbgrp -d /home/omm -m -s /bin/bash omm
- 修改OMM用户密码
passwd omm
- 创建软件目录
mkdir -p /opt/software/gaussdb
- 进入目录并上传软件
GaussDB_T_1.0.2-EULER20SP8-ARM-64bit.tar.gz
主机操作
- 解压软件
[root@thr102-0001 ~]# cd /opt/software/gaussdb/
[root@thr102-0001 gaussdb]# ls
GaussDB_T_1.0.2-EULER20SP8-ARM-64bit.tar.gz
[root@thr102-0001 gaussdb]# tar -zxvf GaussDB_T_1.0.2-EULER20SP8-ARM-64bit.tar.gz
- 解压数据库
[root@thr102-0001 gaussdb]# tar -zxvf GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit.tar.gz
- 进入目录执行安装
[root@thr102-0001 gaussdb]# cd GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit/
[root@thr102-0001 GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit]# python install.py -U omm:dbgrp -R /opt/gaussdb/app -D /opt/gaussdb/data -C LSNR_ADDR=127.0.0.1,192.168.0.164 -C LSNR_PORT=1888 -C REPL_PORT=1889 -C "LOG_ARCHIVE_DEST_2=SERVICE=192.168.0.231:1889 SYNC"
# 输出信息
Checking runner.
Checking parameters.
End check parameters.
Checking user.
End check user.
Checking old install.
End check old install.
Checking kernel parameters.
Checking directory.
Checking integrality of run file...
Decompressing run file.
Setting user env.
Checking data dir and config file
Initialize db instance.
Creating database.
Creating database succeed.
Changing file permission due to security audit.
Install successfully, for more detail information see /home/omm/zengineinstall.log.
- 登录数据库查询主机角色
[root@thr102-0001 GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit]# cd
[root@thr102-0001 ~]# su - omm
Last login: Mon Mar 23 18:44:52 CST 2020
[omm@thr102-0001 ~]$ zsql / as sysdba -q
connected.
SQL> select database_role from dv_database;
DATABASE_ROLE
------------------------------
PRIMARY
1 rows fetched.
备机操作
- 解压软件
[root@thr102-0002 ~]# cd /opt/software/gaussdb/
[root@thr102-0002 gaussdb]# ls
GaussDB_T_1.0.2-EULER20SP8-ARM-64bit.tar.gz
[root@thr102-0002 gaussdb]# tar -zxvf GaussDB_T_1.0.2-EULER20SP8-ARM-64bit.tar.gz
- 解压数据库
[root@thr102-0002 gaussdb]# tar -zxvf GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit.tar.gz
- 进入目录执行安装
[root@thr102-0002 gaussdb]# cd GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit/
[root@thr102-0002 GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit]# python install.py -U omm:dbgrp -R /opt/gaussdb/app -D /opt/gaussdb/data -C LSNR_ADDR=127.0.0.1,192.168.0.231 -C LSNR_PORT=1888 -C REPL_PORT=1889 -C "LOG_ARCHIVE_DEST_2=SERVICE=192.168.0.164:1889 SYNC" -O
# 输出信息
Checking runner.
Checking parameters.
End check parameters.
Checking user.
End check user.
Checking old install.
End check old install.
Checking kernel parameters.
Checking directory.
Checking integrality of run file...
Decompressing run file.
Setting user env.
Checking data dir and config file
Initialize db instance.
Changing file permission due to security audit.
Install successfully, for more detail information see /home/omm/zengineinstall.log.
- 执行脚本
[root@thr102-0002 GaussDB_T_1.0.2-DATABASE-EULER20SP8-64bit]# su - omm
[omm@thr102-0002 ~]$ cd /opt/gaussdb/app/bin/
[omm@thr102-0002 bin]$ python zctl.py -t build
# 输出信息
Check if incremental build is available ...
Begin to shutdown database ...
Done
Begin to clear data and log ...
Done
Begin to startup instance nomount ...
Done
Is incremental build: False
Begin to build database ...
Done
Successfully build database
- 登录数据库查询备机角色
[omm@thr102-0002 bin]$ zsql / as sysdba -q
connected.
SQL> select database_role from dv_database;
DATABASE_ROLE
------------------------------
PHYSICAL_STANDBY
1 rows fetched.
同步验证
- 主库创建测试表插入数据
SQL> create table henry(id number);
Succeed.
SQL> insert into henry values(1);
1 rows affected.
SQL> commit;
Succeed.
SQL> select * from henry;
ID
----------------------------------------
1
1 rows fetched.
- 备库查询验证
------一个命令随便切换。方便
切完主库需要重新登录
GS-00339, uds connection is closed, reason: 32
SQL>
SQL>
SQL>
SQL> exit
[omm@gdb bin]$ zsql / as sysdba -q
connected.
SQL> insert into henry values(1);
GS-00773, operation can not be done when database is in readonly mode
SQL> select * from henry;
ID
----------------------------------------
1
1
1
3 rows fetched.
SQL> select * from henry;
ID
----------------------------------------
1
1
1
100
4 rows fetched.
SQL>
双机切换包含正常切换(switchover)和故障切换(failover)。
switchover
1、正常切换的应用场景如下。
当数据库升级时,先停止备机,升级备机数据库,然后启动备机,当主备关系稳定后切换主备机,然后升级原来的主机数据库,这样可保证业务零中断,数据零丢失,提供高可靠性数据库服务。
在复杂的应用系统中,除数据库软件还有其他应用进程,当这些进程产生异常时需进行切换,则为了避免数据丢失,主备数据库也要跟着切换。
2、正常切换步骤。
查询节点的角色和状态。
SQL> SELECT DATABASE_ROLE, DATABASE_CONDITION, SWITCHOVER_STATUS FROM DV_DATABASE; DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS ------------------------------ ------------------ -------------------- PHYSICAL_STANDBY NORMAL TO PRIMARY 1 rows fetched.
如果查询结果是备机,而且状态是normal,则可以在该节点上执行switchover。
下发switchover命令。
SQL> ALTER DATABASE SWITCHOVER; Succeed.
switchover只能在备机上执行,级联备上和主机上无法执行。
failover
failover适用于主机发生故障,而且短时间内无法及时恢复。在有级联备的情况下,如果主机和所有备机均已发生故障,则可以在级联备上执行failover升主。其操作步骤如下:
查询备机状态
查询节点状态。
SQL> SELECT DATABASE_ROLE, DATABASE_CONDITION, SWITCHOVER_STATUS FROM DV_DATABASE; DATABASE_ROLE DATABASE_CONDITION SWITCHOVER_STATUS ------------------------------ ------------------ -------------------- PHYSICAL_STANDBY DISCONNECTED TO PRIMARY
如果查询结果是备机,而且状态是DISCONNECTED,则可以在该节点上执行failover。
下发FAILOVER命令。
SQL> ALTER DATABASE FAILOVER;