Verschieben großer Datenbanken


8

Ich habe einen Centos-Server und / var / lib / mysql / ist 125 GB (Festplatte hat 1 GB freien Speicherplatz).

Normalerweise würde ich mysqldump verwenden, um die Datenbanken zu sichern, aber normalerweise arbeite ich nicht mit so großen Datenbanken, daher muss ich wissen, wie die Datenbanken am sichersten auf einen neuen Server kopiert werden können.

Alle Ratschläge geschätzt!

Antworten:


3

Sie können die folgenden Schritte ausführen

Auf altem Server

1.Stoppen Sie den MySQL-Server

2.Kopieren Sie den Inhalt von datadir an einen anderen Speicherort auf der Festplatte als ... mysqlbackup

3.Starten Sie den MySQL-Server erneut

4.Komprimieren Sie die Daten (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5.Kopieren Sie die komprimierte Datei auf einen neuen Server

Auf neuem Server

1.Installieren Sie MySQL [Die MySQL-Version sollte mit der des alten Servers identisch sein] (MySQL-Server nicht starten)

2.Komprimierte Datei entpacken (tar -xzvf mysqlbackup.tar.gz)

3. Verschieben Sie den Inhalt von mysqlbackup in das Datenverzeichnis.

4.Stellen Sie sicher, dass die Berechtigungen von datadir korrekt sind

5.Stellen Sie sicher, dass Ihre innodb_log_file_size auf dem neuen Server identisch ist, oder kopieren Sie die alten Protokolldateien nicht, wenn dies nicht der Fall ist (MySQL generiert diese).

6.Starten Sie MySQL.

Sie können sich auch ansehen, wie ich eine Datenbank von einem Server auf einen anderen verschieben kann.


2

Da die Quell-DB nur 1 GB hat, haben Sie nirgendwo Platz für mysqldump.

Was Sie brauchen, ist das Folgende

  • Port 3306 ist in der Firewall des Quell-DB-Servers geöffnet
  • Führen Sie das Programm mysqldump vom Ziel-DB-Server aus

Melden Sie sich für einen Quell-DB-Server mit der IP-Adresse 10.20.30.40 bei der Ziel-DB an und führen Sie diese aus

PIPE mysqldump IN MySQL-Instanz auf dem Ziel-DB-Server

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-tranactions"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS}| mysql ${MYSQL_CONN}

PIPE mysqldump in SQL File. Laden Sie MySQL aus SQLFile

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-transaction"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --hex-blob --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLData.sql
mysql ${MYSQL_CONN} < MySQLData.sql

SCHLUSSBEMERKUNGEN

Verwenden Sie Technik Nr. 1, wenn kein Speicherplatz zum Speichern einer SQL-Datei vorhanden ist. Verwenden Sie Technik 2, wenn Sie die Datei sichern und zu einem späteren Zeitpunkt laden möchten.


0

Angenommen, Sie haben ein öffentliches / privates Schlüsselpaar vom neuen Server eingerichtet

ssh root@oldserver mysqldump database | mysql database

sollte gut funktionieren, ich glaube nicht, dass überhaupt Speicherplatz verwendet wird


Vergessen Sie nicht, die ssh -COn-the-Fly-Komprimierung zu verwenden.
Twinkles

0

Normalerweise führen Sie mysqldump aus, um eine Datenbankkopie und Sicherungen wie folgt zu erstellen:

$ mysqldump -u user -p db-name > db-name.out

Kopieren Sie die Datei db-name.out mit sftp / ssh auf den Remote-MySQL-Server:

$ scp db-name.out user@remote.box.com:/backup

Datenbank auf Remote-Server wiederherstellen (Login über ssh):

$ mysql -u user -p db-name < db-name.out

ODER

$ mysql -u user -p 'password' db-name < db-name.out

0

Das hat bei mir funktioniert:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/

Bitte bearbeiten Sie Ihren Beitrag und geben Sie einige Erklärungen an, die zukünftigen Benutzern helfen, Ihren Code zu verstehen.
RLF

0

@ user2029574, befindet sich Ihre Hardware in der Cloud? Auch ich bin einmal auf das gleiche Problem gestoßen, dass Sie hier waren / sind. Meine Installation von MySQL erfolgt jedoch in AWS, und Sie wissen, dass das Anschließen einer weiteren größeren Festplatte sehr einfach ist. Hier fasse ich zusammen, was ich getan habe:

  1. Schließen Sie eine neue größere Festplatte an Ihre aktuelle MySQL-Serverinstanz an.
  2. Verwenden Sie Perobas innobackupex , um die vollständige Sicherung der aktuellen MySQL-Daten auf der neuen Festplatte vorzubereiten, die Sie angehängt haben.
  3. Bereiten Sie eine weitere Instanz mit MySQL vor.
  4. Trennen Sie die an Instanz 1 angeschlossene Festplatte.
  5. Verbinden Sie nun die Festplatte mit der neuen Instanz, Instanz 2.
  6. Beenden Sie den MySQL-Dienst in der Instanz 2.
  7. Bearbeiten Sie die MySQL-Konfigurationsdatei so, dass das Datenverzeichnis auf den neuen Speicherort verweist.
  8. Stellen Sie die Datenbank in der neuen Instanz wieder her. Auch hier ist innobackupex für Ihre Hilfe da.
  9. Starten Sie den MySQL-Server in Instanz 2.

Auf diese Weise können Ihre Anwendungen, die eine Verbindung zu dieser Datenbank herstellen, jederzeit verfügbar sein, und Sie können auch das Profil Ihrer Cloud-Instanz aktualisieren, wenn dies ebenfalls erforderlich ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.