Déplacement de grandes bases de données

8

J'ai un serveur centos et / var / lib / mysql / fait 125 Go (le disque a 1 Go d'espace libre).

Habituellement, j'utiliserais mysqldump pour sauvegarder les bases de données, mais je ne travaille normalement pas avec des bases de données aussi volumineuses, j'ai donc besoin de connaître le moyen le plus sûr de copier les bases de données sur un nouveau serveur.

Tous les conseils appréciés!

user2029574
la source

Réponses:

3

Vous pouvez utiliser les étapes suivantes

Sur l'ancien serveur

1.Arrêtez le serveur mysql

Copiez le contenu de datadir vers un autre emplacement sur le disque en tant que ... mysqlbackup

Redémarrez le serveur mysql

4.Compressez les données (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5.Copiez le fichier compressé sur un nouveau serveur

Sur un nouveau serveur

1.Installez MySQL [la version MySQL doit être la même que celle de l'ancien serveur] (ne démarrez pas le serveur MySQL)

2. Décompressez le fichier compressé (tar -xzvf mysqlbackup.tar.gz)

3. Déplacez le contenu de mysqlbackup vers le datadir.

4.Assurez-vous que les autorisations de datadir sont correctes

5.Assurez-vous que votre innodb_log_file_size est le même sur le nouveau serveur, ou si ce n'est pas le cas, ne copiez pas les anciens fichiers journaux (MySQL les générera)

6.Démarrez MySQL.

Vous pouvez également consulter Comment puis-je déplacer une base de données d'un serveur à un autre?

Abdul Manaf
la source
2

Étant donné que la base de données source ne dispose que de 1 Go, vous n'avez pas de place pour mysqldump n'importe où.

Ce dont vous avez besoin est le suivant

  • Port 3306 ouvert dans le pare-feu du serveur de base de données source
  • Exécutez le programme mysqldump à partir du serveur de base de données cible

Pour un serveur de base de données source dont l'adresse IP est 10.20.30.40, connectez-vous à la base de données cible et exécutez cette

PIPE mysqldump INTO MySQL Instance sur le serveur DB cible

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 dans un fichier SQL. Charger MySQL à partir de 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

NOTES FINALES

Utilisez la technique n ° 1 s'il n'y a pas d'espace disque pour enregistrer un fichier SQL. Utilisez la technique n ° 2 si vous souhaitez vider le fichier et le charger ultérieurement.

RolandoMySQLDBA
la source
0

Depuis un nouveau serveur, en supposant que vous ayez configuré une paire de clés publique / privée

ssh root@oldserver mysqldump database | mysql database

devrait fonctionner correctement, je ne pense pas que l'espace disque sera utilisé du tout

automatem
la source
N'oubliez pas de l'utiliser ssh -Cpour la compression à la volée.
Twinkles
0

Habituellement, vous exécutez mysqldump pour créer une copie de base de données et des sauvegardes comme suit:

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

Copiez le fichier db-name.out en utilisant sftp / ssh sur le serveur MySQL distant:

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

Restaurer la base de données sur le serveur distant (connexion via ssh):

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

OU

$ mysql -u user -p 'password' db-name < db-name.out
Karthick
la source
0

Cela a fonctionné pour moi:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/
Alby
la source
Veuillez modifier votre message et fournir des explications qui aideront les futurs utilisateurs à comprendre votre code.
RLF
0

@ user2029574, votre matériel est-il dans le cloud? Moi aussi, je suis tombé une fois sur le même problème que vous étiez / êtes ici. Cependant, mon installation de MySQL est dans AWS et vous savez que cela signifie beaucoup de facilité pour attacher un autre disque de plus grande taille. Ici, je résume ce que j'ai fait:

  1. Attachez un nouveau disque plus grand à votre instance de serveur MySQL actuelle.
  2. Utilisez innobackupex de Percona pour préparer la sauvegarde complète des données MySQL actuelles dans le nouveau disque que vous avez attaché.
  3. Préparez une autre instance avec MySQL installé.
  4. Détachez le disque attaché à l'instance 1.
  5. Attachez maintenant le disque à la nouvelle instance, l'instance 2.
  6. Arrêtez le service MySQL dans l'instance 2.
  7. Modifiez le fichier de configuration MySQL de sorte que le répertoire de données pointe vers le nouvel emplacement.
  8. Restaurez la base de données dans la nouvelle instance. Encore une fois, innobackupex est là pour votre aide.
  9. Démarrez le serveur MySQL dans l'instance 2.

De cette façon, vous pouvez avoir vos applications qui se connectent à cette base de données tout le temps et vous pouvez également mettre à niveau le profil de votre instance cloud, si cela est également une exigence.

sameergautam
la source