Adding a Database Node
-
When creating a database, you can specify the number of replicas for that database.
This determines the number of database instances in the database-group. -
The number of replicas can be dynamically increased even after the database is up and running,
by adding more nodes to the database-group. -
The nodes added must already exist in the cluster topology.
-
Once a new node is added to the database-group,
the cluster assigns a mentor node (from the existing database-group nodes) to update the new node. -
In this page:
Add database node - random
- Use
AddDatabaseNodeOperation
to add another database-instance to the database-group. - The node added will be a random node from the existing cluster nodes.
// Create the AddDatabaseNodeOperation
// Add a random node to 'Northwind' database-group
var addDatabaseNodeOp = new AddDatabaseNodeOperation("Northwind");
// Execute the operation by passing it to Maintenance.Server.Send
DatabasePutResult result = store.Maintenance.Server.Send(addDatabaseNodeOp);
// Can access the new topology
var numberOfReplicas = result.Topology.AllNodes.Count();
// Create the AddDatabaseNodeOperation
// Add a random node to 'Northwind' database-group
var addDatabaseNodeOp = new AddDatabaseNodeOperation("Northwind");
// Execute the operation by passing it to Maintenance.Server.SendAsync
DatabasePutResult result = await store.Maintenance.Server.SendAsync(addDatabaseNodeOp);
// Can access the new topology
var numberOfReplicas = result.Topology.AllNodes.Count();
Add database node - specific
- You can specify the node tag to add.
- This node must already exist in the cluster topology.
// Create the AddDatabaseNodeOperation
// Add node C to 'Northwind' database-group
var addDatabaseNodeOp = new AddDatabaseNodeOperation("Northwind", "C");
// Execute the operation by passing it to Maintenance.Server.Send
DatabasePutResult result = store.Maintenance.Server.Send(addDatabaseNodeOp);
// Create the AddDatabaseNodeOperation
// Add node C to 'Northwind' database-group
var addDatabaseNodeOp = new AddDatabaseNodeOperation("Northwind", "C");
// Execute the operation by passing it to Maintenance.Server.SendAsync
DatabasePutResult result = await store.Maintenance.Server.SendAsync(addDatabaseNodeOp);
Syntax
public AddDatabaseNodeOperation(string databaseName, string nodeTag = null)
Parameters | Type | Description |
---|---|---|
databaseName | string |
Name of a database for which to add the node. |
nodeTag | string |
Tag of node to add. Default: a random node from the existing cluster topology will be added. |
Object returned by Send operation:DatabasePutResult |
Type | Description |
---|---|---|
RaftCommandIndex | long |
Index of the raft command that was executed |
Name | string |
Database name |
Topology | DatabaseTopology |
The database topology |
NodesAddedTo | List<string> |
New nodes added to the cluster topology. Will be 0 for this operation. |