Document Type | Technical Information
Category | Installation
Applicable Product Version | Tibero 7.2.4
Document Number | TINTI038
Overview
1. What is TAC?
TAC automatically fails over to a functioning node in case of failures in the DB engine, OS, system, or Public Network, maintaining a zero-downtime system and enabling rapid recovery.
Depending on the workload, it can be configured as a large-scale triple-redundant node beyond dual redundancy to deliver optimal performance when processing large volumes of data.
2. TAC Installation Architecture
Method
TAC Installation (using TAS)
1. Installation Environment
1-1) Installation Sequence
Step | Item | Description |
|---|---|---|
1 | Basic Settings | Environment variables, CM, Tibero tip settings |
2 | Cluster Membership Layer Configuration | Process of connecting each node into the cluster |
3 | Cluster Resource Layer Configuration | Registering resources used by the nodes |
4 | DB Configuration | Database setup |
1-2) Node Environment
Item | Node 1 | Node 2 | Description | |
OS | tibero0 | tibero1 | Hostname of each server | |
| User | tibero | tibero | OS user where Tibero will be installed | |
| Shared Volume | Configured per server environment | Typically, filesystems are created by the OS itself, but shared filesystems are created and managed through cluster solutions. For example, vxfs is created via Veritas solution, gpfs via hcmp, and gfs2 via pacemaker. | ||
TAC | tibero0 | tibero1 | Tibero Instance Name | |
| DB_NAME | tibero | Tibero Database Name | ||
| LISTENER_PORT | 8629 | 8629 | Tibero Listener Port | |
| Public IP | 192.168.50.121 NIC: enp0s3 | 192.168.50.122 NIC: enp0s3 | Public IP | |
| LOCAL_CLUSTER_ADDR | 10.10.10.121 | 10.10.10.122 | Inter-Connect IP | |
| LOCAL_CLUSTER_PORT | 18629 | 18629 | Communication port between Tibero nodes | |
| CM_PORT | 28629 | 28629 | Communication port for cmrctl command and TiberoβCM communication | |
TAS | tas0 | tas1 | TAS Tibero Instance Name | |
| TAS Tibero port | 7629 | 7629 | TAS Tibero Port | |
| LOCAL_CLUSTER_PORT | 17629 | 17629 | TAS Tibero Cluster Port | |
CM | cm0 | cm1 | TBCM SID | |
| CM Inter-Connect PORT | 29000 | 29000 | Communication port between TBCM nodes (defined during cmrctl add command) | |
| CM_UI_PORT | 28629 | 28629 | Port used to connect to TBCM for status check when executing cmrctl commands | |
1-3) Environment Variables
Since TAS requires starting an additional dedicated instance, a separate environment variable file (.bash_profile_tas) is created.
Item | Node 1 | Node 2 |
|---|---|---|
TAC | (tibero)$ cat .bash_profile ### Tibero ENV ### ### Tibero Cluster Manager ENV ### | (tibero)$ cat .bash_profile ### Tibero ENV ### ### Tibero Cluster Manager ENV ### |
TAS | (tibero)$ cat .bash_profile_tas ### TAS ENV ### | (tibero)$ cat .bash_profile_tas ### TAS ENV ### |
1-4) Check Shared Disks for TAS
The following shared disk devices are used for TAS.
[root@tibero ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
[root@tibero ~]# udevadm info --query=all --name=/dev/sdb | grep -E 'ID_SERIAL' | grep -v "SHORT" | sed 's/E: ID_SERIAL=//g'
cf9d02b4-4d402877
[root@tibero ~]# udevadm info --query=all --name=/dev/sdc | grep -E 'ID_SERIAL' | grep -v "SHORT" | sed 's/E: ID_SERIAL=//g'
5b02310d-1158d586
[root@tibero ~]# vi /etc/udev/rules.d/tas.rules
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ACTION=="add|change", KERNEL=="sd?", ENV{ID_SERIAL}=="cf9d02b4-4d402877", SYMLINK+="tasdisk/data001", OWNER=="tibero", GROUP=="dba", MODE=="0660"
ACTION=="add|change", KERNEL=="sd?", ENV{ID_SERIAL}=="5b02310d-1158d586", SYMLINK+="tasdisk/data002", OWNER=="tibero", GROUP=="dba", MODE=="0660"
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2. Installation
2-1) $CM.tip Configuration
Node 1 | Node 2 |
|---|---|
(tibero)$ vi $TB_HOME/config/$CM_SID.tip CM_NAME=cm0 | (tibero)$ vi $TB_HOME/config/$CM_SID.tip CM_NAME=cm1 |
2-2) $TB.tip Configuration
Item | Node 1 | Node 2 |
|---|---|---|
TAC | (tibero)$ vi $TB_HOME/config/$TB_SID.tip DB_NAME=tibero ############Memory & Session################### ########cluster################ | (tibero)$ vi $TB_HOME/config/$TB_SID.tip DB_NAME=tibero ############Memory & Session################### ########cluster################ |
TAS | (tibero)$ . ~/.bash_profile_tas INSTANCE_TYPE=AS CLUSTER_DATABASE=Y CM_PORT=28629 | (tibero)$ . ~/.bash_profile_tas INSTANCE_TYPE=AS CLUSTER_DATABASE=Y CM_PORT=28629 |
2-3) tbdsn.tbr Configuration
Node 1 | Node 2 |
|---|---|
(tibero)$ vi $TB_HOME/client/config/tbdsn.tbr tibero0=( tas0=( | (tibero)$ vi $TB_HOME/client/config/tbdsn.tbr tibero1=( tas1=( |
2-4) Register CM Membership Layer Resource
Node | Item | Command |
|---|---|---|
Node 1 | Start TBCM | (tibero)$ tbcm -b # Run as root if VIP environment is used |
| Register Network | (tibero)$ cmrctl add network --name net0 --ipaddr 10.10.10.121 --portno 29000 (tibero)$ cmrctl add network --name pub0 --nettype public --ifname enp0s3 | |
| Register Cluster | (tibero)$ cmrctl add cluster --name cls0 --incnet net0 --pubnet pub0 --cfile "+/dev/tasdisk/*" | |
| Start Cluster | (tibero)$ cmrctl start cluster --name cls0 | |
Node 2 | Start TBCM | (tibero)$ tbcm -b # Run as root if VIP environment is used |
| Register Network | (tibero)$ cmrctl add network --name net1 --ipaddr 10.10.10.122 --portno 29000 (tibero)$ cmrctl add network --name pub1 --nettype public --ifname enp0s3 | |
| Register Cluster | (tibero)$ cmrctl add cluster --name cls0 --incnet net1 --pubnet pub1 --cfile "+/dev/tasdisk/*" | |
| Start Cluster | (tibero)$ cmrctl start cluster --name cls0 |
2-5) Register CM Resource TAS Layer Resource
Register the TAS Resource.
Node | Item | Command |
|---|---|---|
Node 1 | Register TAS Service | (tibero)$ cmrctl add service --name tas --cname cls0 --type as |
| Register TAS | (tibero)$ cmrctl add as --name tas0 --svcname tas --dbhome $TB_HOME --envfile $HOME/.bash_profile_tas | |
Node 2 | Register TAS | (tibero)$ cmrctl add as --name tas1 --svcname tas --dbhome $TB_HOME --envfile $HOME/.bash_profile_tas |
2-6) Create TAS
TAS is created on Node 1.
Node | Item | Command |
|---|---|---|
Node 1 | Apply TAS profile | (tibero)$ . ~/.bash_profile_tas |
| Start TAS instance in nomount mode | (tibero)$ tbboot nomount | |
| Create Diskspace | (tibero)$ tbsql sys/tibero SQL> CREATE DISKSPACE DS0 EXTERNAL REDUNDANCY FAILGROUP FG1 DISK '/dev/tasdisk/data001' NAME data001, '/dev/tasdisk/data002' NAME data002 ; | |
| Start TAS and add thread | (tibero)$ tbboot SQL> alter diskspace DS0 add thread 1 ; | |
Node 2 | Apply TAS profile | (tibero)$ . ~/.bash_profile_tas |
| Start TAS instance | (tibero)$ tbboot |
2-7) Register CM Resource DB Layer Resource
Since services are shared, registration on Node 2 is omitted.
Node | Item | Command |
|---|---|---|
Node 1 | Register DB Service | (tibero)$ cmrctl add service --name tibero --cname cls0 --type db |
| Register DB | (tibero)$ cmrctl add db --name tibero0 --svcname tibero --dbhome $TB_HOME --envfile /home/tibero/.bash_profile | |
| Register VIP | (tibero)$ cmrctl add vip --name vip0 --node cm0 --svcname tibero --ipaddr 192.168.50.126/255.255.255.0 --bcast 192.168.50.255 | |
Node 2 | Register DB | (tibero)$ cmrctl add db --name tibero1 --svcname tibero --dbhome $TB_HOME --envfile /home/tibero/.bash_profile |
| Register VIP | (tibero)$ cmrctl add vip --name vip1 --node cm1 --svcname tibero --ipaddr 192.168.50.127/255.255.255.0 --bcast 192.168.50.255 |
Note
VIP registration is not mandatory, but if registered, TBCM must be started with root privileges.
VIP Registration Command
cmrctl add vip --name <vip_name> --node <cm_sid> --svcname <database_name> --ipaddr <virtual_IP>/<Netmask> --bcase <broadcast>
2-8) Create Database
Node | Item | Command |
|---|---|---|
Node 1 | Start DB in nomount mode | (tibero)$ . ~/.bash_profile (tibero)$ tbboot nomount (or cmrctl start db --name tibero0 --option "-t nomount") |
| Create Database | (tibero)$ tbsql sys/tibero SQL> create database | |
| Start DB | (tibero)$ tbboot | |
| Run system_install.sh | (tibero)$ sh $TB_HOME/scripts/system_install.sh -p1 tibero -p2 syscat | |
| Add Undo and Redo on Node 2 | (tibero)$ tbsql sys/tibero SQL> create undo tablespace UNDO1 datafile '+DS0/tbdata/undo011.dtf' size 100m autoextend on next 32M; | |
| Activate Node 2 | SQL> alter database enable public thread 1 ; | |
Node 2 | Start DB | (tibero)$ . ~/.bash_profile (tibero)$ tbboot |
2-9) Verification
Item | Details |
|---|---|
Cluster | |
DB |
Reference
1. $CM_SID.tip Configuration
Item | Required | Description |
|---|---|---|
| CM_NAME | Required | Name used as node identifier when creating the cluster. Different nodesβ CMs must have different values. |
| CM_UI_PORT | Required | Network port number used to connect to CM when executing cmrctl commands. |
| CM_RESOURCE_FILE | Required | Path to the CM resource file. |
| LOG_LVL_CM | Optional | Specifies the logging level of CM. Higher values cause CM to log more; accepts integer values from 1 to 6. (Default: 2) |
| CM_LOG_DEST | Optional | Specifies the directory where CM logs are stored. Must be an absolute path. (Default: $CM_HOME/instance/$CM_SID/) |
| CM_HEARTBEAT_EXPIRE | Optional | Defines the standard time for CM to detect issues with other nodesβ CM. After this time, the cluster member is considered out. (Unit: seconds, Default: 300) |
| CM_WATCHDOG_EXPIRE | Optional | Specifies the expiration period if the watchdog function between Tibero and CM is enabled. If CM does not operate within this time, Tibero automatically shuts down. Should be set lower than CM_HEARTBEAT_EXPIRE (Unit: seconds, Default: 290) |
| CM_FENCE | Optional | Determines whether to run the CM fence daemon. If CM performs I/O longer than the time specified by CM_WATCHDOG_EXPIRE, other CMs exclude this CMβs node from the cluster, requiring a reboot of this nodeβs OS. |