Kann ich eine RDS-Instanz umbenennen?

11

Ich habe eine Sammlung von RDS MySQL-Instanzen mit zufälligen (nutzlosen) DB-Instanznamen geerbt .

Ich muss oft in den Tags- Bereich stöbern , um herauszufinden, zu welchem ​​Projekt sie gehören.

Eine der Einstellungen, die ich in einem RDS ändern kann, ist die DB Instance Identifier.

Was passiert außer bei der Namensänderung, wenn ich dies ändere? Wird es den Code von irgendjemandem beeinflussen? Oder ist es eine harmlose Veränderung?

Dies sind Live-Systeme, die ich mir nicht leisten kann, herunterzufahren.

Danny Schoemann
quelle

Antworten:

10

Ja, Sie können eine RDS-Instanz auf eigene Gefahr umbenennen.

Wenn Sie eine DB-Instanz umbenennen, ändert sich der [DNS] -Endpunkt [Hostname] für die DB-Instanz, da die URL den Namen enthält, den Sie der DB-Instanz zugewiesen haben.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_RenameInstance.html

Aus diesem Grund müssen für Ihren Anwendungscode Konfigurationsänderungen koordiniert werden.

Weitere Informationen finden Sie unter dem obigen Link. Dies ist ein unterstützter und im Allgemeinen sicherer Vorgang, jedoch nur in Ihrem Wartungsfenster, da es zwangsläufig zu einer kurzen Unterbrechung kommt, wenn der DNS geändert wird und Ihr App-Code mit dem neuen Datenbank-Hostnamen eingetauscht wird.

Michael - sqlbot
quelle
3

Ja, Sie können den Namen der RDS-Instanz ändern, es wird jedoch dringend davon abgeraten, dies in einer LIVE-Produktionsumgebung zu tun. Dies würde den EndPoint ändern, was sich auf andere Ressourcen auswirken könnte, die aktiv auf den RDS-Server zugreifen (z. B. einen Anwendungsserver).

Dies würde wahrscheinlich eine Änderung der Eigenschaft / env-Variablen in Ihrem Code oder Ihren Konfigurationen erfordern (was idealerweise zu einer Freigabe der Konfiguration durch Konfigurationsverwaltung führen würde).

Um Unterbrechungen (in Zukunft) und Rollout-Änderungen mit geringerer RTO zu vermeiden, können Sie in Route53 einen Zwischen-DNS-Eintrag (CNAME) für Ihren RDS-Server erstellen und die Zwischen-URL in Ihrer Anwendung verwenden. Wenn sich der Name des RDS-Servers ändert, können Sie einfach den DNS-CNAME des neuen RDS-Endpunkts ändern. HINWEIS: Während der Namensänderung ist Ihr RDS-Server einige Minuten lang nicht verfügbar (mit altem Namen). Dies kann zu Störungen führen

Davon abgesehen sind Sie bereits voreingenommen in Bezug auf eine Lösung (Änderung der RDS-Namen) für Ihr Problem. Aber

Es gibt mehrere Lösungen für Ihr eigentliches Problem (Verwalten von RDS-Servern für jedes Projekt)

A. Vermeiden Sie die Verwendung von AWS Console so weit wie möglich. Warum sollten Sie sich nicht mit AWS CLI (das die Tags abrufen kann) befassen und ein Wrapper-Python / Bash-Skript schreiben, um alle RDS-Server aufzulisten? Mit Projektnamen können Sie über diese Ausgabe diese Server verwalten, z. B. einen Snapshot, ein Backup usw. Sie können auch mysql --login-path verwenden (wenn Sie für die DB-Verwaltung auf mysql sind) https://opensourcedbms.com/dbms/passwordless-authentication-using-mysql_config_editor-with-mysql-5-6/ .

B. (Kostenunabhängiger Ansatz) Wenn Sie sich dennoch entschieden haben, die RDS-Namen zu ändern, können Sie etwas ohne Auswirkungen tun.

B.1 When the next code/config release happens try to bring in the intermediate DNS change into action.

B.2 (Optional) Enable Multi AZ in RDS (HA and twice the price). This will help your application to access the secondary active slave when there is any disruption due to name change. There is an option called Reboot with failover which would reboot the master while failing over to the active secondary 

B.3 Enable replication (read-replica) (this will give you a new RDS end-point). Name the read replica properly with your project names

B.4. Once replication is complete (and during your SLA / maintenance window) promote your read replica (this will break replication) and make the intermediate DNS point to the new RDS (with your proper names)

HINWEIS Alle oben genannten Ansätze garantieren keine Datenintegrität und keine unangemessenen Datenaktualisierungen aufgrund von Transaktionen während des Flugs. Es ist daher immer besser, alle Transaktionen zu stoppen (indem Sie alle Anwendungen stoppen, die auf eine Wartungsseite zugreifen und diese bereitstellen, und die Vorgänge ausführen).

Ameen Ibrahim Raffic - "AIR"
quelle
Ich freue mich über Ihre Eingabe, obwohl mir aufgefallen ist, dass die seltsamen (nutzlosen) Namen speziell aus der Verwendung der CLI stammen. Wenn Sie eine RDs-Instanz über die Konsole erstellen, erhalten Sie aussagekräftige Namen.
Danny Schoemann
Es ist auch sehr schwierig (unmöglich?), eine Abrechnungsanalyse über die CLI durchzuführen und Nutzungsdiagramme anzuzeigen.
Danny Schoemann
1
# 1 Ohh, für die Erstellung können Sie einen Blick auf Cloudformation werfen (wo Sie die RDS-Namen definieren können), als ich CLI sagte, bezog ich mich auf das Lesen der RDS-Liste (zum einfachen Parsen in grep --output=text. # 2 und ja für die Abrechnungsanalyse, Konsole ist ein Muss, Sie sollten in Betracht ziehen, einen IAM-Benutzer mit Abrechnungsrolle zu erstellen und ihn Ihrer
Finanzperson zu übergeben