These steps only apply to Composite Active/Passive clusters.
Our example cluster has two sites,
alpha
and
beta
. They are both members of
composite cluster global
. Site east
has hosts db1, db2 and db3. Site west has hosts db4, db5 and db6.
When working with composite clusters, using cctrl will by default connect you to the cluster service associated with the node in which you launched the tool, however you can easily move around to all clusters by simply using the use command as show in the examples below.
shell>cctrl
Tungsten Cluster 7.0.3 build 141 alpha: session established, encryption=false, authentication=false jgroups: unencrypted, database: unencrypted [LOGICAL] /alpha >use global
[LOGICAL] /global >ls
COORDINATOR[db2:AUTOMATIC:ONLINE] alpha:COORDINATOR[db2:AUTOMATIC:ONLINE] beta:COORDINATOR[db5:AUTOMATIC:ONLINE] ROUTERS: +---------------------------------------------------------------------------------+ |connector@db1[43475](ONLINE, created=2, active=0) | |connector@db2[75463](ONLINE, created=2, active=0) | |connector@db3[43981](ONLINE, created=2, active=0) | |connector@db4[59575](ONLINE, created=2, active=0) | |connector@db5[59581](ONLINE, created=2, active=0) | |connector@db6[59847](ONLINE, created=2, active=0) | +---------------------------------------------------------------------------------+ DATASOURCES: +---------------------------------------------------------------------------------+ |alpha(composite master:ONLINE) | |STATUS [OK] [2025/01/28 11:35:18 AM UTC] | +---------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |beta(composite slave:ONLINE) | |STATUS [OK] [2025/01/28 11:35:13 AM UTC] | +---------------------------------------------------------------------------------+
Composite Active Dataservice (Primary) -
alpha
[LOGICAL] /global >use alpha
[LOGICAL] /alpha >ls
COORDINATOR[db2:AUTOMATIC:ONLINE] ROUTERS: +---------------------------------------------------------------------------------+ |connector@db1[43475](ONLINE, created=0, active=0) | |connector@db2[75463](ONLINE, created=0, active=0) | |connector@db3[43981](ONLINE, created=0, active=0) | |connector@db4[59575](ONLINE, created=0, active=0) | |connector@db5[59581](ONLINE, created=0, active=0) | |connector@db6[59847](ONLINE, created=0, active=0) | +---------------------------------------------------------------------------------+ DATASOURCES: +---------------------------------------------------------------------------------+ |db1(master:ONLINE, progress=0, THL latency=1.061) | |STATUS [OK] [2025/01/28 11:35:02 AM UTC] | +---------------------------------------------------------------------------------+ | MANAGER(state=ONLINE) | | REPLICATOR(role=master, state=ONLINE) | | DATASERVER(state=ONLINE) | | CONNECTIONS(created=0, active=0) | +---------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |db2(slave:ONLINE, progress=0, latency=1.691) | |STATUS [OK] [2025/01/28 11:35:00 AM UTC] | +---------------------------------------------------------------------------------+ | MANAGER(state=ONLINE) | | REPLICATOR(role=slave, master=db1, state=ONLINE) | | DATASERVER(state=ONLINE) | | CONNECTIONS(created=0, active=0) | +---------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |db3(slave:ONLINE, progress=0, latency=1.382) | |STATUS [OK] [2025/01/28 11:35:02 AM UTC] | +---------------------------------------------------------------------------------+ | MANAGER(state=ONLINE) | | REPLICATOR(role=slave, master=db1, state=ONLINE) | | DATASERVER(state=ONLINE) | | CONNECTIONS(created=0, active=0) | +---------------------------------------------------------------------------------+
Composite Passive Dataservice (DR) -
beta
[LOGICAL] /alpha]ha >use beta
[LOGICAL] /beta >ls
COORDINATOR[db5:AUTOMATIC:ONLINE] ROUTERS: +---------------------------------------------------------------------------------+ |connector@db1[43475](ONLINE, created=2, active=0) | |connector@db2[75463](ONLINE, created=2, active=0) | |connector@db3[43981](ONLINE, created=2, active=0) | |connector@db4[59575](ONLINE, created=2, active=0) | |connector@db5[59581](ONLINE, created=2, active=0) | |connector@db6[59847](ONLINE, created=2, active=0) | +---------------------------------------------------------------------------------+ DATASOURCES: +---------------------------------------------------------------------------------+ |db4(relay:ONLINE, progress=0, latency=1.000) | |STATUS [OK] [2025/01/28 11:35:02 AM UTC] | +---------------------------------------------------------------------------------+ | MANAGER(state=ONLINE) | | REPLICATOR(role=relay, master=db1, state=ONLINE) | | DATASERVER(state=ONLINE) | | CONNECTIONS(created=0, active=0) | +---------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |db5(slave:ONLINE, progress=0, latency=1.515) | |STATUS [OK] [2025/01/28 11:35:12 AM UTC] | +---------------------------------------------------------------------------------+ | MANAGER(state=ONLINE) | | REPLICATOR(role=slave, master=db4, state=ONLINE) | | DATASERVER(state=ONLINE) | | CONNECTIONS(created=6, active=0) | +---------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |db6(slave:ONLINE, progress=0, latency=1.592) | |STATUS [OK] [2025/01/28 11:35:12 AM UTC] | +---------------------------------------------------------------------------------+ | MANAGER(state=ONLINE) | | REPLICATOR(role=slave, master=db4, state=ONLINE) | | DATASERVER(state=ONLINE) | | CONNECTIONS(created=6, active=0) | +---------------------------------------------------------------------------------+
Manually switch the composite Primary role to the other site:
[LOGICAL] /beta >use global
[LOGICAL] /global >switch
Savepoint switch_0(cluster=global, source=db2, created=2025/01/28 13:53:00 UTC) created SELECTED SLAVE: 'beta@global' FLUSHING TRANSACTIONS THROUGH 'db1@alpha' REPLICATOR 'db1' IS NOW USING MASTER CONNECT URI 'thl://db4:2112/' composite data source 'beta@global' is now OFFLINE PUT THE NEW MASTER 'beta@global' ONLINE PUT THE PRIOR MASTER 'alpha@global' ONLINE AS A SLAVE REVERT POLICY: MAINTENANCE => AUTOMATIC SWITCH TO 'beta@global' WAS SUCCESSFUL [LOGICAL] /global >ls
COORDINATOR[db2:AUTOMATIC:ONLINE] alpha:COORDINATOR[db2:AUTOMATIC:ONLINE] beta:COORDINATOR[db5:AUTOMATIC:ONLINE] ROUTERS: +---------------------------------------------------------------------------------+ |connector@db1[43475](ONLINE, created=2, active=0) | |connector@db2[75463](ONLINE, created=2, active=0) | |connector@db3[43981](ONLINE, created=2, active=0) | |connector@db4[59575](ONLINE, created=2, active=0) | |connector@db5[59581](ONLINE, created=2, active=0) | |connector@db6[59847](ONLINE, created=2, active=0) | +---------------------------------------------------------------------------------+ DATASOURCES: +---------------------------------------------------------------------------------+ |alpha(composite slave:ONLINE) | |STATUS [OK] [2025/01/28 01:53:13 PM UTC] | +---------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------+ |beta(composite master:ONLINE) | |STATUS [OK] [2025/01/28 01:53:13 PM UTC] | +---------------------------------------------------------------------------------+