Mover bases de datos grandes

8

Tengo un servidor centos y / var / lib / mysql / es de 125 GB (el disco tiene 1 GB de espacio libre).

Normalmente, usaría mysqldump para hacer una copia de seguridad de las bases de datos, pero normalmente no trabajo con bases de datos tan grandes, por lo que necesito saber la forma más segura de copiar las bases de datos en un nuevo servidor.

Todos los consejos apreciados!

usuario2029574
fuente

Respuestas:

3

Puedes seguir los siguientes pasos

En el antiguo servidor

1.Detener el servidor mysql

2. Copie el contenido de datadir a otra ubicación en el disco como ... mysqlbackup

3.Inicie el servidor mysql nuevamente

4.Comprima los datos (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5. Copie el archivo comprimido al nuevo servidor

En nuevo servidor

1.Instale MySQL [la versión de MySQL debe ser la misma que la del servidor anterior] (no inicie el servidor MySQL)

2. Descomprima el archivo comprimido (tar -xzvf mysqlbackup.tar.gz)

3. Mueva el contenido de mysqlbackup al datadir.

4. Asegúrese de que los permisos de datadir sean correctos

5.Asegúrese de que su innodb_log_file_size sea el mismo en el nuevo servidor, o si no lo es, no copie los archivos de registro antiguos (MySQL los generará)

6.Inicie MySQL.

También puede consultar ¿Cómo puedo mover una base de datos de un servidor a otro?

Abdul Manaf
fuente
2

Dado que Source DB solo tiene 1 GB, no tiene espacio para mysqldump en ningún lado.

Lo que necesitas es lo siguiente

  • Puerto 3306 abierto en el firewall del servidor de base de datos de origen
  • Ejecute el programa mysqldump desde el servidor Target DB

Para un servidor de DB de origen cuya dirección IP es 10.20.30.40, inicie sesión en DB de destino y ejecute esto

PIPE mysqldump EN LA instancia de MySQL en el servidor DB de destino

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 en el archivo SQL. Cargue MySQL desde 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

NOTAS FINALES

Use la técnica n. ° 1 si no hay espacio en disco para guardar un archivo SQL. Use la técnica n. ° 2 si desea volcar el archivo y cargarlo más adelante.

RolandoMySQLDBA
fuente
0

Desde un nuevo servidor, suponiendo que tenga configurado un par de claves pública / privada

ssh root@oldserver mysqldump database | mysql database

debería funcionar bien, no creo que se use ningún espacio en disco

automatem
fuente
No olvides usarlo ssh -Cpara la compresión sobre la marcha.
Twinkles
0

Por lo general, ejecuta mysqldump para crear una copia de la base de datos y copias de seguridad de la siguiente manera:

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

Copie el archivo db-name.out usando sftp / ssh en un servidor MySQL remoto:

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

Restaurar la base de datos en el servidor remoto (iniciar sesión a través de ssh):

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

O

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

Esto funcionó para mí:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/
Alby
fuente
Edite su publicación y proporcione alguna explicación que ayudará a los futuros usuarios a comprender su código.
RLF
0

@ user2029574, ¿está su hardware en la nube? Yo también una vez tropecé con el mismo problema que estabas / estás aquí. Sin embargo, mi instalación de MySQL está en AWS y sabes que eso significa mucha facilidad para conectar otro disco de mayor tamaño. Aquí estoy resumiendo lo que hice:

  1. Adjunte un nuevo disco más grande a su instancia actual del servidor MySQL.
  2. Use innobackupex de Percona para preparar la copia de seguridad completa de los datos MySQL actuales en el nuevo disco que ha conectado.
  3. Prepare otra instancia más con MySQL instalado.
  4. Separe el disco conectado a la instancia 1.
  5. Ahora conecte el disco a la nueva instancia, instancia 2.
  6. Detenga el servicio MySQL en la instancia 2.
  7. Edite el archivo de configuración de MySQL para que el directorio de datos apunte a la nueva ubicación.
  8. Restaurar la base de datos en la nueva instancia. Nuevamente, innobackupex , está a su disposición.
  9. Inicie el servidor MySQL en la instancia 2.

De esta manera, puede tener sus aplicaciones que se conectan a esta base de datos todo el tiempo y también puede actualizar el perfil de su instancia de nube, si eso también es un requisito.

sameergautam
fuente