Verschieben Sie den Datenordner und fahren Sie MySQL-Centos

11

Ich muss die Daten in einen anderen Ordner verschieben und auf meinem Cent OS DB Server fahren.

Ich habe eine neue Festplatte hinzugefügt (da der Speicherplatz knapp wurde).

Ich habe eine 1-TB-Festplatte und ich habe eine neue 2-TB-Festplatte, auf der ich die Daten auf demselben Server ablegen möchte (dedizierter Server, der in einem Rechenzentrum gehostet wird).

Ich möchte wissen, wie ich die Daten einfach migrieren kann, ohne Daten zu verlieren.

Derzeit habe ich die Daten in: /var/lib/mysql/auf Cent OS.mysql version is 5.1

Vladimir Kakazsky
quelle
Kann Ihr MySQL-Server während der Migration heruntergefahren werden?
Buch des Zeus
Prefereble nein, aber wenn es keinen anderen Weg gibt, dann ja
benutzt du innodb
@abdelsaid nein, ich benutze Myisam
Ich habe versucht, dasselbe in CENTOS 6.4 und centos.org/forums/viewtopic.php?t=6732 zu tun. Dieser Link hat perfekt funktioniert!

Antworten:

13

Schritt 1

Richten Sie zuerst Ihr Laufwerk ein (vorausgesetzt, es ist gemountet und in der fstab korrekt eingerichtet) und erstellen Sie ein neues MySQL-Verzeichnis:

sudo mkdir /path/to/new/mysql

Stellen Sie sicher, dass dieser Ordner über die richtigen Berechtigungen verfügt:

chown -R mysql:mysql /data/mysql

Jetzt können Sie hier den Dienst herunterfahren, während Sie Daten kopieren. Kopieren Sie die Daten aus dem aktuellen Datenverzeichnis in ein neues Datenverzeichnis. Beispiel:

sudo cp -R /var/lib/mysql/* /path/to/new/mysql/

Sie können jede Datenbank auch einzeln kopieren, wenn Sie dies bevorzugen oder wenn Sie sich sicher fühlen. Sie können den Ordner mit dem mvBefehl verschieben.

Schritt 2

Sie können den Speicherort Ihrer MySQL-Daten in Ihrem ändern my.cnf. Wenn Sie nicht wissen, wo sich diese Datei befindet, können Sie den folgenden Befehl ausführen:

locate my.cnf

Dies gibt Ihnen den Pfad, wo sich die my.cnf befindet. Bearbeiten Sie dann die Datei:

sudo vi /etc/mysql/my.cnf (Natürlich musst du durch deinen Weg ersetzen)

Suchen Sie nun nach datadir = /var/lib/mysqlund aktualisieren Sie auf datadir = /path/to/new/mysql.

Starten Sie dann MySQL neu

sudo /etc/init.d/mysqld restart

Wenn Sie sich nach einigen Tagen / Wochen wohl fühlen, können Sie den alten Ordner (/ var / lib / mysql) entfernen oder alles darin sichern.

Buch des Zeus
quelle
Er will keine Ausfallzeiten oder zumindest nur minimale. cp -R wird ewig dauern. Das Ändern des Verzeichnisses kann bei Online-Clients zu Datenverlust führen.
3
er sagte : prefereble no, but if there's no other way then yes. Wenn Sie viele Einfügungen in Tabellen haben, die Sie derzeit mit MyISAM (Tabellensperre) kopieren, können Fehler oder Daten auftreten, die nicht kopiert werden.
Buch des Zeus
Es gibt andere Möglichkeiten :)
1
@abdelsaid kannst du mir einen anderen Weg sagen?
Pat R Ellery
Ich habe full wamp \ bin \ mysql \ mysql5.5.24 ersetzt. Aber es werden Datenbanken
angezeigt
0

Wenn Sie während der Migration nicht herunterfahren möchten, würde ich eine Master-Master-Replikation für eine Chroot-Umgebung auf 2 TB mit MySQL (dieselbe Version) einrichten. Wenn diese Option aktiviert ist, schalten Sie 1 TB aus und Sie erhalten eine funktionierende Chroot-Umgebung.

Wenn Sie keine Chroot-Umgebung verwenden möchten, ändern Sie die Datei my.cnf (nicht die Chroot-Umgebung) so, dass sie darauf verweist, wo Sie Ihre MySQL-Dateien auf einer 2-TB-Festplatte speichern möchten, und deaktivieren Sie die Replikation. Schalten Sie dann die Chroot-Umgebung aus und verschieben Sie die Daten in die Datei my.cnf. Das Verschieben hier dauert nicht einmal eine Sekunde, da es sich auf derselben Festplatte befindet. Starten Sie MySQL neu.

Dies ist etwas komplex, Sie können damit zuerst in der lokalen VM-Umgebung spielen.

vimdude
quelle
6
Ja, es ist kompliziert für mich. Ich verstehe Chroot nicht und die Replikation ist für mich komplex.
Dann haben Sie Ausfallzeiten und das, was Book Of Zeus beschrieben hat, könnte funktionieren.
-2
[root@v ~]# service mysqld stop
Stopping mysqld:                                           [  OK  ]

[root@v ~]# mkdir /home/info

[root@v ~]# cp -r /var/lib/mysql/ /home/info
[root@v ~]# chown -R mysql:mysql /home/info/mysql
[root@v ~]# chown -R mysql:mysql /home/info/mysql/*
[root@v ~]# chcon -R -t mysqld_db_t /home/info/mysql
[root@v ~]# vi /etc/my.cnf

[mysqld]
datadir=/home/info/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


[root@v ~]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
[root@v ~]#
Muhammad Hamdani
quelle
Würde es Ihnen etwas ausmachen, eine Erklärung hinzuzufügen, wie dies das Problem löst?
Dekso