Migrate from File Archives to Log-Structured Archives (LSA)
LSA provides better performance than File Archive for write-intensive workloads. For more information on archive types, see Archive.
This section describes the steps to migrate from File archive to LSA.
| During the migration, archives are replaced one at a time. To avoid reducing the resilience of the database during the migration, a new archive of type LSA is created and an additional Storage Manager (SM) is added to the database to perform archive sync before an SM is shut down and File archive deleted. So, these migration steps require resources for one additional archive and SM to be provisioned prior to the migration. These additional resources can be deprovisioned after migration is complete. |
Steps to Migrate from File Archive to LSA
To migrate from File Archive to archive of type LSA, follow these steps for each archive.
-
View the details of the archives.
nuocmd show archives --db-name <db_name>For archives of type File, the archive location may have a prefix
file:or the prefix may be empty. Select an archive of type File and note the archive ID. This File archive will be replaced by an archive of type LSA. -
Create a new archive of type LSA with a new archive location.
nuocmd create archive --db-name <db_name> --server-id <server id> --archive-path lsa:<path>An existing archive or journal path must not be used as the archive path for LSA. -
Start an SM on the newly-created archive.
nuocmd start database --db-name test --incremental -
Wait for the new SM to reach the
RUNNINGstate. -
Shut down the SM running on the File archive selected in step 1. If there are no SMs running on this archive, skip to the step 6.
nuocmd shutdown process --start-id <start_id> -
nuocmd delete archive --archive-id <archive-id> --purge -
[Optional] Delete the storage associated with the archive deleted in step 6.
-
Repeat step 1 to step 7 until all the File Archives are replaced by archives of type LSA.
Example: Migrate from Two File Archives to Two Archives of Type LSA
This example shows the steps to replace two File archives with two archives of type LSA.
Setup:
-
A running database called
test. -
Two SMs and one Transaction Engine (TE) in the
RUNNINGstate. -
All the SMs run on the same host.
-
Each SM runs on a File Archive.
Assumption: There is free storage space at the location where the new archive is created to store a third copy of the database. For more information, see note.
First, list the processes running in the database:
nuocmd show domain
server version: 6.0-beta-2-946711ad9f, server license: Enterprise
server time: 2024-05-13T15:28:37.533, client token: f5ff3f9fe27d16664849e47d19beb73a0ee101c9
Servers:
[nuoadmin1] nuoadmin1:48005 [last_ack = 0.32] ACTIVE (LEADER, Leader=nuoadmin1, log=0/23/23) Connected *
Databases:
test [state = RUNNING]
[SM] nuoadmin1:48007 [start_id = 3] [server_id = nuoadmin1] [pid = 190] [node_id = 2] [last_ack = 6.05] MONITORED:RUNNING
[SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 7.14] MONITORED:RUNNING
[TE] nuoadmin1:48008 [start_id = 5] [server_id = nuoadmin1] [pid = 243] [node_id = 3] [last_ack = 2.42] MONITORED:RUNNING
-
View the details of the archives used by existing SMs, use
nuocmd show archives.For example :
nuocmd show archives --db-name test[0] nuoadmin1 : /var/opt/nuodb/archive/file1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48007 [start_id = 3] [server_id = nuoadmin1] [pid = 190] [node_id = 2] [last_ack = 4.98] MONITORED:RUNNING [1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 6.07] MONITORED:RUNNINGThere are two SMs each running on a File Archive.
The output shows that the archive used by the SMs are File Archives located at
/var/opt/nuodb/archive/file1and/var/opt/nuodb/archive/file2. -
Create a new archive of type LSA.
nuocmd create archive --db-name test --server-id nuoadmin1 --archive-path lsa:/var/opt/nuodb/archive/testlsa1Archive(archive_path=lsa:/var/opt/nuodb/archive/testlsa1, db_name=test, id=2, is_observer=False, observer_storage_groups=[], server_id=nuoadmin1, state=PROVISIONED)To view the details of the archives:
nuocmd show archives --db-name test[0] nuoadmin1 : /var/opt/nuodb/archive/file1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48007 [start_id = 3] [server_id = nuoadmin1] [pid = 190] [node_id = 2] [last_ack = 3.81] MONITORED:RUNNING [1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 4.89] MONITORED:RUNNING [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] PROVISIONEDArchive
2is the newly created archive with the locationlsa:/var/opt/nuodb/archive/testlsa1. -
Start an SM on the newly-created archive.
nuocmd start databasewith theincrementaloption starts a new SM on the newly provisioned archive of type LSA.nuocmd start database --db-name test --incrementalSTARTING: StartProcessRequest(archive_id=2, db_name=test, engine_type=SM, expected_incarnation_major=1, expected_incarnation_minor=0, labels={}, options={}, server_id=nuoadmin1)To view the processes running on the domain:
nuocmd show domainserver version: 6.0-beta-2-946711ad9f, server license: Enterprise server time: 2024-05-13T15:30:31.446, client token: 14c01f10c990b33954666f27de55f964e54c50a0 Servers: [nuoadmin1] nuoadmin1:48005 [last_ack = 0.04] ACTIVE (LEADER, Leader=nuoadmin1, log=0/31/31) Connected * Databases: test [state = RUNNING] [SM] nuoadmin1:48007 [start_id = 3] [server_id = nuoadmin1] [pid = 190] [node_id = 2] [last_ack = 6.56] MONITORED:RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 0.99] MONITORED:RUNNING [TE] nuoadmin1:48008 [start_id = 5] [server_id = nuoadmin1] [pid = 243] [node_id = 3] [last_ack = 6.29] MONITORED:RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 1.55] MONITORED:SYNCINGTo view the details of the archives:
nuocmd show archives --db-name test[0] nuoadmin1 : /var/opt/nuodb/archive/file1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48007 [start_id = 3] [server_id = nuoadmin1] [pid = 190] [node_id = 2] [last_ack = 0.15] MONITORED:RUNNING [1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 1.23] MONITORED:RUNNING [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 5.63] MONITORED:SYNCINGThe output shows that there are three archives. Archives
0and1are of type File, and archive2is of type LSA. -
Wait for the new SM to reach the
RUNNINGstate. -
Shut down the SM running on archive
0.nuocmd shutdown process --start-id 3nuocmd show archives --db-name test[0] nuoadmin1 : /var/opt/nuodb/archive/file1 @ test [journal_path = ] [observer_storage_groups = []] NOT_RUNNING [SM] nuoadmin1:48007 [start_id = 3] [server_id = nuoadmin1] [pid = 190] [node_id = 2] EXITED(REQUESTED_SHUTDOWN:SHUTTING_DOWN):(2024-05-13T15:31:26.281+0000) Gracefully shutdown engine (0) [1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 3.12] MONITORED:RUNNING [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 7.24] MONITORED:RUNNINGSM
3is shut down gracefully. -
Delete the archive
0.Delete the archive using
nuocmd delete archivewith thepurgeoption.nuocmd delete archive --archive-id 0 --purgeTo view the details of the remaining archives:
nuocmd show archives --db-name test[1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 3.99] MONITORED:RUNNING [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 8.40] MONITORED:RUNNING -
Delete the archive directory
/var/opt/nuodb/archive/file1from disk. -
Create a new archive of type LSA.
nuocmd create archive --db-name test --server-id nuoadmin1 --archive-path lsa:/var/opt/nuodb/archive/testlsa2Archive(archive_path=lsa:/var/opt/nuodb/archive/testlsa2, db_name=test, id=3, is_observer=False, observer_storage_groups=[], server_id=nuoadmin1, state=PROVISIONED)To view the details of the archives:
nuocmd show archives --db-name test[1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 0.91] MONITORED:RUNNING [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 5.34] MONITORED:RUNNING [3] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa2 @ test [journal_path = ] [observer_storage_groups = []] PROVISIONEDArchive
1is of type File, and archives2and3are of type LSA.To view the details of the processes running in the domain:
nuocmd show domainserver version: 6.0-beta-2-946711ad9f, server license: Enterprise server time: 2024-05-13T15:33:17.923, client token: daef3d4de0f316e73c3b2078eda9cd783d103ad5 Servers: [nuoadmin1] nuoadmin1:48005 [last_ack = 0.24] ACTIVE (LEADER, Leader=nuoadmin1, log=0/37/37) Connected * Databases: test [state = RUNNING] [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 7.39] MONITORED:RUNNING [TE] nuoadmin1:48008 [start_id = 5] [server_id = nuoadmin1] [pid = 243] [node_id = 3] [last_ack = 2.67] MONITORED:RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 1.81] MONITORED:RUNNING -
Start an SM on the newly-created archive.
nuocmd start databasewith theincrementaloption starts a new SM on the newly provisioned archive of type LSA.nuocmd start database --db-name test --incrementalSTARTING: StartProcessRequest(archive_id=3, db_name=test, engine_type=SM, expected_incarnation_major=1, expected_incarnation_minor=1, labels={}, options={}, server_id=nuoadmin1)To view the processes running on the domain:
nuocmd show domainserver version: 6.0-beta-2-946711ad9f, server license: Enterprise server time: 2024-05-13T15:33:58.256, client token: ae68e0ef272753816c08220d7523f00627b3ff45 Servers: [nuoadmin1] nuoadmin1:48005 [last_ack = 0.49] ACTIVE (LEADER, Leader=nuoadmin1, log=0/43/43) Connected * Databases: test [state = RUNNING] [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 1.32] MONITORED:RUNNING [TE] nuoadmin1:48008 [start_id = 5] [server_id = nuoadmin1] [pid = 243] [node_id = 3] [last_ack = 1.32] MONITORED:RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 1.32] MONITORED:RUNNING [SM] nuoadmin1:48007 [start_id = 7] [server_id = nuoadmin1] [pid = 377] [node_id = 5] [last_ack = 0.14] MONITORED:SYNCINGnuocmd show archives --db-name test[1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] [last_ack = 4.59] MONITORED:RUNNING [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 8.21] MONITORED:RUNNING [3] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48007 [start_id = 7] [server_id = nuoadmin1] [pid = 377] [node_id = 5] [last_ack = 7.02] MONITORED:SYNCINGThe output shows that there are three archives. Archive
1is of type File, and archives2and3are of type LSA. -
Wait for the new SM to reach the
RUNNINGstate. -
Shut down the SM running on archive
1.nuocmd shutdown process --start-id 4To view the details of the archives:
nuocmd show archives --db-name test[1] nuoadmin1 : /var/opt/nuodb/archive/file2 @ test [journal_path = ] [observer_storage_groups = []] NOT_RUNNING [SM] nuoadmin1:48006 [start_id = 4] [server_id = nuoadmin1] [pid = 197] [node_id = 1] EXITED(REQUESTED_SHUTDOWN:SHUTTING_DOWN):(2024-05-13T15:34:39.764+0000) Gracefully shutdown engine (0) [2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 0.27] MONITORED:RUNNING [3] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48007 [start_id = 7] [server_id = nuoadmin1] [pid = 377] [node_id = 5] [last_ack = 6.57] MONITORED:RUNNINGThe SM that was running on archive
1was shut down gracefully. -
Delete the archive
1.nuocmd delete archive --archive-id 1 --purgeTo view the details of the remaining archives:
nuocmd show archives --db-name test[2] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa1 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 6.28] MONITORED:RUNNING [3] nuoadmin1 : lsa:/var/opt/nuodb/archive/testlsa2 @ test [journal_path = ] [observer_storage_groups = []] RUNNING [SM] nuoadmin1:48007 [start_id = 7] [server_id = nuoadmin1] [pid = 377] [node_id = 5] [last_ack = 4.31] MONITORED:RUNNINGTo view the details of the domain:
nuocmd show domainserver version: 6.0-beta-2-946711ad9f, server license: Enterprise server time: 2024-05-13T15:33:58.256, client token: ae68e0ef272753816c08220d7523f00627b3ff45 Servers: [nuoadmin1] nuoadmin1:48005 [last_ack = 0.49] ACTIVE (LEADER, Leader=nuoadmin1, log=0/43/43) Connected * Databases: test [state = RUNNING] [TE] nuoadmin1:48008 [start_id = 5] [server_id = nuoadmin1] [pid = 243] [node_id = 3] [last_ack = 1.32] MONITORED:RUNNING [SM] nuoadmin1:48009 [start_id = 6] [server_id = nuoadmin1] [pid = 293] [node_id = 4] [last_ack = 1.32] MONITORED:RUNNING [SM] nuoadmin1:48007 [start_id = 7] [server_id = nuoadmin1] [pid = 377] [node_id = 5] [last_ack = 0.14] MONITORED:RUNNINGThe database now has two archives of type LSA (and none of type File), and there is an SM running on each archive.
-
Delete the archive directory
/var/opt/nuodb/archive/file2from disk.