Cluster Management
This feature provides information and management options for database clusters managed by ClusterControl. Clicking on the Clusters (sidebar menu) will list out all database clusters on the main panel, each of the entries has a real-time summary of the cluster, together with the dropdown management menu (see Cluster Actions):
Each entry will have the following details:
- Cluster name: Configurable during import or deployment, also via the s9s command line.
- Cluster ID: Immutable ID assigned by ClusterControl after it is registered.
- Cluster type: The database cluster type, recognized by ClusterControl. See Supported Databases.
- Nodes: All nodes grouped under this particular cluster.
- Auto recovery: The ClusterControl automatic recovery settings. See Failover and Recovery.
- Load: Last 5 minutes of cluster load average.
- ...: Every supported database cluster has its own set of dropdown menus. See Cluster Actions.
Choose a database cluster from the expandable list on the left-side menu to drill down on the cluster-specific features. The navigation breadcrumbs (top panel) will reflect with the corresponding cluster when selecting a cluster.
Cluster Actions
Provides shortcuts to the main cluster functionality. Each database cluster has its own set of functionality as described below:
MySQL/MariaDB/Percona (replication/standalone)
| Feature | Description |
|---|---|
| Add new → Replication node |
|
| Add new → Load balancer |
|
| Schedule maintenance |
|
| Encryption settings → Change SSL Certificate |
|
| Encryption settings → SSL encryption |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Audit logging |
|
| Readonly |
|
| Upgrades |
|
| Create database |
|
| Edit details |
|
| Remove cluster |
|
Galera Cluster (Percona XtraDB/MariaDB)
| Feature | Description |
|---|---|
| Add new → Node |
|
| Add new → Replication node |
|
| Add new → Load balancer |
|
| Schedule maintenance |
|
| Encryption settings → Change SSL Certificate |
|
| Encryption settings → Change Galera SSL Certificate |
|
| Encryption settings → Galera SSL encryption |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Readonly |
|
| Clone/Replicate the cluster → Clone cluster |
|
| Clone/Replicate the cluster → Create replica cluster |
|
| Find most advanced node |
|
| Upgrades |
|
| Create database |
|
| Rolling restart |
|
| Bootstrap cluster |
|
| Stop Cluster |
|
| Remove cluster |
|
PostgreSQL/TimescaleDB (streaming replication/standalone)
| Feature | Description |
|---|---|
| Add new → Replication node |
|
| Add new → Load balancer |
|
| Schedule maintenance |
|
| Encryption settings → Change SSL Certificate |
|
| Encryption settings → SSL encryption |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Audit logging |
|
| Create replica cluster |
|
| Upgrades |
|
| Enable TimescaleDB |
|
| Create database |
|
| Edit details |
|
| Setup logical replication |
|
| Remove cluster |
|
PostgreSQL Logical Replication
| Feature | Description |
|---|---|
| Actions → Edit details |
|
| Actions → Remove cluster |
|
| Pubs & Subs → Create publication | |
| Publisher cluster |
|
| Database |
|
| Publication name |
|
| Include all tables |
|
| Pubs & Subs → Create subscription | |
| Subscriber cluster |
|
| Subscription name |
|
| Publication |
|
| Database |
|
| copy data |
|
| Origin |
|
| Alarms | |
| Actions → Details |
|
| Actions → Copy link |
|
| Actions → Mute |
|
| Jobs | |
| Actions → Details |
|
| Actions → Copy link |
|
| Actions → Delete |
|
Attention
For PostgreSQL logical replication, setting origin=any can lead to a potential infinite loop in bi-directional replication setups, as changes replicated from one node can be sent back to the originating node. To avoid this, users should carefully configure subscriptions and use origin=none to prevent such behavior.
MongoDB
| Feature | Description |
|---|---|
| Add node |
|
| Schedule maintenance |
|
| Convert to shard |
|
| SSL encryption |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Upgrades |
|
| Edit details |
|
| Remove cluster |
|
Redis
| Feature | Description |
|---|---|
| Add node |
|
| Schedule maintenance |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Upgrades |
|
| Edit details |
|
| Remove cluster |
|
Microsoft SQL Server
| Feature | Description |
|---|---|
| Add node |
|
| Schedule maintenance |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Upgrades |
|
| Edit details |
|
| Remove cluster |
|
Elasticsearch
| Feature | Description |
|---|---|
| Add node |
|
| Schedule maintenance |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Upgrades |
|
| Edit details |
|
| Remove cluster |
|
Valkey
| Feature | Description |
|---|---|
| Add node |
|
| Schedule maintenance |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Upgrades |
|
| Edit details |
|
| Remove cluster |
|
ClickHouse
| Feature | Description |
|---|---|
| Add new → Data node |
|
| Add new → Keeper node |
|
| Schedule maintenance |
|
| Cluster/node recovery → Cluster recovery |
|
| Cluster/node recovery → Node recovery |
|
| Change RPC API token |
|
| Upgrades |
|
| Edit details |
|
| Remove cluster |
|
Not supported for ClickHouse
The following actions, available for other cluster types, are not available for ClickHouse:
- Readonly (cluster-wide read-only toggle): ClickHouse does not have a MySQL-style cluster-wide read-only mode.
- Create database: create databases directly on the ClickHouse cluster instead.
- Encryption settings → Change/Enable SSL Certificate: ClusterControl deploys ClickHouse with SSL/TLS enforced by default (plaintext ports are disabled), so there is no separate toggle to turn it on or off.
Cluster-specific actions
Bootstrap cluster
Bootstrap cluster refers to the process of bootstrapping or initializing a new Galera Cluster. When you’re setting up a new Galera Cluster or performing a full backup restoration, you typically need to bootstrap it, which involves designating one node as the initial primary component of the cluster. This bootstrap node serves as the starting point for the cluster, and other nodes will then join this initial node to form the cluster.
The following actions will be performed:
- The cluster will be initialized from the selected node.
- All nodes will be stopped unless they are already stopped.
- When the bootstrap command is successful, the selected node will be Synced. The rest of the nodes will be started as joiners, one node at a time.
| Field | Description |
|---|---|
| Bootstrap node |
|
| Graceful shutdown timeout (in seconds) |
|
| Force stop the nodes (after shutdown time) |
|
| Clear MySQL datadir on Joining nodes |
|
How ClusterControl Manages MSSQL on Linux
This section explains how ClusterControl deploys and manages Microsoft SQL Server on Linux. It covers the supported licenses, the differences between a standalone instance and an Always On availability group, the configuration that ClusterControl applies during deployment, and the current limitations. For the deployment steps, see Create Database Cluster.
Supported SQL Server licenses
ClusterControl installs SQL Server using mssql-conf setup and passes the chosen edition as MSSQL_PID. The following editions are accepted:
| Edition | Description |
|---|---|
| Evaluation |
|
| Developer |
|
| Express |
|
| Web |
|
| Standard |
|
| Enterprise |
|
To deploy with an edition other than Evaluation, use the ClusterControl CLI with the --license option. The value is not case-sensitive:
s9s cluster --create \
--cluster-type=mssql_ao_async \
--vendor=microsoft \
--provider-version=2022 \
--license=enterprise \
--db-admin=SQLServerAdmin \
--db-admin-pass='NqR$feGR68xli^#v' \
--nodes="mssql://dsa-mssql-db1:1433;dsa-mssql-db2:1433;dsa-mssql-db3:1433;" \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="MSSQL Server 2022 Always On" \
--log
The edition you choose is saved in the cluster configuration. Every node added later is installed with the same edition.
Note
ClusterControl does not accept a SQL Server product key during deployment. If you have purchased a license, deploy with the matching edition name (for example standard or enterprise), or deploy with Evaluation and switch the edition on each node afterwards using Microsoft's mssql-conf set-edition command:
sudo systemctl stop mssql-server
sudo /opt/mssql/bin/mssql-conf set-edition
sudo systemctl start mssql-server
ClusterControl does not detect an edition change made outside of ClusterControl. If you change the edition, nodes you add later are still installed with the edition stored in the cluster configuration.
Using ClusterControl to deploy or manage SQL Server does not change how Microsoft licenses SQL Server. Each node running SQL Server must be licensed as if you had set it up manually. Obtain your license from Microsoft, a Microsoft partner, or your cloud marketplace.
What happens when the license limit is exceeded
ClusterControl does not check or enforce SQL Server edition limits such as CPU cores, memory, database size, or the number of replicas in a basic availability group. These limits are enforced by SQL Server itself:
- When the 180-day Evaluation period ends, SQL Server stops running and the service does not start again until the edition is changed to a licensed one. ClusterControl reports the affected nodes as failed. To recover, change the edition with
mssql-conf set-editionas shown above. - If a job asks SQL Server to do something the edition does not allow (for example, adding a replica to an availability group on Express), SQL Server returns an error and the ClusterControl job fails with that error in the job log.
- Limits on CPU and memory are applied silently by SQL Server. The instance keeps running but only uses the resources the edition allows.
Make sure your SQL Server edition and the number of licensed cores match your deployment. Microsoft's editions and supported features page lists the limits for each edition.
Standalone vs Always On availability group
ClusterControl supports two SQL Server topologies. If you specify one node, ClusterControl deploys a standalone instance (mssql_single). If you specify more than one, it deploys an Always On availability group (mssql_ao_async).
| Standalone | Always On availability group | |
|---|---|---|
| Number of nodes |
|
|
| High availability |
|
|
| Availability group |
|
|
| Commit mode |
|
|
| Readable secondaries |
|
|
| Failover |
|
|
| Scaling |
|
|
| Backups |
|
|
Since the availability group uses CLUSTER_TYPE = NONE, it is not tied to Pacemaker or Windows Server Failover Clustering, and SQL Server does not fail over on its own. Take note of the following assumptions:
- No listener. ClusterControl does not create an availability group listener or a virtual IP. Your applications connect directly to the primary node, and they need to be pointed to the new primary after a failover. You can place a load balancer or DNS record in front of the nodes to handle this.
- Hostnames. All nodes must be added using a hostname or FQDN, not an IP address. Inside the availability group, each replica is identified by its short hostname (the part before the first dot), and the endpoint URL uses that short name (
tcp://<short_hostname>:5022). Every node must be able to resolve the other nodes by their short hostname. If a node is added with an FQDN, ClusterControl also renames the SQL Server instance (@@SERVERNAME) to the FQDN withsp_dropserver/sp_addserverand restarts SQL Server. If the rename fails, the job logs an error and the deployment continues. - Network. Port 1433 (client connections) must be reachable from ClusterControl and your applications. Port 5022 (availability group endpoint) must be open between all SQL Server nodes.
- Same version. All nodes in an availability group must run the same major SQL Server version. Adding a node with a different version is rejected.
- Automatic failover can lose data. Because replication is asynchronous, ClusterControl uses a forced failover (
FORCE_FAILOVER_ALLOW_DATA_LOSS) when the primary is down. It picks the connected secondary with the lowest lag. Transactions that had not reached that secondary are lost. - Old primary is fenced. After a forced failover, if the old primary comes back, ClusterControl takes it offline, stops it, puts it into maintenance mode for 30 days, and raises a critical split-brain alarm. Review the node for data loss, then remove it from the cluster and add it back as a new replica.
- Planned promotion. When you promote a secondary manually, ClusterControl temporarily switches the primary and the target replica to synchronous commit and waits until they are synchronized before it fails over, to avoid data loss. The original commit modes are restored afterwards.
Convert Always On availability group to standalone
ClusterControl has no built-in job to convert an Always On availability group cluster (mssql_ao_async) into a standalone SQL Server cluster (mssql_single). You can do it manually with the steps below. At the end, the current primary node becomes the standalone server and the secondary replicas are removed from the cluster.
| Applies to |
|
| Downtime |
|
Warning
- Take a full backup and confirm it completed before you start.
- Test the procedure on a non-production cluster first.
The steps use the following placeholders. Replace them with your own values:
| Placeholder | Example | Description |
|---|---|---|
<cluster_id> |
746 |
The ClusterControl cluster ID. |
<primary> |
mssql-db1.example.com |
The node to keep. It becomes the standalone server. |
<secondary> |
mssql-db2.example.com |
A secondary replica to remove. |
<ag_name> |
s9s_ag1 |
The availability group name. ClusterControl always names it s9s_ag1. |
<database_name> |
central |
A user database in the availability group. |
The SQL statements in this procedure are run with sqlcmd on the SQL Server node, connected as the admin user you set during deployment (default SQLServerAdmin). The SA account is reserved for ClusterControl:
Step 1: Prepare the cluster
-
Check the cluster type and the node roles in ClusterControl. The cluster type must be
mssql_ao_async. Note which node is the primary. -
On the primary, confirm the replica roles and health:
SELECT ag.name AS ag_name, ar.replica_server_name, ars.role_desc, ars.connected_state_desc, ars.synchronization_health_desc FROM sys.availability_groups ag JOIN sys.availability_replicas ar ON ag.group_id = ar.group_id JOIN sys.dm_hadr_availability_replica_states ars ON ar.replica_id = ars.replica_id; GOThere must be exactly one
PRIMARY, and it must be the node you want to keep. If the node you want to keep is a secondary, promote it first from Nodes → Actions (…) → Promote replica (see Promote replica), then run the query again. -
On the primary, list the databases in the availability group and keep a note of them. They must all be
ONLINEwhen the conversion is done. -
Take a full backup of the cluster. Go to ClusterControl GUI → Backups → Create backup, choose the cluster and set Backup method to Full. ClusterControl always takes SQL Server backups on the primary. See Create Backup.
Or use the CLI:
-
On the ClusterControl host, make a copy of the cluster configuration file and check the current values:
cp -p /etc/cmon.d/cmon_<cluster_id>.cnf /etc/cmon.d/cmon_<cluster_id>.cnf.bak.$(date +%F) grep -E '^(cluster_type|type|mssql_server_addresses)=' /etc/cmon.d/cmon_<cluster_id>.cnfThe output looks similar to this:
-
Point your applications to the primary node directly, and stop any traffic going to the secondaries. You can check the active sessions on the primary with:
Step 2: Remove the secondary replicas
Remove each secondary replica from the cluster. ClusterControl removes nodes one at a time and does not allow you to remove the primary. For each node, it runs ALTER AVAILABILITY GROUP ... REMOVE REPLICA on the primary, stops SQL Server on the removed node, and removes the node from mssql_server_addresses in the cluster configuration.
- Go to ClusterControl GUI → choose the cluster → Nodes.
- Click Actions (…) → Remove node on a secondary replica.
- Choose how to handle the service on the node, then click Remove. See Remove Database Node.
- Repeat for every secondary replica.
Check that only the primary is left, both in ClusterControl and in SQL Server:
Note
The copies of the databases on the removed nodes stay in RESTORING state. ClusterControl no longer manages those nodes. Drop the databases there, or decommission the servers, when you no longer need them.
Step 3: Drop the availability group
On the primary, drop the availability group.
Optionally, drop the database mirroring endpoint as well, since a standalone server does not use it:
Warning
Do not drop the S9sDbmEncryptCert certificate or the database master key. ClusterControl still uses the certificate to encrypt backups on the standalone server, and you need it to restore backups taken earlier.
Check that the availability group is gone. Both of these queries must return no rows:
SELECT name FROM sys.availability_groups;
SELECT DB_NAME(database_id) AS database_name FROM sys.dm_hadr_database_replica_states;
GO
Then check that all user databases are ONLINE and MULTI_USER:
Step 4: Change the cluster type in ClusterControl
Change the cluster type to mssql_single:
s9s cluster --change-config \
--cluster-id=<cluster_id> \
--opt-name=cluster_type \
--opt-value=mssql_single
Then check the configuration file on the ClusterControl host:
The output should look like this:
Note
type is an alias of cluster_type. If the file has a type= line that still says mssql_ao_async, edit it by hand so both say mssql_single. mssql_server_addresses must list only the primary node.
Step 5: Restart the ClusterControl controller
ClusterControl reads the cluster type from the configuration file when the controller starts, and updates the cluster record in the cmon database at the same time. Restart the controller to load the cluster as a standalone server:
Check the cluster:
Within a minute or two, the cluster type should show mssql_single and the state STARTED, with no errors in the log.
Step 6: Validate the standalone cluster
| Check | Command | Expected result |
|---|---|---|
| No availability group metadata | SELECT name FROM sys.availability_groups; |
No rows. |
| No HADR database states | SELECT DB_NAME(database_id) FROM sys.dm_hadr_database_replica_states; |
No rows. |
| Databases are online | SELECT name, state_desc, user_access_desc FROM sys.databases WHERE database_id > 4; |
All ONLINE and MULTI_USER. |
| Applications can connect | EXEC sp_who2 'active'; |
Application sessions on the user databases, with nothing blocked or stuck in SUSPENDED. |
| Cluster state | s9s cluster --list --long --cluster-id=<cluster_id> |
mssql_single, STARTED. |
| Node list | s9s node --list --long --cluster-id=<cluster_id> |
One node, online. |
| Backups work | Create a new full backup (mssqlfull). |
The backup job completes. |
Restoring a backup after the conversion
If you restore a full backup on the standalone server, ClusterControl drops the existing databases included in the backup before it restores them. If a database cannot be dropped, for example because sessions are still connected to it, the restore job fails with Could not drop database <database_name>. Cannot restore backup. In that case, drop the database manually and run the restore again:
USE master;
GO
ALTER DATABASE [central] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE [central];
GO
Warning
Only drop a database after you have confirmed that the backup you are going to restore is valid.
If a restored database is left in SINGLE_USER mode, set it back with ALTER DATABASE [central] SET MULTI_USER;.
Default configuration applied by ClusterControl
During deployment, ClusterControl performs the following configuration on each SQL Server node.
Operating system and packages
- Adds the Microsoft package repository and installs
mssql-serverandmssql-tools18(pluslibicuon RHEL-based systems). The EULA is accepted on your behalf. - Optionally sets SELinux to permissive and disables the firewall, depending on the deployment options.
- Installs the Microsoft ODBC driver (
msodbcsql18) on the ClusterControl host so it can connect to SQL Server. - Refuses to install if the data directory already exists and is not empty, to avoid overwriting an existing installation.
SQL Server settings (set with mssql-conf, stored in /var/opt/mssql/mssql.conf)
| Setting | Value |
|---|---|
filelocation.defaultdatadir |
/data/microsoft, or the data directory you specify. |
filelocation.defaultbackupdir |
/data/backups, or <datadir>/backups if you specify a custom data directory. |
filelocation.errorlogfile |
/var/log/mssql/errorlog, or <datadir>/log/errorlog if you specify a custom data directory. |
memory.memorylimitmb |
About 80% of the node's memory. ClusterControl rounds the total memory to the nearest power of two before calculating it. |
sqlagent.enabled |
1. SQL Server Agent is enabled, and so are Agent XPs. |
hadr.hadrenabled |
1, for Always On availability groups only. |
Users
| User | Purpose |
|---|---|
SA |
|
Admin user (default SQLServerAdmin) |
|
mssql_exporter |
|
The sa and mssql_exporter accounts cannot be dropped from ClusterControl. Avoid the characters { } ( ) [ ] @ ; = in the admin user name and password, because they break the ODBC connection string that ClusterControl uses. If you use them, ClusterControl replaces each one with % and only notes this in the job log, so the login is created with a different name or password than the one you entered.
ClusterControl also creates a database named admindb and installs a few helper stored procedures (such as sp_WhoIsActive) that it uses for monitoring and query statistics. For an availability group, admindb is backed up once and added to s9s_ag1.
Database master key and certificate
On a new deployment, ClusterControl creates a database master key and a certificate named S9sDbmEncryptCert in the master database. The same certificate is used for two things:
- Encrypting every backup taken by ClusterControl (
ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = S9sDbmEncryptCert)). - Authenticating the availability group endpoint
s9s_hadr_endpointbetween replicas.
For an availability group, the certificate is created on the primary, exported to <datadir>/s9s_dbm_certificate.cer and .pvk, copied to every replica and imported there. The master key password and the private key password are generated by ClusterControl and stored in the cluster configuration file as mssql_master_key_password and mssql_backup_cert_password. Right after the deployment, ClusterControl also runs a one-time backup of the certificate with a retention of 10 years.
The certificate is valid for one year
ClusterControl creates the certificate without an expiry date, so SQL Server uses its default validity of one year from the creation date. ClusterControl does not monitor the certificate and does not raise an alarm before it expires. Add a reminder to renew the certificate before it expires.
To check when the certificate expires, run the following on each node:
/opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SQLServerAdmin \
-Q "SELECT name, start_date, expiry_date FROM sys.certificates WHERE name LIKE 'S9sDbmEncryptCert%'"
Renew the backup certificate
Renewing creates a new certificate and switches ClusterControl over to it. It works for both standalone and Always On clusters. Use the ClusterControl CLI:
The following actions are performed:
- A new certificate named
S9sDbmEncryptCert_<timestamp>is created on the primary node. - The certificate and its private key are exported to the backup directory as
<name>.cerand<name>.pvk. - For an availability group, the files are copied to every secondary replica and the certificate is imported there. The endpoint
s9s_hadr_endpointis then stopped, switched to the new certificate and started again, first on the secondaries and then on the primary. - The cluster configuration is updated, so all new backups are encrypted with the new certificate.
Note
- For an availability group, replication pauses briefly while the endpoint restarts with the new certificate. Run the renewal during a quiet period.
- The old certificate is not dropped. SQL Server still needs it to restore backups that were encrypted before the renewal, so do not remove it while you still have those backups.
- Creating the new certificate needs a database master key in
master. ClusterControl creates one on new deployments, but not on imported clusters, so the renewal fails on an imported standalone server that has no master key. - To restore an encrypted backup on a server outside the cluster, you need the matching certificate and private key files, and the private key password (
mssql_backup_cert_password) from the cluster configuration file. Keep copies of these in a safe place.
Verify the renewal
The renewal job does not roll back if it fails partway, so check the result after the job finishes. Run the SQL queries with sqlcmd on the SQL Server node, connected as your admin user (default SQLServerAdmin). Checks 4 and 5 apply to availability groups only.
-
Check that the job finished. The status must be
FINISHED, and the log should list the new certificate name with noFAILURElines: -
On the ClusterControl host, check that the cluster configuration points to the new certificate. It should show
mssql_cert=S9sDbmEncryptCert_<timestamp>: -
On every node, check that the new certificate exists. You should see the previous certificate and the new
S9sDbmEncryptCert_<timestamp>, with anexpiry_dateone year from the renewal date: -
On every node, check that the endpoint uses the new certificate and is running. Each node should show
s9s_hadr_endpoint,STARTED, and the new certificate name: -
On the primary, check that all replicas reconnected after the endpoint restart. Every replica should be
CONNECTEDandHEALTHY: -
On every node, check that the exported certificate files exist in the backup directory (
/data/backupsby default) and are owned bymssql. The job does not stop if the export fails, so do not skip this check: -
Take a new full backup, then check on the primary that it was encrypted with the new certificate. The latest backup should show
S9sDbmEncryptCert_<timestamp>, while older backups show the previous certificate:
If a check fails, review the job log, fix the cause, and run the renewal again. Each run creates a new certificate with a new timestamp.
Known limitations
- Upgrades, rolling restarts, and changing the SSL/TLS certificate are not supported for SQL Server clusters. SQL Server uses its own self-signed certificate for client encryption.
- Only asynchronous commit mode is deployed. New replicas added later are also asynchronous.
- ClusterControl manages a single availability group,
s9s_ag1. Other availability groups on the same nodes are not managed. - No availability group listener is created, and SQL Server does not fail over automatically on its own. Failover relies on ClusterControl cluster recovery, which needs a valid ClusterControl license.
- Automatic failover is a forced failover and can lose transactions that were not yet replicated.
- Add node is not supported on a standalone instance, so it cannot be converted into an availability group.
- Nodes can only be added or removed one at a time, and the primary cannot be removed.
- The endpoint port 5022 is fixed and cannot be changed.
- A SQL Server product key cannot be entered during deployment. See Supported SQL Server licenses.
- ClusterControl does not check SQL Server edition limits before running a job. See What happens when the license limit is exceeded.
- The backup certificate expires after one year and is not monitored. See Renew the backup certificate.
- For imported clusters, ClusterControl does not create the master key and certificate, so backups are not encrypted unless a certificate with the name stored in the cluster configuration (
mssql_cert) already exists on the node. - Backups cannot be stored on the ClusterControl host. They are stored on the node that takes the backup.
- Restoring to an availability group must be done on the primary. Databases that belong to more than one availability group cannot be restored. System databases (
master,msdb,model) are never restored. - A database that is part of the availability group cannot be dropped until it is removed from the group.
- Importing SQL Server clusters with the ClusterControl CLI is not supported. Use the GUI instead.