MySQL Shell API 8.0.40
Unified development interface for MySQL Products
|
Represents an InnoDB ReplicaSet. More...
Methods | |
None | add_instance (str instance, dict options) |
Adds an instance to the replicaset. More... | |
None | disconnect () |
Disconnects all internal sessions used by the replicaset object. More... | |
str | get_name () |
Returns the name of the replicaset. More... | |
dict | list_routers (dict options) |
Lists the Router instances. More... | |
None | rejoin_instance (str instance, dict options) |
Rejoins an instance to the replicaset. More... | |
None | remove_instance (str instance, dict options) |
Removes an Instance from the replicaset. More... | |
dict | status (dict options) |
Describe the status of the replicaset. More... | |
None | set_primary_instance (str instance, dict options) |
Performs a safe PRIMARY switchover, promoting the given instance. More... | |
None | force_primary_instance (str instance, dict options) |
Performs a failover in a replicaset with an unavailable PRIMARY. More... | |
bool | remove_router_metadata (RouterDef routerDef) |
Removes metadata for a router instance. More... | |
None | setup_admin_account (str user, dict options) |
Create or upgrade an InnoDB ReplicaSet admin account. More... | |
None | setup_router_account (str user, dict options) |
Create or upgrade a MySQL account to use with MySQL Router. More... | |
dict | options () |
Lists the ReplicaSet configuration options. More... | |
None | set_option (str option, str value) |
Changes the value of an option for the whole ReplicaSet. More... | |
None | set_instance_option (str instance, str option, str value) |
Properties | |
str | name |
Returns the name of the replicaset. | |
Represents an InnoDB ReplicaSet.
The ReplicaSet object is used to manage MySQL server topologies that use asynchronous replication. It can be created using the dba.create_replica_set() or dba.get_replica_set() functions.
None add_instance | ( | str | instance, |
dict | options | ||
) |
Adds an instance to the replicaset.
instance | host:port of the target instance to be added. |
options | Optional dictionary with options for the operation. |
This function adds the given MySQL instance as a read-only SECONDARY replica of the current PRIMARY of the replicaset. Replication will be configured between the added instance and the PRIMARY. Replication will use an automatically created MySQL account with a random password.
Once the instance is added to the replicaset, the function will wait for it to apply all pending transactions. The transaction sync may timeout if the transaction backlog is large. The timeout option may be used to increase that time.
The Shell connects to the target instance using the same username and password used to obtain the replicaset handle object. All instances of the replicaset are expected to have this same admin account with the same grants and passwords. A custom admin account with the required grants can be created while an instance is configured with dba.configure_replica_set_instance(), but the root user may be used too.
The PRIMARY of the replicaset must be reachable and available during this operation.
Pre-Requisites
The following pre-requisites are expected for instances added to a replicaset. They will be automatically checked by add_instance(), which will stop if any issues are found.
If the selected recovery method is incremental:
If clone is available, the pre-requisites listed above can be overcome by using clone as the recovery method.
The options dictionary may contain the following values:
The recoveryMethod option supports the following values:
If recoveryMethod is not specified 'auto' will be used by default.
The waitRecovery option supports the following values:
The recoveryProgress option supports the following values:
By default, if the standard output on which the Shell is running refers to a terminal, the waitRecovery option has the value of 3. Otherwise, it has the value of 2.
The cloneDonor option is used to override the automatic selection of a donor to be used when clone is selected as the recovery method. By default, a SECONDARY member will be chosen as donor. If no SECONDARY members are available the PRIMARY will be selected. The option accepts values in the format: 'host:port'. IPv6 addresses are not supported.
void disconnect | ( | ) |
Disconnects all internal sessions used by the replicaset object.
Disconnects the internal MySQL sessions used by the replicaset to query for metadata and replication information.
str get_name | ( | ) |
Returns the name of the replicaset.
str list_routers | ( | dict | options | ) |
Lists the Router instances.
options | Optional dictionary with options for the operation. |
This function lists and provides information about all Router instances registered for the ReplicaSet.
Whenever a Metadata Schema upgrade is necessary, the recommended process is to upgrade MySQL Router instances to the latest version before upgrading the Metadata itself, in order to minimize service disruption.
The options dictionary may contain the following attributes:
None rejoin_instance | ( | str | instance, |
dict | options | ||
) |
Rejoins an instance to the replicaset.
instance | host:port of the target instance to be rejoined. |
options | Optional dictionary with options for the operation. |
This function rejoins the given MySQL instance to the replicaset, making it a read-only SECONDARY replica of the current PRIMARY. Only instances previously added to the replicaset can be rejoined, otherwise the <ReplicaSet>.add_instance() function must be used to add a new instance.
The PRIMARY of the replicaset must be reachable and available during this operation.
Pre-Requisites
The following pre-requisites are expected for instances rejoined to a replicaset. They will be automatically checked by rejoin_instance(), which will stop if any issues are found.
If the selected recovery method is incremental:
If clone is available, the pre-requisites listed above can be overcome by using clone as the recovery method.
The options dictionary may contain the following values:
The recoveryMethod option supports the following values:
If recoveryMethod is not specified 'auto' will be used by default.
The waitRecovery option supports the following values:
The recoveryProgress option supports the following values:
By default, if the standard output on which the Shell is running refers to a terminal, the waitRecovery option has the value of 3. Otherwise, it has the value of 2.
The cloneDonor option is used to override the automatic selection of a donor to be used when clone is selected as the recovery method. By default, a SECONDARY member will be chosen as donor. If no SECONDARY members are available the PRIMARY will be selected. The option accepts values in the format: 'host:port'. IPv6 addresses are not supported.
None remove_instance | ( | str | instance, |
dict | options | ||
) |
Removes an Instance from the replicaset.
instance | host:port of the target instance to be removed |
options | Optional dictionary with options for the operation. |
This function removes an Instance from the replicaset and stops it from replicating. The instance must not be the PRIMARY and it is expected to be reachable.
The PRIMARY of the replicaset must be reachable and available during this operation.
The instance definition is the connection data for the instance.
The options dictionary may contain the following attributes:
The force option (set to true) is required to remove instances that are unreachable. Removed instances are normally synchronized with the rest of the replicaset, so that their own copy of the metadata will be consistent and the instance will be suitable for being added back to the replicaset. When the force option is set during removal, that step will be skipped.
str status | ( | dict | options | ) |
Describe the status of the replicaset.
options | Optional dictionary with options. |
This function will connect to each member of the replicaset and query their state, producing a status report of the replicaset as a whole, as well as of their individual members.
The following options may be given to control the amount of information gathered and returned.
Option 'extended' may have the following values:
None set_primary_instance | ( | str | instance, |
dict | options | ||
) |
Performs a safe PRIMARY switchover, promoting the given instance.
instance | host:port of the target instance to be promoted. |
options | Dictionary with additional options. |
This command will perform a safe switchover of the PRIMARY of a replicaset. The current PRIMARY will be demoted to a SECONDARY and made read-only, while the promoted instance will be made a read-write master. All other SECONDARY instances will be updated to replicate from the new PRIMARY.
During the switchover, the promoted instance will be synchronized with the old PRIMARY, ensuring that all transactions present in the PRIMARY are applied before the topology change is committed. If that synchronization step takes too long or is not possible in any of the SECONDARY instances, the switch will be aborted. These problematic SECONDARY instances must be either repaired or removed from the replicaset for the fail over to be possible.
For a safe switchover to be possible, all replicaset instances must be reachable from the shell and have consistent transaction sets. If the PRIMARY is not available, a forced failover must be performed instead, using force_primary_instance().
The following options may be given:
None force_primary_instance | ( | str | instance, |
dict | options | ||
) |
Performs a failover in a replicaset with an unavailable PRIMARY.
instance | host:port of the target instance to be promoted. If blank, a suitable instance will be selected automatically. |
options | Dictionary with additional options. |
This command will perform a forced failover of the PRIMARY of a replicaset in disaster scenarios where the current PRIMARY is unavailable and cannot be restored. If given, the target instance will be promoted to a PRIMARY, while other reachable SECONDARY instances will be switched to the new PRIMARY. The target instance must have the most up-to-date GTID_EXECUTED set among reachable instances, otherwise the operation will fail. If a target instance is not given (or is null), the most up-to-date instance will be automatically selected and promoted.
After a forced failover, the old PRIMARY will be considered invalid by the new PRIMARY and can no longer be part of the replicaset. If the instance is still usable, it must be removed from the replicaset and re-added as a new instance. If there were any SECONDARY instances that could not be switched to the new PRIMARY during the failover, they will also be considered invalid.
Data loss is possible after a failover, because the old PRIMARY may have had transactions that were not yet replicated to the SECONDARY being promoted. Moreover, if the instance that was presumed to have failed is still able to process updates, for example because the network where it is located is still functioning but unreachable from the shell, it will continue diverging from the promoted clusters. Recovering or re-conciliating diverged transaction sets requires manual intervention and may some times not be possible, even if the failed MySQL servers can be recovered. In many cases, the fastest and simplest way to recover from a disaster that required a forced failover is by discarding such diverged transactions and re-provisioning a new instance from the newly promoted PRIMARY.
The following options may be given:
str remove_router_metadata | ( | RouterDef | routerDef | ) |
Removes metadata for a router instance.
routerDef | identifier of the router instance to be removed (e.g. 192.168.45.70::system) |
MySQL Router automatically registers itself within the InnoDB cluster metadata when bootstrapped. However, that metadata may be left behind when instances are uninstalled or moved over to a different host. This function may be used to clean up such instances that no longer exist.
The <ReplicaSet>.list_routers() function may be used to list registered router instances, including their identifier.
None setup_admin_account | ( | str | user, |
dict | options | ||
) |
Create or upgrade an InnoDB ReplicaSet admin account.
user | Name of the InnoDB ReplicaSet administrator account. |
options | Dictionary with options for the operation. |
This function creates/upgrades a MySQL user account with the necessary privileges to administer an InnoDB ReplicaSet.
This function also allows a user to upgrade an existing admin account with the necessary privileges before a dba.upgrade_metadata() call.
The mandatory argument user is the name of the MySQL account we want to create or upgrade to be used as Administrator account. The accepted format is username[@host] where the host part is optional and if not provided defaults to ''.
The options dictionary may contain the following attributes:
If the user account does not exist, either the password, requireCertIssuer or requireCertSubject are mandatory.
If the user account exists, the update option must be enabled.
None setup_router_account | ( | str | user, |
dict | options | ||
) |
Create or upgrade a MySQL account to use with MySQL Router.
user | Name of the account to create/upgrade for MySQL Router. |
options | Dictionary with options for the operation. |
This function creates/upgrades a MySQL user account with the necessary privileges to be used by MySQL Router.
This function also allows a user to upgrade existing MySQL router accounts with the necessary privileges after a dba.upgrade_metadata() call.
The mandatory argument user is the name of the MySQL account we want to create or upgrade to be used by MySQL Router. The accepted format is username[@host] where the host part is optional and if not provided defaults to ''.
The options dictionary may contain the following attributes:
If the user account does not exist, either the password, requireCertIssuer or requireCertSubject are mandatory.
If the user account exists, the update option must be enabled.
shcore::Value options | ( | ) |
Lists the ReplicaSet configuration options.
This function lists the configuration options for the ReplicaSet and its instances.
None set_option | ( | str | option, |
str | value | ||
) |
Changes the value of an option for the whole ReplicaSet.
option | The option to be changed. |
value | The value that the option shall get. |
This function changes an option for the ReplicaSet.
The accepted options are:
Tags
Tags make it possible to associate custom key/value pairs to a ReplicaSet, storing them in its metadata. Custom tag names can be any string starting with letters and followed by letters, numbers and _. Tag values may be any JSON value. If the value is null, the tag is deleted.
None set_instance_option | ( | str | instance, |
str | option, | ||
str | value | ||
) |