Posso copiar a pasta / var / lib / mysql inteira para um servidor diferente? (mysql vs mariadb, versões diferentes)

8

Eu costumava ter um sistema Linux (LMDE) com o MySQL. O sistema utilizou innodb_file_per_table para a maioria dos bancos de dados. (não tenho certeza sobre a versão, seja qual for o "mais recente" no LMDE)

Agora estou em um novo sistema (Manjaro / Arch) com o MariaDB.

$ mysql --version
mysql  Ver 15.1 Distrib 10.0.15-MariaDB, for Linux (x86_64) using readline 5.1

O sistema antigo tinha muitos bancos de dados grandes, que eu realmente preferiria não ter que copiar com o mysqldump. Eu preferiria muito mais copiar a pasta / var / lib / mysql do sistema antigo.

Isso é possível?

    
por donquixote 13.01.2015 / 06:38

1 resposta

19

Sim, é possível. (Eu percebi isso enquanto escrevia a pergunta)

  1. Instale o MariaDB no novo sistema Arch, verifique se ele funciona.
    Faça suas alterações no /etc/mysql/my.cnf. Por exemplo. innodb_file_per_table.
    (mais disto está fora do escopo para esta questão)
  2. sudo systemctl stop mysqld .
    (Você quer parar nos dois servidores, mas no meu caso o outro já estava desligado)
  3. Renomeie a pasta / var / lib / mysql, por exemplo para / var / lib / _mysql.
  4. Copie a antiga pasta / var / lib / mysql do antigo sistema Debian (LMDE).
  5. Restaurar a propriedade do arquivo para mysql: mysql para tudo em / var / lib / mysql:% sudo chown -R mysql:mysql /var/lib/mysql
  6. sudo systemctl start mysqld .
    - > Job for mysqld.service failed. See "systemctl status mysqld.service" and "journalctl -xe" for details.
  7. sudo systemctl status mysqld .
    - > Isso mostra que o serviço está sendo executado, mas algumas coisas estão dando errado. É para isso que o mysql_upgrade serve.
  8. mysql_upgrade -u root -p
    Notas:
    • É a senha da raiz do mysql do sistema antigo!
    • Eu tive que remover uma pasta restante do / var / lib / mysql devido ao nome do banco de dados inválido.
    • O arquivo / var / lib / mysql / mysql_upgrade_info precisa ser gravável.
    • O processo pode demorar um pouco.
  9. sudo systemctl restart mysqld .

CAVEAT: Aparentemente você não pode fazer o downgrade para uma versão menor do MySQL. Eu tentei migrar meus bancos de dados para o MySQL 5.5 (ou melhor, o MariaDB correspondente), e o servidor não iniciava. Eu tive que instalar o MySQL 5.6. (o MariaDB correspondente ao MySQL 5.6 não está disponível na minha distribuição Linux).

    
por 13.01.2015 / 06:38