Wie kann ich den alias einer Datenbank in MySQL?
Ich bin auf der Suche nach einem Weg, um alias einer Datenbank in MySQL. Der Grund ist, benennen Sie eine live -, Produktions-Datenbank, ohne dass das system heruntergefahren. Ich denke, ich kann der alias der Datenbank, um den neuen Namen, ändern und bereitstellen der code anschließen, um es in meiner Freizeit, und schließlich entfernen Sie die alten alias.
Ob es einen besseren Weg, dies zu erreichen, lassen Sie es mich bitte wissen.
DBI - proxying-Funktion kann von nutzen sein, wenn MySQL nicht etwas gebaut.
Sie werden entsetzt, um zu lernen, ich bin die Unterstützung eines PHP app.
Sie werden entsetzt, um zu lernen, ich bin die Unterstützung eines PHP app.
InformationsquelleAutor Schwern | 2009-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
https://dev.mysql.com/doc/refman/5.7/en/symbolic-links-to-databases.html sagt
Können Sie symbolische links, die link-Datenbank-Verzeichnis an einen anderen Speicherort, zum Beispiel außerhalb des datadir.
Aber Sie können nicht verwenden Sie symbolische links, um ein Datenbank-Verzeichnis ein "alias" für ein weiteres MySQL-Datenbank:
Der Grund dafür ist, dass die InnoDB-Datenbank behält die Namen und andere Metadaten in Ihre eigenen data dictionary gespeichert, in die tablespace-Datei. Wenn Sie zu verwirren, Sie werden nicht bekommen, was Sie wollen.
MySQL nicht irgendwelche DDL-syntax für das aliasing einer Datenbank.
Danke! Ich hatte überlegt, aber wusste nicht, ob es sicher war.
Ich habe keinen Zugriff auf Amazon-Datenbank-server-Dateisystem
dann können Sie keine alias-Datenbank. Wenn Sie Amazon RDS die Opfer eine gewisse Flexibilität.
Das scheint ein Bild des Grauens.
InformationsquelleAutor Bill Karwin
INNODB funktioniert nicht mit dem Dateisystem symlinks.
Ich habe es mit InnoDB und es funktioniert gut.
Es funktioniert gut, wenn der link ist in datadir ie
/var/lib/mysql
. Sie tun leider bekommen auch eine defekte version des langen namens db.Wenn Sie die innodb_file_per_table dies nicht die Datenbank-Verzeichnis mehr beweglich sind. Sie sich immer noch nicht bewegen es außerhalb von datadir.
InformationsquelleAutor user175725
Unter Unix die Möglichkeit zu symlink-eine Datenbank zum ersten mal zum erstellen eines Verzeichnisses auf eine Festplatte, wo Sie freien Raum und dann ein soft-link, um es aus dem MySQL-Daten-Verzeichnis.
MySQL unterstützt nicht das verknüpfen eines Verzeichnisses zu mehrfachen Datenbanken. Ersetzen einer Datenbank-Verzeichnis mit einem symbolischen link funktioniert so lange, wie Sie nicht machen, einen symbolischen link zwischen Datenbanken. Angenommen, Sie haben eine Datenbank db1, die unter dem MySQL-Daten-Verzeichnis und machen dann einen symlink db2, Punkte db1:
Das Ergebnis ist, dass, oder einer Tabelle tbl_a in "db1", es erscheint auch eine Tabelle tbl_a in db2. Wenn ein client updates "db1".tbl_a und anderen client-Aktualisierungen db2.tbl_a, Probleme wahrscheinlich auftreten.
Bestimmen Sie den Speicherort Ihres Daten-Verzeichnisses, verwenden Sie diese Anweisung:
Quelle: http://dev.mysql.com/doc/refman/5.1/en/symbolic-links.html
Ubuntu/Debian Beispiel
Achtung: funktioniert Nicht mit
MyISAM
Tabellen1) Bestimmen Sie den Speicherort Ihres Daten-Verzeichnisses:
2) Gehen Sie zum Speicherort Ihrer Daten Verzeichnis und Anschlag
mysql
service:3) Erstellen Sie einen soft-link:
4) Fix permisions:
5) Starten Sie
mysql
:InformationsquelleAutor Eduardo Cuomo
Den code verwenden, die nachstehend aufgeführt sind, zu erstellen Synonyme.
Der einfachste Weg, dies zu tun, die Arbeit wird auf Speicher-engines (z.B.: InnoDB, MyISAM usw.) ist die Verwendung von "Synonym" für alle die auf eine Datenbank zugreifen.
Diese links zeigen Ihnen die gespeicherten Abläufe, die Sie brauchen, um dies zu erreichen.
HINWEISE: entfernen Sie die "sys." aus "sys.quote_identifier" (sollte einfach sein "quote_identifier") in 'create_synonym_db.sql'.
Code:
Zu verwenden:
Dieser einen entsprechenden access-schema für 'CURRENT_DB' die es erlauben, alle standard-SQL-Funktionen werden über die Referenzierung von 'FAKE-DB_NAME'.
Entfernen Sie das synonym:
Dies wird drop synonym, aber nicht fallen lassen, die original-Datenbank (getestet auf Maria 10.10.0-Serie).
Um dem gerecht zu werden, müssten Sie alle app-Ebenen kommunizieren mit 'FAKE_DB_NAME', und, die tun müssen, die form von Wartung sind Sie zu diskutieren, Sie würden entfernen Sie die aktuelle synonym und ersetzen Sie es mit einem Hinweis auf die andere Datenbank.
So, sobald der Ladevorgang derer prodecures für die korrekte Wartung-Konto (was auch immer MySQL-Konto, das Sie verwenden für eine solche Wartung), solltest du Folgendes tun:
(1) Erstellen eines Synonyms:
(2) die Nutzung der Datenbank als normales synonym:
(3) Treffen Sie Ihre temp/backup/Ersatz DB-mit was auch immer Methoden, die Sie gewählt haben.
(4) Schalten Sie alle app-tier-SQL-code für die Temp-DB
(5) Führen, was Pflege, die Sie geplant haben auf 'NormalDB'
(6) Schalten Sie alle app-tier-SQL-code für die Temp-DB
Diesen beiden Transaktion soll in der Nähe der momentane.
Dies ermöglicht es Ihnen, nahtlos swap in jeder Datenbank, ohne code auf der app-Ebene.
WICHTIG: im Hinterkopf Behalten, wenn man "Umschalten", um 'TempDB', alle änderungen werden nicht in 'NormalDB', dass Sie effektiv waren "offline" (aus dem app-tier) für die Pflege.
InformationsquelleAutor Robert Mauro