A maneira mais rápida de mover vários bancos de dados para um novo servidor

4

Tenho vários bancos de dados mysql de tamanho pequeno a médio, digamos cerca de 40 e preciso migrá-los de um servidor whm com diferentes contas de cpanel para outro com as contas configuradas do servidor anterior e versões antigas dos bancos de dados. movendo já no lugar.

Alguém poderia recomendar a maneira mais rápida de fazer isso, eu ia despejar manualmente cada um e importá-lo, mas parece muito demorado, eu gostaria de cortar a minha máquina como o homem do meio, se possível e automatizar se eu pode.

    
por Toby 23.07.2010 / 08:52

2 respostas

8

Eu não sei muito sobre o cPanel, mas sei como transferir um banco de dados muito rápido para outro servidor - se você tiver acesso ao ssh.

use mysqldump com os parâmetros apropriados e encadeie com ssh. então o banco de dados é importado enquanto o banco de dados do sorce ainda exporta. nenhum arquivo temporário é usado (exceto mysql internamente;))

sourceerver # mysqldump --user = user1 --all-databases | ssh targethost 'mysql --user = user2'

se você autenticar no servidor de origem com sua chave privada e ssh-agent, poderá usar a opção -A do ssh para se conectar. Então você não precisa se preocupar com autorização no lado do alvo. Mas tenha em mente:

         Agent forwarding should be enabled with caution.  Users with the
         ability to bypass file permissions on the remote host (for the
         agent's Unix-domain socket) can access the local agent through
         the forwarded connection.  An attacker cannot obtain key material
         from the agent, however they can perform operations on the keys
         that enable them to authenticate using the identities loaded into
         the agent.

(fonte: man 1 ssh)

espero que isso ajude um pouco

    
por 23.07.2010 / 09:34
2

Provavelmente um pouco demais como a resposta @krissi funciona muito bem, mas caso você precise fazer isso mais de uma vez, você pode usar um script como este:

#!/bin/bash
# MySQL databases migration script
# Jorge Barnaby (jorge {dot} barnaby {at} gmail)

################################################################################
# Configuration variables

ORIG_USER="origin-username"
ORIG_PASS="origin-password"
ORIG_HOST="origin-server"

DEST_USER="destination-username"
DEST_PASS="destination-password"
DEST_HOST="destination-server"

# Do not backup the following databases
IGNORED_DBS="information_schema"

################################################################################
# Start of the program

# Command that runs on the origin server to extract the databases
MYSQL_ORIG="mysqldump -u $ORIG_USER -h $ORIG_HOST -p$ORIG_PASS --add-drop-database --databases"

# Command that runs on the destination server to popuplate the databases
MYSQL_DEST="mysql -u $DEST_USER -h $DEST_HOST -p$DEST_PASS"

# Get all database list first
DBS="$(mysql -u $ORIG_USER -h $ORIG_HOST -p$ORIG_PASS -Bse 'show databases')"

echo
echo -----------------------------------------------------------
echo 'date +"%F %T %Z"' : Starting MySQL Migration script
echo -----------------------------------------------------------
echo
echo -- MySQL Origin Server: $ORIG_HOST
echo -- MySQL Destination Server: $DEST_HOST

for db in $DBS
do
    skipdb=-1
    if [ "$IGNORED_DBS" != "" ];
    then
        for i in $IGNORED_DBS
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi

    if [ "$skipdb" == "-1" ];
    then
        echo
        echo -- 'date +"%F %T %Z"' : Migrating database $db
        # Command to be executed piping mysqldump on the origin and mysql on the remote
        $MYSQL_ORIG $db | $MYSQL_DEST
        echo -- 'date +"%F %T %Z"' : Done
    fi
done

echo
echo -----------------------------------------------------------
echo 'date +"%F %T %Z"' : All Done
echo -----------------------------------------------------------

exit 0
    
por 30.03.2012 / 21:01