Changing an IP Address in a Rolling Fashion (no downtime for reads)

This topic describes how to change the IP addresses for one or more hosts in a SingleStoreDB cluster.

Part 1 - Change the IP of leaf nodes one availability group at a time

  1. #disable-nodes-autostart

  2. Shut down the node:

    - If it is a leaf, first remove the leaf entry by executing:

    REMOVE LEAF '<IP of OLD leaf>':<port> FORCE;
    

    - sdb-admin stop-node

  3. Change the IP address.

  4. Unregister the old leaf from sdb-toolbox-config:

    sdb-toolbox-config unregister-host --host <old_ip_address_here>
  5. Register the new leaf to sdb-toolbox-config:

    sdb-toolbox-config register-host --host <new_ip_address_here>
  6. Register the node to sdb-admin:

    sdb-admin register-node --memsql-config /path/to/memsql.cnf --host <new_ip_address_here>
  7. Start memsql service on the new leaf:

    sdb-admin start-node --memsql-id <new_memsql_node_id>
  8. Add the leaf to the cluster:

    ADD LEAF user[:'password']@'<new_ip_address_here>':<node_port>;sdb-admin start-node --all
    
  9. Perform REBALANCE

    REBALANCE PARTITIONS ON db_name; 
  10. Enable autorestart

Part 2 - Change the IP of the Child Aggregator (one Child Aggregator at a time)

  1. #disable-nodes-autostart

  2. Stop the child aggregator node.

  3. Remove the aggregator from the cluster:

    REMOVE AGGREGATOR 'host':port;
  4. Change the IP address of the host.

  5. Unregister the old host from sdb-toolbox-config:

    sdb-toolbox-config unregister-host --host <old_ip_address_here>
  6. Register the new host to sdb-toolbox-config:

    sdb-toolbox-config register-host --host <new_ip_address_here>
  7. Register the node to sdb-admin:

    sdb-admin register-node --memsql-config /path/to/memsql.cnf --host <new_ip_address_here>
  8. Start the node.

  9. Add the node as an aggregator to cluster:

    ADD AGGREGATOR user[:'password']@'<new_ip_address_here>':port;
  10. Enable autostart.

Part 3 - PROMOTE one of the Child Aggregators to Master Aggregator

To promote a child aggregator to master aggregator, execute:

PROMOTE AGGREGATOR '<host>':<port> TO MASTER;

Part 4 - Change the old Master Aggregator IP

See the steps in Part 2. The process is the same as removing a child aggregator as now the original MA is currently a CA since we promoted an existing CA to master.

Part 5 - PROMOTE the previous Master Aggregator back to a Master Aggregator, if needed

To promote the original master aggregator back to a master aggregator if needed, execute:

PROMOTE AGGREGATOR '<new_ip_of_original_MA>':<port> TO MASTER;