Skip to main content

Migrating Admintools-based database to VCluster Framework

  • May 28, 2025
  • 0 replies
  • 4 views
SruthiA
Forum|alt.badge.img+1

Long-time users of the Open Text Analytics Database (Vertica) are likely familiar with the Admintools GUI. In this blog post, we introduce VCluster—a next-generation administrative utility designed to replace Admintools. VCluster offers both a command-line interface (CLI) and a modern web-based UI, providing a faster, more reliable experience. The VCluster CLI is primarily targeted at managing Eon Mode databases.  Unlike its predecessor, VCluster eliminates the need for node-to-node SSH connections by leveraging a REST API to manage the cluster efficiently.

This blog post guides you through converting an existing database managed by Admintools to VCluster and introduces you to the features of the VCluster Web UI.

Note: VCluster is primarily designed for EON Mode databases. However, it will work for Enterprise Mode as well.                                                 

Here’s a comparison table highlighting the key differences between VCluster and Admintools in Open Text Analytics Database (Vertica):

 

Feature / Capability

VCluster

Admintools

Interface Options

CLI and Web UI

CLI and GUI (older style)

Primary Use Case

Optimized for Eon Mode databases

Designed for Enterprise Mode (and works with EON Mode as well)

Communication Method

REST API (no SSH required)

SSH-based node-to-node communication

Performance

Faster and more reliable

Slower, especially in large or cloud clusters (due to SSH dependency)

Cloud-Native Compatibility

High – designed for modern, elastic environments

Limited – not fully optimized for cloud deployments

Logging and Error Reporting

Enhanced and more structured

Basic logging

Extensibility

Future-ready, easier to integrate with DevOps

Limited extensibility

User Experience

Modern, intuitive UI and consistent CLI

Older interface

Maintenance and Updates

Actively developed and improved

Legacy tool, limited updates

 Let’s walk through the steps to create a 3-node VMart database using Admintools in Vertica 25.2, with MinIO configured as the communal storage

 

 Prerequisites

Before you begin, ensure the following:

  • Vertica 25.2 is installed on all nodes.
  • MinIO is set up and accessible (with access key, secret key, and endpoint URL).
  • You have passwordless SSH access to all nodes (required for Admintools).
  • A list of hostnames or IPs for your cluster nodes.
  • MinIO credentials and bucket URL (e.g., s3://mybucket/vmart).

  1. Create the Database

               a. Users can always create a new database using VCluster. It's encouraged to use VCluster to create a database.

               b. The AdminTools created database is just as a setup for later migrating to VCluster instructions.

Use the following command to create the database

/opt/vertica/bin/admintools -t create_db -x auth_params.conf --depot-path=/home/dbadmin/migrate_to_vcluster --communal-storage-location=s3://sanumula/migrate_to_vcluster  --shard-count=6 -s 10.50.50.141,10.50.50.142,10.50.50.143 -d migrate_to_vcluster -l amylicense.key  --force-removal-at-creation -p 'password'

        Creating database migrate_to_vcluster

STATUS: vertica.engine.api.bootstrap_catalog is still running on 1 host: 10.50.50.141 as of 2025-05-20 18:30:42. See /opt/vertica/log/adminTools.log for full details.

        Starting bootstrap node v_migrate_to_vcluster_node0001 (10.50.50.141)

        Starting nodes:

                v_migrate_to_vcluster_node0001 (10.50.50.141)

        Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize.

        Creating database nodes

        Creating node v_migrate_to_vcluster_node0002 (host 10.50.50.142)

        Creating node v_migrate_to_vcluster_node0003 (host 10.50.50.143)

        Generating new configuration information

        Stopping single node db before adding additional nodes.

                Database shutdown complete

        Starting all nodes

Start hosts = ['10.50.50.141', '10.50.50.142', '10.50.50.143']

        Starting nodes:

                v_migrate_to_vcluster_node0001 (10.50.50.141)

                v_migrate_to_vcluster_node0002 (10.50.50.142)

                v_migrate_to_vcluster_node0003 (10.50.50.143)

        Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize.

        Node Status: v_migrate_to_vcluster_node0001: (DOWN) v_migrate_to_vcluster_node0002: (DOWN) v_migrate_to_vcluster_node0003: (DOWN)

        Node Status: v_migrate_to_vcluster_node0001: (DOWN) v_migrate_to_vcluster_node0002: (DOWN) v_migrate_to_vcluster_node0003: (DOWN)

        Node Status: v_migrate_to_vcluster_node0001: (DOWN) v_migrate_to_vcluster_node0002: (DOWN) v_migrate_to_vcluster_node0003: (DOWN)

        Node Status: v_migrate_to_vcluster_node0001: (UP) v_migrate_to_vcluster_node0002: (UP) v_migrate_to_vcluster_node0003: (UP)

Creating depot locations for 3 nodes

Communal storage detected: rebalancing shards

 

Waiting for rebalance shards. We will wait for at most 36000 seconds.

Installing ComplexTypes package

        Success: package ComplexTypes installed

Installing DelimitedExport package

        Success: package DelimitedExport installed

Installing JsonExport package

        Success: package JsonExport installed

Installing MachineLearning package

STATUS: vertica.engine.api.vsql_script.module is still running on 1 host: 10.50.50.141 as of 2025-05-20 18:32:00. See /opt/vertica/log/adminTools.log for full details.

STATUS: vertica.engine.api.vsql_script.module is still running on 1 host: 10.50.50.141 as of 2025-05-20 18:32:11. See /opt/vertica/log/adminTools.log for full details.

        Success: package MachineLearning installed

Installing OrcExport package

        Success: package OrcExport installed

Installing ParquetExport package

        Success: package ParquetExport installed

Installing VFunctions package

        Success: package VFunctions installed

Installing approximate package

        Success: package approximate installed

Installing flextable package

        Success: package flextable installed

Installing kafka package

        Success: package kafka installed

Installing logsearch package

        Success: package logsearch installed

Installing place package

        Success: package place installed

Installing txtindex package

        Success: package txtindex installed

Installing voltagesecure package

        Success: package voltagesecure installed

Installing kubernetes package

        Success: package kubernetes installed

Syncing catalog on migrate_to_vcluster with 2000 attempts.

Database creation SQL tasks completed successfully.

Database migrate_to_vcluster created successfully.

 

 

  1. Steps to Load VMart Data

Let's proceed with loading the VMart data into your Vertica database.

           a. Define the database schema

    • Vertica provides a sample dataset called VMart.
    • The vmart_define_schema.sql script runs a script that defines the VMart schema and creates tables.

[dbadmin@sanumula01 ~]$ cd /opt/vertica/examples/VMart_Schema

[dbadmin@sanumula01 VMart_Schema]$ vsql

Password:

Welcome to vsql, the Vertica Analytic Database interactive terminal.

 

Type:  \h or \? for help with vsql commands

       \g or terminate with semicolon to execute query

       \q to quit

 

migrate_to_vcluster=> \i vmart_define_schema.sql

CREATE SCHEMA

CREATE SCHEMA

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

ALTER TABLE

CREATE TABLE

CREATE TABLE

ALTER TABLE

CREATE TABLE

ALTER TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

ALTER TABLE

 

 

          b. Generate data

    • You can generate the sample data using vmart_gen.

 

[dbadmin@sanumula01 ~]$ cd /opt/vertica/examples/VMart_Schema

[dbadmin@sanumula01 VMart_Schema]$ vsql

Password:

Welcome to vsql, the Vertica Analytic Database interactive terminal.

 

Type:  \h or \? for help with vsql commands

       \g or terminate with semicolon to execute query

       \q to quit

 

migrate_to_vcluster=> \i vmart_define_schema.sql

CREATE SCHEMA

CREATE SCHEMA

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

ALTER TABLE

CREATE TABLE

CREATE TABLE

ALTER TABLE

CREATE TABLE

ALTER TABLE

CREATE TABLE

CREATE TABLE

CREATE TABLE

ALTER TABLE

 

 

      c. Load the data:                                 

  • You can load data into the VMart tables by executing the vmart_load_data.sql script, which contains the necessary COPY commands to populate the schema with sample data.

migrate_to_vcluster=> \i vmart_load_data.sql

 

 Rows Loaded

-------------

        1826

(1 row)

 

 Rows Loaded

-------------

       60000

(1 row)

 

 Rows Loaded

-------------

         250

(1 row)

 

 Rows Loaded

-------------

        1000

(1 row)

 

 Rows Loaded

-------------

          50

(1 row)

 

 Rows Loaded

-------------

       50000

(1 row)

 

 Rows Loaded

-------------

       10000

(1 row)

 

 Rows Loaded

-------------

         100

(1 row)

 

 Rows Loaded

-------------

         100

(1 row)

 

 Rows Loaded

-------------

        1000

(1 row)

 

 Rows Loaded

-------------

         200

(1 row)

 

 Rows Loaded

-------------

     5000000

(1 row)

 

 Rows Loaded

-------------

      300000

(1 row)

 

 Rows Loaded

-------------

     5000000

(1 row)

 

 Rows Loaded

-------------

      300000

(1 row)

 migrate_to_vcluster=>

        d. Verify the Load

      After loading, you can run a quick check:

 

migrate_to_vcluster=> SELECT fat_content

         FROM ( SELECT DISTINCT fat_content

                FROM product_dimension

                WHERE department_description

                IN ('Dairy') ) AS food

         ORDER BY fat_content

         LIMIT 5;

 

fat_content

-------------

          80

          81

          82

          83

          84

(5 rows)

 

 

3. Convert an Admintools-Managed Database to VCluster

 

VCluster CLI is a Go-based command-line utility that interfaces with a RESTful API for database administration. The API endpoints are exposed by NMA and secured via HTTPS Services.

Analytics Database (Vertica) provides built-in function called manage_config, which simplifies the process of migrating an existing database managed by Admintools to the VCluster framework.

To ensure proper communication and functionality of VCluster components, the following ports must be open and accessible: 

  • Port 5554 – Used by the Node Management Agent (NMA) for REST API-based cluster management over HTTPS. 
  • Port 8665 – Used by the VCluster Web Server to serve the Web UI over HTTPS. 

 

VCluster relies on NMA (Node Management Agent). So please ensure to start NMA on all the nodes using the following command if it is not running already.

The below command helps you start on all nodes at once if you provide the IP's for HOST_LIST variables.

for x in $HOST_LIST; do ssh $x /opt/vertica/bin/manage_node_agent.sh start node_management_agent; done

[dbadmin@sanumula03 ~]$  /opt/vertica/bin/manage_node_agent.sh start node_management_agent

Doing action start

Using binary name node_management_agent

Looking for node_management_agent in /opt/vertica/bin

Verifying no running node management agent process

Starting the node management agent

Started process 1415014

 

 

Once NMA is running on all nodes, you can migrate your existing Admintools-managed database to the VCluster framework using the manage_config utility.

This command:

  • Converts the current database configuration to be compatible with VCluster.
  • Registers the database with the VCluster Framework.

 

[dbadmin@sanumula01 ~]$ vcluster manage_config recover --db-name migrate_to_vcluster --hosts 10.50.50.141,10.50.50.142,10.50.50.143 --catalog-path /home/dbadmin --password password

✔ Collect node information

✔ Collect cluster information

✔ Update node state from running database

✔ Check NMA service health

✔ Read Vertica version

[INFO] Successfully recovered configuration file for database migrate_to_vcluster at /opt/vertica/config/vertica_cluster.yaml

 

 

Here is sample configuration YAML file which is used by VCluster.  This file serves a similar purpose to the traditional admintools.conf used in Admintools-managed environments.

[dbadmin@sanumula01 config]$ cat vertica_cluster.yaml

configFileVersion: "1.0"

dbName: migrate_to_vcluster

nodes:

    - name: v_migrate_to_vcluster_node0001

      address: 10.50.50.141

      subcluster: default_subcluster

      catalogPath: /home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0001_catalog

      dataPath: /home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0001_data

      depotPath: /home/dbadmin/migrate_to_vcluster/migrate_to_vcluster/v_migrate_to_vcluster_node0001_depot

      sandbox: ""

    - name: v_migrate_to_vcluster_node0002

      address: 10.50.50.142

      subcluster: default_subcluster

      catalogPath: /home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0002_catalog

      dataPath: /home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0002_data

      depotPath: /home/dbadmin/migrate_to_vcluster/migrate_to_vcluster/v_migrate_to_vcluster_node0002_depot

      sandbox: ""

    - name: v_migrate_to_vcluster_node0003

      address: 10.50.50.143

      subcluster: default_subcluster

      catalogPath: /home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0003_catalog

      dataPath: /home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0003_data

      depotPath: /home/dbadmin/migrate_to_vcluster/migrate_to_vcluster/v_migrate_to_vcluster_node0003_depot

      sandbox: ""

eonMode: true

communalStorageLocation: s3://sanumula/migrate_to_vcluster

ipv6: false

 

 

Let’s run the vcluster list_all_nodes command to review the current status of all nodes in the database.

[dbadmin@sanumula01 ~]$ vcluster list_all_nodes --password 'password' --config /opt/vertica/config/vertica_cluster.yaml

✔ Collect node information

✔ Collect cluster information

✔ Update node state from running database

✔ Check NMA service health

✔ Read Vertica version

[

  {

    "address": "10.50.50.141",

    "name": "v_migrate_to_vcluster_node0001",

    "state": "UP",

    "catalog_path": "/home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0001_catalog/Catalog",

    "subcluster": "default_subcluster",

    "sandbox": "",

    "is_primary": true,

    "version": "v25.2.0-0"

  },

  {

    "address": "10.50.50.142",

    "name": "v_migrate_to_vcluster_node0002",

    "state": "UP",

    "catalog_path": "/home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0002_catalog/Catalog",

    "subcluster": "default_subcluster",

    "sandbox": "",

    "is_primary": true,

    "version": "v25.2.0-0"

  },

  {

    "address": "10.50.50.143",

    "name": "v_migrate_to_vcluster_node0003",

    "state": "UP",

    "catalog_path": "/home/dbadmin/migrate_to_vcluster/v_migrate_to_vcluster_node0003_catalog/Catalog",

    "subcluster": "default_subcluster",

    "sandbox": "",

    "is_primary": true,

    "version": "v25.2.0-0"

  }

]

 

 

Now Let us quickly verify the data in our database.

migrate_to_vcluster=> SELECT fat_content

         FROM ( SELECT DISTINCT fat_content

                FROM product_dimension

                WHERE department_description

                IN ('Dairy') ) AS food

         ORDER BY fat_content

         LIMIT 5;

 

fat_content

-------------

          80

          81

          82

          83

          84

(5 rows)

 

 

 

Now that our database is migrated to VCluster, let us explore the Vcluster Web UI.

VCluster Web UI

To access the VCluster Web UI, Launch the VCluster web server on a single node only. Please don’t start it on multiple nodes.

[dbadmin@sanumula01 ~]$ /opt/vertica/bin/manage_vcluster_server.sh start vcluster_server

Doing action start

Using binary name vcluster_server

Looking for vcluster_server in /opt/vertica/bin

Starting vcluster server

Started process 2804506 

 

Download the /opt/vertica/config/vcluster_server/admin.p12 certificate to the local machine where you intend to access the VCluster Web UI. Next, import the admin.p12 certificate into your browser. The following screenshots apply to Google Chrome on a Windows machine.

Click 'Import' as shown above to launch the certificate import wizard. In the wizard, click 'Browse', select the admin.p12 file, and follow the on-screen prompts to complete the import. When prompted, enter the certificate password shared with you by the sales/support team.

The VCluster Web Server leverages an embedded HTTPS service, which requires TLS authentication for secure access. To enable browser-based access, configure TLS authentication and grant the TLS authentication method to the PUBLIC role.

[dbadmin@sanumula01 vcluster_server]$ vsql -c "create authentication tls_for_all method 'tls' host tls '0.0.0.0/0';"

Password:

CREATE AUTHENTICATION

[dbadmin@sanumula01 vcluster_server]$ vsql -c "grant authentication tls_for_all to public;"

Password:

GRANT AUTHENTICATION

 

 

 

Open your browser and navigate to the VCluster Web UI by entering the server’s hostname or IP address followed by port 8665 (e.g., https://<hostname>:8665).  Please use the hostname or the IP address where the VCluster Webserver was launched.  When prompted, accept the certificate to proceed.

 

This is the VCluster Web UI home page. The left-hand navigation panel provides access to various functional sections. In the bottom-right corner, a built-in chatbot is available to assist with executing a range of database operations.

Now let us use the VCluster Chatbot to initiate a database shutdown. It will display a list of available actions—here, it suggested the StopDB operation.

Upon selecting the StopDB action, the chatbot will redirect you to the corresponding page where you can stop the database.

Choose the Desired Cluster and Click on “Stop Database”.  If you want to delay the shutdown to allow active sessions to complete, enter the desired wait time (in seconds) in the Drain Seconds field.   After initiating the shutdown, you will be redirected to the Job Status page. This page displays real-time information about the Stop Database operation, including progress, logs, and final status.

Now let us use the VCluster Chatbot to start the database.

After selecting the StartDB action in the chatbot, you will be redirected to the Start Database page.

  • Enter the dbadmin password in the designated field.
  • If your database was configured with an on-prem S3-compatible storage solution (e.g., MinIO, PureStorage), provide the following s3 parameters:
    • AWSAuth – Your S3 access credentials.
    • AWSEndpoint – The endpoint URL of your S3-compatible service.
    • AWSEnableHTTPS – Set this based on whether your S3 service uses HTTPS (true or false).
    • AWSCAFile – Path to the certificate file

 

Click “Start Database” to initiate the startup process.

You will be redirected to the Job Status page, where you can track the progress and outcome of the Start Database operation.

After initiating the Start Database operation, the Job Status page confirms that the database startup has completed successfully.

To further validate:

  • Navigate to the Nodes section in the VCluster Web UI.
  • Review the status indicators for each node.
  • The UI should reflect that the database is UP and operational across all participating nodes.

This confirms that the database has been successfully brought online.

Feel free to explore the various features available in the VCluster Web UI. The interface is designed to streamline database administration with intuitive controls and real-time insights.

🚀 More features and enhanced functionality are on the way in future releases. Stay tuned for updates!

Frequently Asked Questions:

  1. Is it recommended to take backup of the database before converting it to vcluster?

 The vcluster manage_config command simply reads the catalog and generates a configuration file for use with the VCluster CLI. Since it does not modify the database, taking a backup beforehand is not required.

  1. Can I use admintools CLI once I migrate to Vcluster CLI?

After migrating to the VCluster CLI, it is not recommended to use the Admintools CLI. Users should exclusively use the VCluster CLI for all administrative tasks to ensure consistency and compatibility with the new framework.

  1. What is the default location of VCluster config YAML file?

By default, VCluster stores the generated YAML configuration files in the directory /opt/vertica/config

  1. What is Node Management Agent (NMA)?

The Node Management Agent (NMA)  is an HTTPS-based service that facilitates Vertica cluster management through a RESTful API interface.

  1. What is the default location of VCluster logs?

By default, VCluster logs are located in the directory /opt/vertica/log

  1. What happens if I use Admintools CLI commands after migrating to VCluster CLI?

While Admintools CLI may still function after migrating to VCluster—by internally issuing VCluster CLI commands—it is strongly discouraged to use it. Doing so can lead to configuration mismatches or even database corruption, especially since Admintools CLI is going to be deprecated soon.

This example demonstrates that, post-migration, Admintools delegates operations to the VCluster CLI behind the scenes.

Stopping the database prior to migration:

[dbadmin@sanumula01 VMart_Schema]$ admintools -t stop_db -d migrate_to_vcluster -p 'password'

Using connection draining for shutdown of an Eon mode database

Shutdown will use connection draining.

Shutdown will wait for all client sessions to complete, up to 60 seconds

Then it will force a shutdown.

Running shutdown metafunction...

Poller has been running for 0:00:00.000003 seconds since 2025-05-22 13:38:11.775758

 

 

------------------------------------------------------------

client_sessions     |node_count          |node_names

--------------------------------------------------------------

0                   |3                   |v_migrate_to_vcluster_node0002,v_migrate_to_vcluster_node0003,v_migrate_to_vclus...

 

 

------------------------------------------------------------

node_state          |node_count          |node_names

--------------------------------------------------------------

UP                  |3                   |v_migrate_to_vcluster_node0001,v_migrate_to_vcluster_node0002,v_migrate_to_vclus...

Stopping poller drain_status because it was canceled

Shutdown metafunction complete. Polling until database processes have stopped.

Database migrate_to_vcluster stopped successfully

                       

Stopping the database after migration:

[dbadmin@sanumula01 config]$ admintools -t stop_db -d migrate_to_vcluster -p 'password'

Warning: You are internally running Vcluster Commands. Please consider using Vcluster CLI, since we are deprecating adminTools.

⣷ Collect node information: in progress

✔ Collect node information

⣷ Collect cluster information: in progress

✔ Collect cluster information

⣷ Collect information for all up nodes: in progress

✔ Collect information for all up nodes

⣷ Synchronize catalog with communal storage: in progress

✔ Synchronize catalog with communal storage

⣷ Stop database: in progress

✔ Stop database

⣷ Verify database is not running: in progress

⣯ Verify database is not running: the database is not down yet

✔ Verify database is not running

[INFO] Successfully stopped a database with name migrate_to_vcluster

Successfully stopping database migrate_to_vcluster

[dbadmin@sanumula01 config]$