Movendo bancos de dados grandes

8

Eu tenho um servidor centos e / var / lib / mysql / tem 125 GB (o disco tem 1 GB de espaço livre).

Normalmente, eu usaria o mysqldump para fazer backup dos bancos de dados, mas normalmente não trabalho com bancos de dados tão grandes, então preciso conhecer a maneira mais segura de copiar os bancos de dados para um novo servidor.

Todos os conselhos apreciados!

user2029574
fonte

Respostas:

3

Você pode usar as seguintes etapas

No servidor antigo

Pare o servidor mysql

Copie o conteúdo do datadir para outro local no disco como ... mysqlbackup

3.Inicie o servidor mysql novamente

4.Comprima os dados (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5.Copie o arquivo compactado para o novo servidor

No novo servidor

1.Instale o MySQL [a versão do MySQL deve ser a mesma do servidor antigo] (não inicie o servidor MySQL)

2.Unzip arquivo compactado (tar -xzvf mysqlbackup.tar.gz)

3. Mova o conteúdo do mysqlbackup para o datadir.

4. Verifique se as permissões do datadir estão corretas

5. Verifique se o seu innodb_log_file_size é o mesmo no novo servidor ou, se não for, não copie os arquivos de log antigos (o MySQL os gerará)

6.Inicie o MySQL.

Você também pode consultar Como posso mover um banco de dados de um servidor para outro?

Abdul Manaf
fonte
2

Como o banco de dados de origem possui apenas 1 GB, você não tem espaço para mysqldump em nenhum lugar.

O que você precisa é o seguinte

  • Porta 3306 aberta no firewall do servidor de banco de dados de origem
  • Execute o programa mysqldump a partir do servidor Target DB

Para um servidor de DB de origem cujo endereço IP é 10.20.30.40, efetue login no Target DB e execute este

PIPE mysqldump NA Instância MySQL no servidor de banco de dados 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 no arquivo SQL. Carregar MySQL do 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 FINAIS

Use a técnica nº 1 se não houver espaço em disco para salvar um arquivo SQL. Use a técnica nº 2 se quiser despejar o arquivo e carregá-lo posteriormente.

RolandoMySQLDBA
fonte
0

No novo servidor, supondo que você tenha um par de chaves pública / privada configurado

ssh root@oldserver mysqldump database | mysql database

deve funcionar bem, acho que nenhum espaço em disco será usado

automatem
fonte
Não se esqueça de usar ssh -Cpara compactação on-the-fly.
quer
0

Geralmente você executa o mysqldump para criar uma cópia do banco de dados e backups da seguinte maneira:

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

Copie o arquivo db-name.out usando sftp / ssh para o servidor MySQL remoto:

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

Restaure o banco de dados no servidor remoto (faça login através do ssh):

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

OU

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

Isso funcionou para mim:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/
Alby
fonte
Edite sua postagem e forneça algumas explicações que ajudarão futuros usuários a entender seu código.
RLF
0

@ user2029574, seu hardware está na nuvem? Eu também uma vez me deparei com o mesmo problema que você estava / está aqui. No entanto, minha instalação do MySQL está na AWS e você sabe que isso significa muita facilidade para conectar outro disco de tamanho maior. Aqui estou resumindo o que fiz:

  1. Anexe um novo disco maior à sua instância atual do servidor MySQL.
  2. Use o innobackupex de Percona para preparar o backup completo dos dados atuais do MySQL no novo disco que você anexou.
  3. Prepare outra instância com o MySQL instalado.
  4. Desconecte o disco conectado à instância 1.
  5. Agora conecte o disco à nova instância, instância 2.
  6. Pare o serviço MySQL na instância 2.
  7. Edite o arquivo de configuração do MySQL para que o diretório de dados aponte para o novo local.
  8. Restaure o banco de dados na nova instância. Mais uma vez, innobackupex , está lá por sua ajuda.
  9. Inicie o servidor MySQL na instância 2.

Dessa forma, você pode ter os aplicativos que se conectam a esse banco de dados o tempo todo e também pode atualizar o perfil da instância da nuvem, se isso também for um requisito.

sameergautam
fonte