Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erison

[Resolvido] Replicação Mysql

Recommended Posts

pessoal tenho uma base na web e quero que toda noite ela replique para minha base interna.

ex:

interna:localhost

externa:100.100.10.100

 

assim , acho que o modo vai viavel para isso.

era criar. um bat para

baixar o banco.

e depois restaurar na minha base local.

 

tentei execultar esse comando no meu pront

mysqldump > -hlocalhost -usuaurio -psenha > c:\backup.sql

 

mas não deu certo.

caso tenha outra maneira mais simples e segura me informa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo,

 

Eu configuraria Master-Slave: http://imasters.com.br/artigo/22821/mysql/usando-o-replication-master-slave-no-mysql

 

É a única forma que eu conheço de você replicar automaticamente as coisas.

 

Já para exportar em arquivo .sql você teria que importar de volta na tua local. Toda noite eu faço backup de um servidor meu também, mas apenas backup não importo em outro lugar.

 

É muito simples, segue trecho do meu script de backup responsável pelo banco de dados (Para Linux):

 

#! /bin/bash
# Executa Backup automatico do MySQL, Apache, arquivos de configuracoes e outros #

dir_backup="/home/diego/backup"
dir_databases="$dir_backup/databases"

# Se o diretorio de backup não existir, criamos

if [ ! -d "$dir_backup" ]; then
   mkdir "$dir_backup"
fi

# MySQL

# Se o diretorio não existir, criamos

if [ ! -d "$dir_databases" ]; then
   mkdir "$dir_databases"
fi

mysql_user="usuario"
mysql_password="senha"

# Backup total de todos os bancos

mysqldump -u $mysql_user -p$mysql_password -e -x -A > $dir_databases/all.sql

# Armazena o nome de todos os bancos, exceto mysql, information_schema e performance_schema

sql_database=$(mysql -u$mysql_user -p$mysql_password -Bse 'SHOW DATABASES WHERE `database` <> "information_schema" AND `database` <> "mysql" AND `database` <> "performance_schema" ')

# Le o nome dos bancos armazenados na variavel acima e faz backup de cada um separadamente

for db in ${sql_database}; do
   dir_db="$dir_databases/$db"

   # Se o diretorio do banco nao existir, criamos

   if [ ! -d "$dir_db" ]; then
       mkdir "$dir_db"
   fi

   # Backup do banco num arquivo com o nome do mesmo

   mysqldump -u $mysql_user -p$mysql_password -B $db > $dir_db/$db.sql
done

Tendo o script em mãos basta você colocar no crontab para executar todo horário pré-determinado.

 

Se quiser importar do outro lado automaticamente, basta fazer outro script no host de origem para transferir os arquivos até o host de destino utilizando rsync ou outra opção da sua escolha, colocar este script no crontab pra ser executado digamos 10 minutos após o de backup. Na base de destino deverá ter um script pra importar os arquivos sql trazidos.

 

Para Windows eu não sei fazer, por isso sugeri o Master-Slave que seria o mais adequado neste seu caso.

 

Espero que seja útil, fico a disposição. Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu ja conseguie fazer o backup fazendo com o seguinte codigo.

"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe" -uroot -h190.168.1.100 -p*** --all-databases >"C:\BackupMysql\Hades.sql"

 

mas não consigo restaurar assim

"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe" -uroot -p**** < "C:\BackupMysql\Hades.sql"

 

no cmd mostra a messagem:O sistema não pode encontrar o arquivo especificado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código de baixo e de cima estão iguais...

 

O de cima não deveria ter o " > " ao invés de " < " ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tinha me confudido. agora ta certo.

o de cima faz o backup, mas o debaixo não restaura, pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não usa o mysqldump pra restaurar, apenas mysql.

 

Ou seja, exemplo:

 

# Exporta o banco imasters para o arquivo imasters.sql

mysqldump -u root -psenha imasters > imasters.sql

# Importa o arquivo imasters.sql para o banco imasters

mysql -u root -psenha imasters < imasters.sql

O comando de cima executa no host de origem e o de baixo no host de destino.

 

A disposição, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas esse imaster que você coloco no caso ea tabela.

eu quero e todo banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, é o banco chamado imasters.

 

Se tu quiser todos os bancos simplesmente não informe nenhum banco, assim como no primeiro exemplo que eu postei lá em cima:

 

# Backup total de todos os bancos

mysqldump -u $mysql_user -p$mysql_password -A > $dir_databases/all.sql

A opção -A exporta todos os bancos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

repare no meu codigo que eu fiz o backup eu executo um mysqldump.exe para poder executar o codigo

 

para restaurar tb e mysqldump.exe

pq olhei na pasta bin/ lá tem mysqlimport.exe e esse?

 

pq ele so executa se eu chamar esse arquivo.

 

acho que isso que você ta falando so funciona no linux.

mais eu uso windows.

 

tipo para fazer de rodos os bancos a opção -a não funciona.

apenas --all-databases

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é -a minusculo, é -A maiúsculo, que equivale ao --all-databases.

 

Amigo, para restaurar é o mysql.exe, se tiver dúvidas pesquise na net e comprove a resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.