Backup e recuperação otimizados do banco de dados Mysql

Limpeza de espaço no banco de dados
 
 
A operação de exclusão trará alguns fragmentos de dados; esses fragmentos estão ocupando espaço no disco rígido
A tabela TABLES no banco de dados information_schema do MySQL registra o espaço ocupado por cada tabela no banco de dados MySQL, o número de linhas registradas na tabela, hora da atualização, descrição etc. Os principais campos desta tabela são os seguintes:
TABLE_SCHEMA: nome do banco de dados
TABLE_NAME: nome da tabela
MOTOR: o mecanismo de armazenamento usado
TABLES_ROWS: o número de registros, ou seja, o número de linhas na tabela
DATA_LENGTH: tamanho dos dados
INDEX_LENGTH: tamanho do índice
CREATE_TIME: hora da criação
UPDATE_TIME: a hora da atualização mais recente
DATA_FREE: Este parâmetro está relacionado à fragmentação do MySQL. Se for um espaço de tabela compartilhado, este campo indica o tamanho do espaço de tabela compartilhado, e não o tamanho dos dados. Somente quando o espaço de tabela exclusivo é usado, esse campo indica o espaço restante da tabela;
Nota: Quando o MySQL excluir uma linha de conteúdo da lista, o espaço será deixado em branco. Depois que um grande número de operações de exclusão é realizado por um período de tempo, o espaço fragmentado tende a se tornar maior que o espaço usado para armazenar o conteúdo da lista.
Para os leigos: o campo Data_free é o espaço físico ocupado. Você pode exibir o campo Data_free da tabela especificada através de 'show status da tabela'. O valor correspondente é o espaço físico ocupado. A reconstrução ou reimportação da tabela descartada pode liberar essa parte do espaço .
 
1. Visualize a estrutura da tabela do banco de dados
USE information_schema;
SELECT table_name, table_rows FROM TABLES WHERE table_schema = 'escola' ORDER BY table_rows DESC;
SELECT soma (table_rows) FROM tabelas WHERE table_schema = 'escola';
SELECT table_name, table_rows FROM TABLES WHERE table_schema = 'escola' ORDER BY table_rows DESC LIMIT 100;
selecione * de - Consulte a tabela
classificar por ID desc-Classificar por tamanho da coluna de identificação em ordem decrescente
limite 100, 15 - Retire um dado do resultado da consulta, ou seja, retire 15 dados do 100º
 
2. O tamanho da tabela de pesquisa
SELECT TABLE_NAME, (DATA_LENGTH + INDEX_LENGTH) / 1048576, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA = 'nome do db' AND TABLE_NAME = 'nome da tabela (你 的 表 名)';
 
 
Abra a linha de comando do Mysql, digite a senha do banco de dados, digite o banco de dados a ser operado (a linha de comando é: use databaseName;) e execute a tabela de otimização tableName;
 
Caso de produção: liberar espaço na tabela
 
Ideia 1:
 
Os dados não são excluídos: tabela de backup, soltar tabela, importar tabela de backup para o banco de dados;
mostre o status da tabela como 'oldtb%'; -> Concentre-se no campo Data_free, o valor correspondente é o espaço físico mais ocupado, ou seja, espaço fragmentado
mysqldump -uroot -p123456 mydb oldtb> /mnt/oldtb.sql-> Exporte a tabela que pode restaurar o espaço do sistema.
solte a tabela oldtb; -> solte a tabela antiga para liberar espaço na tabela
source /mnt/oldtb.sql; -> Exporte a tabela de backup para o banco de dados.
mostre o status da tabela como 'oldtb%'; -> Compare o status antes e depois da recuperação, concentrando-se no campo Data_free
Essa operação usa várias operações de tabela única, faz backup e restaura as tabelas várias vezes, liberando espaço fragmentado e é adequada para empresas que não permitem tempo de inatividade.
Se a empresa do sistema permitir interromper o serviço dentro de um período de tempo, você poderá fazer backup de todo o banco de dados, esvaziar, reconstruir o diretório raiz dos dados do mysql e restaurar o banco de dados inteiro.
 
 
Idéia 2:
 
Excluir alguns dados antigos: adequado para cenários em que alguns dados antigos podem ser excluídos
CREATE TABLE SE NÃO EXISTE `newtb` LIKE` course`; -> Nova tabela newtb, a estrutura da tabela é igual à tabela antiga
insira no newtb selecione * from oldtb onde time> 'xxx' e time <= 'xxx';
-> Faça backup dos novos dados da tabela, você pode fazer backup do último mês ou meio mês de acordo com o período
solte a tabela oldtb; -> solte a tabela antiga para liberar espaço na tabela
alterar tabelas newtb renomear para oldtb; -> renomear nova tabela "newdtb"
 
 
Ideia 3: Tabela de otimização direta: otimizar o nome da tabela;
 
selecione table_name, data_free, engine a partir de information_schema.tables em que table_schema = 'mydb';
-> Verifique o valor data_free de cada tabela na biblioteca, a unidade é byte, data_free / 1024/1024/1024 é o espaço teórico de recuperação G após o lançamento.
mostre o status da tabela como 'oldtb'; -> tamanho Data_free de uma única tabela
mysql> OPTIMIZE TABLE hellodb.students;
-> Mostra não suportada; de fato, foram realizadas reconstruções e análises e o espaço foi recuperado
 
 
 
 
Backup de banco de dados
1. Comando de Backup
Formato: cmd no mysqldump -h nome do host -P porta -u nome de usuário -p senha - nome do banco de dados de banco de dados> d: \ filename.sql
Por exemplo: mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword --database cmdb> /data/backup/cmdb.sql;
 
2. Recupere dados
usar banco de dados
origem d: \ mysql.sql
 

Acho que você gosta

Origin www.cnblogs.com/YinXuanZhiZhi9/p/12719188.html
Recomendado
Clasificación