MySQL é um sistema de gerenciamento de banco de dados relacional (DBMS) de código aberto que é frequentemente implantado em uma ampla variedade de contextos. Na maioria das vezes, ele é implantado como parte do LAMP Stack. O sistema de banco de dados também é fácil de usar e altamente portátil e, no contexto de muitas aplicações, extremamente eficiente. Como o MySQL geralmente é um armazenamento de dados centralizado para grandes quantidades de dados de missão crítica, fazer backups regulares do banco de dados MySQL é uma das tarefas de recuperação de desastres mais importantes que um administrador de sistema pode executar. Este guia aborda vários métodos distintos para criar backups de seu banco de dados, bem como restaurar bancos de dados de backups.
Antes de iniciar o processo de instalação, presumimos que você tenha seguido as etapas descritas em Configurando e protegendo uma instância de computação. Além disso, você precisará instalar o banco de dados MySQL. Toda a configuração será realizada em uma sessão de terminal; certifique-se de estar logado no seu Linode como root via SSH. Se você é novo na administração de servidores Linux, pode estar interessado em nosso guia de introdução aos conceitos do Linux, guia para iniciantes e guia básico de administração.
Metodologia de backup
A maioria dos backups de bancos de dados MySQL neste guia são realizados usando o
mysqldump
ferramenta, que é distribuída com a instalação padrão do servidor MySQL. Recomendamos que você use mysqldump
sempre que possível, porque geralmente é a maneira mais fácil e eficiente de fazer backups de banco de dados. Outros métodos detalhados neste guia são fornecidos para situações em que você não tem acesso ao mysqldump
ferramenta, como em um ambiente de recuperação como o Finnix ou em situações onde a instância local do servidor MySQL não iniciará. No entanto, este guia fornece uma mera visão geral do
mysqldump
ferramenta, pois há muitas opções e usos de mysqldump
que estão além do escopo deste documento. Recomendamos que você se familiarize com todos os procedimentos abordados neste documento e continue sua exploração do mysqldump
além dos casos aqui descritos. Certifique-se de observar o seguinte:- O
*.sql
arquivos criados commysqldump
pode ser restaurado a qualquer momento. Você pode até editar o banco de dados.sql
arquivos manualmente (com muito cuidado!) usando seu editor de texto favorito. - Se seus bancos de dados usam apenas o mecanismo de armazenamento MyISAM, você pode substituir o
mysqldump
comando com o mais rápidomysqlhotcopy
.
Criando backups de todo o sistema de gerenciamento de banco de dados (DBMS)
Muitas vezes é necessário fazer um backup (ou “dump”) de um sistema de gerenciamento de banco de dados inteiro junto com todos os bancos de dados e tabelas, incluindo os bancos de dados do sistema que contêm os usuários, permissões e senhas.
Opção 1:criar backups de um sistema de gerenciamento de banco de dados inteiro usando o utilitário mysqldump
O método mais direto para criar um único backup coerente de todo o sistema de gerenciamento de banco de dados MySQL usa o
mysqldump
utilitário a partir da linha de comando. A sintaxe para criar um dump de banco de dados com um timestamp atual é a seguinte:mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p
Este comando solicitará uma senha antes de iniciar o backup do banco de dados no diretório atual. Esse processo pode levar de alguns segundos a algumas horas, dependendo do tamanho de seus bancos de dados.
Automatize este processo adicionando uma linha ao
crontab
:0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD
Para o exemplo acima, use
which mysqldump
para confirmar o caminho correto para o comando e substitua root
com o usuário mysql que você gostaria de executar os backups e PASSWORD
com a senha correta para esse usuário. Observação No exemplo do crontab, certifique-se de que não haja espaço entre o sinalizador -P e sua entrada de senha.
Opção 2:criar backups de um DBMS inteiro usando cópias do diretório de dados MySQL
Enquanto o
mysqldump
for o método de backup preferido, há alguns casos que exigem uma abordagem diferente. mysqldump
só funciona quando o servidor de banco de dados está acessível e em execução. Se o banco de dados não puder ser iniciado ou o sistema host estiver inacessível, podemos copiar o banco de dados do MySQL diretamente. Esse método geralmente é necessário em situações em que você só tem acesso a um ambiente de recuperação como o Finnix com os discos do seu sistema montados nesse sistema de arquivos. Se você estiver tentando este método em seu próprio sistema, certifique-se de que o banco de dados não encontro. Emita um comando semelhante ao seguinte:/etc/init.d/mysqld stop
Na maioria das versões de distribuição do MySQL, o diretório de dados está localizado no diretório
/var/lib/mysql/
diretório. Se este diretório não existir, examine o /etc/mysql/my.cnf
arquivo para um caminho para o diretório de dados. Como alternativa, você pode pesquisar o diretório de dados em seu sistema de arquivos emitindo o seguinte comando:find / -name mysql
Depois de localizar o diretório de dados do MySQL, você pode copiá-lo para um local de backup. O exemplo a seguir assume que o diretório de dados do MySQL está localizado em
/var/lib/mysql/
:cp -R /var/lib/mysql/* /opt/database/backup-1266871069/
Neste caso, copiamos recursivamente o conteúdo do diretório de dados (por exemplo,
/var/lib/mysql/
) para um diretório dentro do /opt/
hierarquia (por exemplo, /opt/database/backup-1266871069/
). Este diretório deve existir antes de iniciar a operação de cópia. Considere a seguinte sequência de operações:/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/
Esses comandos começam parando o daemon do servidor MySQL e, em seguida, criando um diretório chamado
/opt/database/backup-1266872202/
, e executando uma cópia recursiva do diretório de dados. Observe que optamos por usar o backup-[time_t]
convenção de nomenclatura para nossos exemplos. Substitua os caminhos acima por sua organização e esquema de nomenclatura preferidos. O cp
O comando não produz saída e pode levar algum tempo para ser concluído, dependendo do tamanho do seu banco de dados. Não se assuste se demorar um pouco para ser concluído. Quando a operação de cópia estiver concluída, você pode querer arquivar o diretório de dados em um arquivo “tar” para facilitar o gerenciamento e a movimentação entre as máquinas. Emita os seguintes comandos para criar o arquivo:cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz
Uma vez que o tarball é criado, você pode facilmente transferir o arquivo da maneira que for mais conveniente para você. Não se esqueça de reiniciar o daemon do servidor MySQL novamente, se necessário:
/etc/init.d/mysql start
Criando backups de um único banco de dados
Em muitos casos, não é necessário criar um backup de todo o servidor de banco de dados. Em alguns casos, como atualizar um aplicativo da Web, o instalador pode recomendar fazer um backup do banco de dados caso a atualização afete negativamente o banco de dados. Da mesma forma, se você deseja criar um “dump” de um banco de dados específico para mover esse banco de dados para um servidor diferente, considere o método a seguir.
Quando possível, use o
mysqldump
ferramenta para exportar um “dump” de um único banco de dados. Este comando será semelhante ao seguinte:mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql
O exemplo acima é como o exemplo na seção anterior, exceto em vez de usar o
--all-databases
opção, este exemplo especifica um nome de banco de dados específico. Neste caso, criamos um backup dos danceLeaders
base de dados. A forma deste comando, em uma notação mais simples, é a seguinte:mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql
Para um exemplo adicional, faremos backup do banco de dados chamado
customer
usando a conta de banco de dados raiz emitindo o seguinte comando:mysqldump -u root -p -h localhost customer > customerBackup.sql
Será solicitada uma senha antes de
mysqldump
inicia seu processo de backup. Como sempre o arquivo de backup, neste caso customerBackup.sql
, é criado no diretório em que você emite esse comando. O mysqldump
O comando pode ser concluído em alguns segundos ou algumas horas, dependendo do tamanho do banco de dados e da carga no host ao executar o backup. Criando backups de uma única tabela
Opção 1:criar backups de uma única tabela usando o utilitário mysqldump
Esta operação, como os usos anteriores do
mysqldump
utilitário neste documento, permite que você crie um backup de uma única tabela de banco de dados. Continuando nossos exemplos anteriores, o exemplo a seguir permite fazer backup da tabela usernameRecords
nos danceLeaders
base de dados. mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql
O exemplo acima é como o exemplo da seção anterior, exceto que adicionamos uma especificação de nome de tabela ao comando para especificar o nome da tabela que queremos fazer backup. A forma deste comando em uma notação mais simples é a seguinte:
mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql
Para um exemplo adicional, faremos backup da tabela chamada “pedido” do banco de dados chamado
customer
usando a conta de banco de dados raiz emitindo o seguinte comando:mysqldump -u root -p -h localhost customer order > customerBackup-order.sql
Será solicitada uma senha antes de
mysqldump
inicia seu processo de backup. Como sempre, o arquivo de backup (neste caso customerBackup.sql
) é criado no diretório em que você emite esse comando. O mysqldump
O comando pode ser concluído em alguns segundos ou algumas horas, dependendo do tamanho do banco de dados e da carga no host ao executar o backup. Opção 2:criar backups de uma única tabela usando o MySQL Client e uma declaração OUTFILE
O próprio cliente MySQL tem algum recurso de backup. É útil quando você já está conectado e não deseja sair da sessão atual. Se você estiver usando um sistema ativo e não puder arcar com o tempo de inatividade, considere bloquear temporariamente a mesa da qual está fazendo backup.
Esteja ciente de que ao fazer backup de uma única tabela usando o cliente MySQL, a estrutura dessa tabela não é mantida no backup. Somente os dados em si são salvos ao usar este método.
-
Antes de começarmos, recomendamos executar umLOCK TABLES
nas tabelas que você pretende fazer backup, seguido porFLUSH TABLES
para garantir que o banco de dados esteja em um espaço consistente durante a operação de backup. Você só precisa de um bloqueio de leitura. Isso permite que outros clientes continuem a consultar as tabelas enquanto você faz uma cópia dos arquivos no diretório de dados do MySQL. Para um bloqueio de “leitura”, a sintaxe deLOCK TABLES
se parece com o seguinte:
1
LOCK TABLES tableName READ;
Para executar umLOCK TABLES
noorder
tabela docustomer
banco de dados, emita o seguinte comando:
mysql -u root -p -h localhost
Em seguida, você será solicitado a fornecer a senha de root. Depois de inserir as credenciais do banco de dados, você chegará ao prompt do cliente mysql. Emita o seguinte comando para bloquear oorder
tabela nocustomer
banco de dados (o;
à direita é necessário para comandos MySQL):
1 2 3
USE customer; LOCK TABLES order READ; FLUSH TABLES;
-
Agora podemos iniciar a operação de backup. Para criar um backup de uma única tabela usando o cliente MySQL, você precisará estar conectado ao seu SGBD MySQL. Se você não estiver logado no momento, você pode fazer o login com o seguinte comando:
mysql -u root -p -h localhost
Será solicitada uma senha. Depois de inserir a senha correta e estar no prompt do cliente MySQL, você pode usar umSELECT * INTO OUTFILE
demonstração. A sintaxe desta instrução se parece com o seguinte:
1
SELECT * INTO OUTFILE 'file_name' FROM tbl_name;
Neste exemplo, criaremos um backup dos dados doorder
tabela docustomer
base de dados. Emita o seguinte comando para iniciar o procedimento de backup (o;
final é necessário para comandos MySQL):
1 2 3 4 5
USE customer; LOCK TABLES order READ; FLUSH TABLES; SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order; UNLOCK TABLES;
OcustomerOrderBackup.sql
arquivo será criado no subdiretório de dados apropriado dentro do diretório de dados do MySQL. O diretório de dados do MySQL é comumente/var/lib/mysql/
. Neste exemplo, oOUTFILE
será/var/lib/mysql/customer/customerOrderBackup.sql
. A localização desse diretório e arquivo pode, no entanto, variar entre as distribuições do Linux. Se você não conseguir encontrar seu arquivo de backup, poderá procurá-lo com o seguinte comando:
find / -name customerOrderBackup.sql
-
Depois de concluir a operação de backup, você desejará desbloquear as tabelas usando o seguinte comando no cliente MySQL. Isso retornará seu banco de dados para sua operação normal. Faça login no cliente MySQL com o primeiro comando se você não estiver logado no momento e, em seguida, emita o segundo comando:
mysql -uroot -p -h localhost
1
UNLOCK TABLES;
Você pode continuar usando seu banco de dados normalmente a partir deste ponto.
Considerações para uma estratégia de backup eficaz
A criação de backups do seu banco de dados MySQL deve ser uma tarefa regular e agendada. Você pode considerar agendar backups periódicos usando
cron
, mysqldump
e/ou mail
. Considere nossa documentação para obter mais informações sobre o cron. A implementação de uma solução de backup automatizada pode ajudar a minimizar o tempo de inatividade em uma situação de recuperação de desastres. Você não precisa efetuar login como root ao fazer backup de bancos de dados. Um usuário MySQL com leitura (por exemplo,
SELECT
) é capaz de usar tanto o mysqldump
e mysql
(por exemplo, o cliente MySQL) para fazer backups, conforme descrito abaixo. Como prática comum, recomendamos que você não use o MySQL root
usuário sempre que possível para minimizar os riscos de segurança. Você pode querer considerar backups incrementais como parte de um plano de backup de banco de dados de longo prazo. Embora esse processo não seja abordado aqui, recomendamos que você considere o recurso Métodos de backup do banco de dados MySQL para obter mais informações.
Restaurando um DBMS inteiro do backup
Um backup que não pode ser restaurado tem valor mínimo. Recomendamos testar seus backups regularmente para garantir que eles possam ser restaurados caso você precise restaurar a partir de backups. Ao usar backups de restauração do banco de dados MySQL, o método usado depende do método usado para criar o backup em questão.
Opção 1:Restaurando um DBMS inteiro usando o cliente MySQL e backups criados por mysqldump
Antes de iniciar o processo de restauração, esta seção assume que seu sistema está executando uma versão recém-instalada do MySQL sem nenhum banco de dados ou tabelas existentes. Se você já possui bancos de dados e tabelas em seu SGBD MySQL, faça um backup antes de continuar, pois este processo sobrescreverá os dados MySQL atuais.
Você pode restaurar facilmente todo o seu DBMS usando o
mysql
comando. A sintaxe para isso será semelhante à seguinte:mysql -u [username] -p [password] < backupFile.sql
Neste caso, estamos simplesmente restaurando todo o DBMS. O comando terá a seguinte aparência:
mysql -u root -p < 1266861650-backup-all.sql
Você será solicitado a fornecer a senha do usuário root do MySQL. Assim que as credenciais corretas forem fornecidas, o processo de restauração começará. Como esse processo restaura um DBMS inteiro, pode levar de alguns segundos a muitas horas.
Opção 2:Restaurando um DBMS inteiro usando arquivos de dados MySQL copiados diretamente de Diretório de dados do MySQL
Antes de iniciar o processo de restauração, esta seção assume que seu sistema está executando uma versão recém-instalada do MySQL sem nenhum banco de dados ou tabelas existentes. Se você já possui bancos de dados e tabelas em seu SGBD MySQL, faça um backup antes de continuar, pois este processo sobrescreverá os dados MySQL atuais.
-
Se você tiver um backup completo de seu diretório de dados MySQL (normalmente/var/lib/mysql
), você pode restaurá-lo a partir da linha de comando. Para garantir uma restauração bem-sucedida, você deve primeiro parar o daemon do servidor MySQL e excluir os dados atuais no diretório de dados do MySQL.
/etc/init.d/mysql stop rm -R /var/lib/mysql/*
-
No exemplo a seguir, o backup do diretório de dados do MySQL está localizado em/opt/database/backup-1266872202
diretório. Se você fez um tarball do diretório de dados quando fez backup do diretório de dados do DBMS, será necessário extrair os arquivos do tarball antes de copiar com os seguintes comandos:
cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/ cd /var/lib/mysql tar xzvf mysqlBackup-1266872202.tar.gz
-
Antes de podermos reiniciar o processo do banco de dados MySQL, devemos garantir que as permissões estejam definidas corretamente no arquivo/var/lib/mysql/
diretório. Para este exemplo, assumimos que o daemon do servidor MySQL é executado como o usuáriomysql
com o grupomysql
. Para alterar as permissões no diretório de dados, execute o seguinte comando:
chown -R mysql:mysql /var/lib/mysql
-
Altere omysql:mysql
parte deste comando se sua instância MySQL for executada com diferentes permissões de usuário e grupo. A forma deste argumento é[user]:[group]
. Finalmente, podemos iniciar o daemon do servidor MySQL com o seguinte comando:
/etc/init.d/mysql start
Se você receber um erro semelhante ao seguinte:
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Você precisará encontrar o antigodebian-sys-maint
senha do usuário no/etc/mysql/debian.cnf
e então altere o novodebian-sys-maint
senha do usuário para ele. Você pode ver a senha antiga usandocat
:
cat /etc/mysql/debian.cnf | grep password
Copie (ou lembre-se) da senha. Então você precisará alterar o novodebian-sys-maint
senha do usuário. Você pode fazer isso entrando como usuário root do MySQL e emitindo o seguinte comando (ondeé a senha do antigo debian-sys-maint
do utilizador):
1
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
-
Você precisará reiniciar o MySQL com o seguinte comando:
/etc/init.d/mysql restart
Depois que o servidor MySQL for iniciado com sucesso, você desejará testar seu DBMS MySQL e garantir que todos os bancos de dados e tabelas sejam restaurados corretamente. Também recomendamos que você audite seus logs em busca de possíveis erros. Em alguns casos o MySQL pode iniciar com sucesso apesar dos erros do banco de dados.
Restaurando um único banco de dados do backup
Nos casos em que você criou apenas um backup para um banco de dados ou só precisa restaurar um único banco de dados, o processo de restauração é um pouco diferente.
Antes de iniciar o processo de restauração, esta seção assume que seu sistema está executando uma versão recém-instalada do MySQL sem nenhum banco de dados ou tabelas existentes. Se você já possui bancos de dados e tabelas em seu SGBD MySQL, faça um backup antes de continuar, pois este processo sobrescreverá os dados MySQL atuais.
-
Para restaurar um único banco de dados usando omysql
comando, primeiro prepare o banco de dados de destino. Faça login no seu (novo) servidor de banco de dados MySQL usando o cliente MySQL:
mysql -u root -p -h localhost
-
Você será solicitado a fornecer a senha do usuário root do MySQL. Depois de fornecer as credenciais corretas, você deve criar o banco de dados de destino. Nesse caso, ocustomer
banco de dados será restaurado:
1
CREATE DATABASE customer;
-
Como em todas as instruções MySQL, não omita o ponto e vírgula final (por exemplo,;
) na conclusão de cada comando. Dependendo de sua implantação, pode ser necessário criar um novo usuário MySQL ou recriar um usuário anterior com acesso ao banco de dados recém-criado. O comando para criar um novo usuário MySQL tem o seguinte formato:
1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
No próximo exemplo, criaremos um usuário chamadocustomeradmin
:
1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Agora vamos darcustomeradmin
privilégios para acessar ocustomer
base de dados. O comando para conceder privilégios a um banco de dados para um usuário específico tem a seguinte forma:
1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
-
Para os propósitos do exemplo a seguir, forneceremoscustomeradmin
acesso total aocustomer
base de dados. Emita o seguinte comando no cliente MySQL:
1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Você pode precisar especificar diferentes concessões de acesso dependendo das demandas de sua implantação. Consulte a documentação oficial da instrução GRANT do MySQL. Uma vez que o banco de dados de destino e o usuário MySQL tenham sido criados, você pode fechar o cliente MySQL com o seguinte comando:
quit
-
Agora você pode usar omysql
comando para restaurar seu arquivo SQL. A forma deste comando é semelhante ao seguinte:
mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
No exemplo a seguir, restauraremos o
customer
banco de dados de um arquivo de backup SQL chamado customerBackup.sql
(preste atenção especial ao <
símbolo neste comando):mysql -u root -p -h localhost customer < customerBackup.sql
Você será solicitado a fornecer a senha do usuário root do MySQL. Assim que as credenciais corretas forem fornecidas, o processo de restauração começará. A duração desta operação depende da carga do seu sistema e do tamanho do banco de dados que você está restaurando. Pode ser concluído em alguns segundos ou pode levar muitas horas.
Restaurando uma única tabela do backup
Opção 1:Restaurando uma única tabela usando o MySQL e backups criados pelo mysqldump
-
Antes de iniciar o processo de restauração, assumimos que sua instância MySQL já possui um banco de dados existente que pode receber a tabela que você deseja restaurar. Se sua instância MySQL não tiver o banco de dados necessário, precisaremos criá-lo antes de continuar. Primeiro, faça login na sua instância MySQL com o seguinte comando:
mysql -u root -p -h localhost
-
Você será solicitado a fornecer a senha do usuário root do MySQL. Depois de fornecer as credenciais corretas, você deve criar o banco de dados de destino. Para o propósito deste exemplo, criaremos ocustomer
base de dados.
1
CREATE DATABASE customer;
Em seguida, saia domysql
incitar:
quit
Se você já possui o banco de dados necessário, pode pular a etapa acima com segurança. Para continuar com a restauração da tabela, emita um comando no seguinte formato:
mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
-
Para o exemplo a seguir, restauraremos oorder
tabela nocustomer
existente banco de dados de um arquivo de backup SQL chamadocustomerOrderBackup.sql
. Tenha muito cuidado ao usar o<
operador no seguinte comando:
mysql -u root -p -h localhost customer < customerOrderBackup.sql
Você será solicitado a fornecer a senha do usuário root do MySQL. Assim que as credenciais corretas forem fornecidas, o processo de restauração começará. A duração desta operação depende da carga do seu sistema e do tamanho da tabela que você está restaurando. Pode ser concluído em alguns segundos ou pode levar muitas horas.
Opção 2:Restaurando uma única tabela usando o cliente MySQL e uma instrução INFILE para backups criados com OUTFILE
-
Antes de iniciar o processo de restauração, assumimos que sua instância MySQL já possui um banco de dados existente que pode receber a tabela que você deseja restaurar. Se sua instância MySQL não tiver o banco de dados necessário, precisaremos criá-lo antes de continuar. Primeiro, faça login na sua instância MySQL com o seguinte comando:
mysql -u root -p -h localhost
-
Você será solicitado a fornecer a senha do usuário root do MySQL. Depois de fornecer as credenciais corretas, você deve criar o banco de dados de destino. Para o propósito deste exemplo, criaremos ocustomer
base de dados.
1
CREATE DATABASE customer;
Em seguida, saia domysql
incitar:
quit
-
O backup de dados usado neste caso foi criado usando oSELECT * INTO OUTFILE 'backupFile.sql' FROM tableName
comando. Esse tipo de backup retém apenas os dados em si, portanto, a estrutura da tabela deve ser recriada. Para restaurar uma única tabela de dentro do cliente MySQL, você deve primeiro preparar o banco de dados e a tabela de destino. Faça login em sua (nova) instância MySQL usando o cliente MySQL:
mysql -u root -p -h localhost
-
Você será solicitado a fornecer a senha do usuário root do MySQL. Depois que as credenciais corretas forem fornecidas, você deverá criar o banco de dados de destino. Nesse caso, criaremos ocustomer
base de dados. Emita a seguinte declaração:
1
CREATE DATABASE customer;
-
Lembre-se de que os pontos e vírgulas (por exemplo,;
) após cada declaração são obrigatórios. Agora você deve criar a tabela de destino com a estrutura correta. Os tipos de dados dos campos da tabela devem espelhar os da tabela de origem do backup. Neste exemplo, vamos restaurar oorder
tabela docustomer
base de dados. Existem 2 campos naorder
tabela,custNum
com tipo de dadosINT
eorderName
com tipo de dadosVARCHAR(20)
; sua estrutura de tabela será diferente:
1 2
USE customer; CREATE TABLE order (custNum INT, orderName VARCHAR(20));
-
Dependendo de sua implantação, pode ser necessário criar um novo usuário MySQL ou recriar um usuário anterior com acesso ao banco de dados recém-criado. O comando para criar um novo usuário MySQL tem o seguinte formato:
1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
No próximo exemplo, criaremos um usuário chamadocustomeradmin
:
1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Agora vamos darcustomeradmin
privilégios para acessar ocustomer
base de dados. O comando para conceder privilégios a um banco de dados para um usuário específico tem a seguinte forma:
1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
Para os propósitos do exemplo a seguir, forneceremoscustomeradmin
acesso total aocustomer
base de dados. Emita o seguinte comando no cliente MySQL:
1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Você pode precisar especificar diferentes concessões de acesso dependendo das demandas de sua implantação. Consulte a documentação oficial da instrução GRANT do MySQL. Uma vez que a tabela e o usuário tenham sido criados, podemos importar os dados de backup do arquivo de backup usando oLOAD DATA
comando. A sintaxe é semelhante à seguinte:
1
LOAD DATA INFILE '[filename]' INTO TABLE [tableName];
No exemplo a seguir, restauraremos os dados de uma tabela de um arquivo chamadocustomerOrderBackup.sql
. Quando o cliente MySQL recebe o caminho e o nome do arquivo apósINFILE
, ele procura no diretório de dados do MySQL para esse arquivo. Se o nome do arquivocustomerOrderBackup.sql
foi fornecido, o caminho seria/var/lib/mysql/customerOrderBackup.sql
. Certifique-se de que o arquivo que você está tentando restaurar existe, especialmente se o MySQL gerarFile not found
erros.
-
Para importar os dados docustomerOrderBackup.sql
arquivo localizado em/var/lib/mysql/
, emita o seguinte comando:
1
LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;
Esse processo pode levar de alguns segundos a muitas horas, dependendo do tamanho da sua mesa. A duração desta operação depende da carga do seu sistema e do tamanho da tabela que você está restaurando. Pode ser concluído em alguns segundos ou pode levar muitas horas. Depois de verificar se seus dados foram importados com sucesso, você pode sair:
quit
Mais informações
Você pode querer consultar os seguintes recursos para obter informações adicionais sobre este tópico. Embora estes sejam fornecidos na esperança de que sejam úteis, observe que não podemos garantir a precisão ou pontualidade dos materiais hospedados externamente.
- O site oficial do MySQL
- Página Métodos de backup do banco de dados MySQL
- Página de manual do mysqldump
- Agendar tarefas com o Cron
- Declaração de concessão do MySQL, documentação oficial