AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 24491
Accepted
aaaaaaa
aaaaaaa
Asked: 2012-09-19 08:39:26 +0800 CST2012-09-19 08:39:26 +0800 CST 2012-09-19 08:39:26 +0800 CST

Como reduzo o tamanho do banco de dados no AWS RDS MySQL?

  • 772

Eu tenho um banco de dados RDS MySQL no Amazon Web Services.

Quero reduzir o tamanho do banco de dados no painel de controle para economizar dinheiro.

P: Como faço para diminuir? O site deles diz que você tem que fazer isso de alguma maneira mágica (a partir de backups ou algo assim), mas eu não quero bater nele por engano!

Passo a passo por favor... Obrigado! insira a descrição da imagem aqui

Foi o que aconteceu: a Amazon perguntou qual deveria ser o tamanho máximo desejado. Eu escolhi 10 GB. Em seguida, adicionei dados até que a tabela exceda 10 GB. A Amazon aumentou automaticamente o limite de tamanho para 20 GB. Em seu manual, eles afirmam que "aumentar" é automático, mas "diminuir" não.

Depois de remover alguns dos dados em excesso para que o tamanho dos dados fique abaixo de 10 GB novamente, existe uma maneira de criar um novo banco de dados de 10 GB e copiar os dados para ele usando um instantâneo, talvez?

mysql amazon-rds
  • 1 1 respostas
  • 9931 Views

1 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-09-19T09:21:16+08:002012-09-19T09:21:16+08:00

    Escreva um script que criará um script

    MYSQL_CONN="-hAmazonRDSDNSName -u... -p..."
    SQL="SELECT CONCAT('OPTIMIZE TABLE ',table_schema,'.',table_name,';')"
    SQL="${SQL} OptimizeTableSQL FROM information_schema.tables WHERE table_schema = 'signs'"
    SQL="${SQL} ORDER BY (data_length+index_length)"
    mysql ${MYSQL_CONN} -AN -e"${SQL}" > /root/OptimizeAllTables.sql
    less /root/OptimizeAllTables.sql
    

    Quando estiver satisfeito de que o script fará o trabalho, faça o seguinte:

    mysql ${MYSQL_CONN} < /root/OptimizeAllTables.sql
    

    De uma chance !!!

    EMBARGO

    Como o padrão para innodb_file_per_table é ON, cada tabela InnoDB sendo otimizada terá seu .ibdarquivo reduzido. Quaisquer tabelas MyISAM (que eu espero que você não tenha) também terão seus arquivos .MYDe reduzidos também..MYI

    ATUALIZAÇÃO 2012-09-18 18:19 EDT

    Acabei de tentar o seguinte:

    • Instância1 criada com disco 5G
    • Instance1 modificado para disco de 10G
    • Instance1 modificado para disco 5G (mensagem de erro Requested storage size (5) cannot be less then the current storage size (10):)
    • Criar Instance2 com 5G
    • Instância1 carregada com dados de 2 MB
    • Snapshot criado de Instance1 (mesmo tamanho: 10G)

    Se eu restaurar o instantâneo, ele criará uma terceira instância. O instantâneo de banco de dados deve ser toda a instância do servidor, não um despejo de qualquer tipo.

    Você terá que fazer o seguinte procedimento confuso:

    1. mysqldump os dados da instância de 20 GB
    2. Criar uma nova instância 10G
    3. carregue o mysqldump na nova instância de 10 GB
    4. verifique se todos os dados que você deseja estão presentes
    5. destruir os antigos 20GB

    Na etapa 4, execute esta consulta de espaço do Big Storage Engine nas instâncias de 20 GB e 10 GB

    SELECT IFNULL(B.engine,'Total') "Storage Engine",
    CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
    SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
    FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
    SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
    FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
    SUBSTR(' KMGTP',pw+1,1),'B') "Table Size" FROM
    (SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
    SUM(data_length+index_length) TSize FROM
    information_schema.tables WHERE table_schema NOT IN
    ('mysql','information_schema','performance_schema') AND
    engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
    (SELECT 3 pw) A ORDER BY TSize;
    

    Você verá quanto espaço desperdiçado desapareceu ao migrar o mysqldump para a nova instância de 10 GB. Isso definitivamente desfragmentará todas as tabelas InnoDB. Você pode precisar executar o script acima ( /root/OptimizeAllTables.sql) que lhe dei acima para executar OPTIMIZE TABLEem todas as tabelas do signsbanco de dados uma vez por semana para manter o .ibdmenor possível. Você também pode executar a consulta de espaço do Big Storage Engine para monitorar quando começar a se aproximar de 10 GB.

    • 3

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve