10.5.2 Пример добавления экземпляров в ReplicaSet
Для добавления экземпляров в ReplicaSet выполните следующие шаги:
-
Используйте операцию
для добавления вторичных экземпляров вReplicaSet.addInstance(instance)ReplicaSet. Вы указываетеinstanceв виде URI-подобной строки подключения. Указанный вами пользователь должен обладать необходимыми привилегиями и быть идентичным на всех экземплярах в ReplicaSet. Дополнительную информацию см. в разделе 10.2, «Настройка экземпляров InnoDB ReplicaSet».Например, для добавления экземпляра по адресу
rs-2, номеру порта3306и пользователюrsadmin, выполните:mysql-js>
rs.addInstance('rsadmin@rs-2:3306')Adding instance to the replicaset... * Performing validation checks This instance reports its own address as rsadmin@rs-2 rsadmin@rs-2: Instance configuration is suitable. * Checking async replication topology... * Checking transaction state of the instance... NOTE: The target instance 'rsadmin@rs-2' has not been pre-provisioned (GTID set is empty). The Shell is unable to decide whether replication can completely recover its state. The safest and most convenient way to provision a new instance is through automatic clone provisioning, which will completely overwrite the state of 'rsadmin@rs-2' with a physical snapshot from an existing replicaset member. To use this method by default, set the 'recoveryMethod' option to 'clone'. WARNING: It should be safe to rely on replication to incrementally recover the state of the new instance if you are sure all updates ever processed in the replicaset were done with GTIDs enabled, there are no purged transactions and the new instance contains the same GTID set as the replicaset, or a subset of it. To use this method by default, set the 'recoveryMethod' option to 'incremental'. Please select a recovery method [C]lone/[I]ncremental recovery/[A]bort (default Clone): -
В данном случае мы не указали метод восстановления, поэтому операция подскажет, как лучше поступить. В этом примере мы выбираем вариант
Clone, так как на присоединяемом экземпляре нет активных транзакций. Таким образом, нет риска удаления данных с присоединяемого экземпляра. Дополнительную информацию см. в разделе 10.5.1, «Подготовка экземпляров для InnoDB ReplicaSet».Please select a recovery method [C]lone/[I]ncremental recovery/[A]bort (default Clone):
C* Updating topology Waiting for clone process of the new member to complete. Press ^C to abort the operation. * Waiting for clone to finish... NOTE: rsadmin@rs-2 is being cloned from rsadmin@rs-1 ** Stage DROP DATA: Completed ** Clone Transfer FILE COPY ############################################################ 100% Completed PAGE COPY ############################################################ 100% Completed REDO COPY ############################################################ 100% Completed ** Stage RECOVERY: \ NOTE: rsadmin@rs-2 is shutting down... * Waiting for server restart... ready * rsadmin@rs-2 has restarted, waiting for clone to finish... * Clone process has finished: 59.63 MB transferred in about 1 second (~1.00 B/s) ** Configuring rsadmin@rs-2 to replicate from rsadmin@rs-1 ** Waiting for new instance to synchronize with PRIMARY... The instance 'rsadmin@rs-2' was added to the replicaset and is replicating from rsadmin@rs-1. -
Предполагая, что экземпляр подходит для использования в InnoDB ReplicaSet, процесс восстановления продолжается. В данном случае новый присоединяемый экземпляр использует MySQL Clone для копирования всех транзакций, которые он ещё не применил, с первичного экземпляра, а затем присоединяется к ReplicaSet как онлайн-экземпляр. Для проверки используйте операцию
:rs.status()mysql-js>
rs.status(){ "replicaSet": { "name": "example", "primary": "rs-1:3306", "status": "AVAILABLE", "statusText": "All instances available.", "topology": { "rs-1:3306": { "address": "rs-1:3306", "instanceRole": "PRIMARY", "mode": "R/W", "status": "ONLINE" }, "rs-2:3306": { "address": "rs-2:3306", "instanceRole": "SECONDARY", "mode": "R/O", "replication": { "applierStatus": "APPLIED_ALL", "applierThreadState": "Replica has read all relay log; waiting for more updates", "receiverStatus": "ON", "receiverThreadState": "Waiting for source to send event", "replicationLag": null }, "status": "ONLINE" } }, "type": "ASYNC" } }Этот вывод показывает, что ReplicaSet с именем
exampleтеперь состоит из двух экземпляров MySQL, и первичный экземпляр —rs-1. В настоящее время есть один вторичный экземпляр по адресуrs-2, который является репликой первичного. ReplicaSet активен, что означает, что первичный и вторичный экземпляры синхронизированы. На этом этапе ReplicaSet готов к обработке транзакций. Для переопределения интерактивного режима MySQL Shell выберите наиболее подходящий метод восстановления. Используйте вариант
recoveryMethod, чтобы настроить, как экземпляр восстановит данные, необходимые для присоединения к ReplicaSet. Дополнительную информацию см. в разделе 8.4.6, «Использование MySQL Clone с InnoDB Cluster».
© 2025 Oracle
Licensed under the GPLv2 License.