As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Arquivamento de dados em tabelas particionadas
Suporte ao MySQLparticionamento
Considere o código de exemplo a seguir.TABLE orders
existe dentro doorderprocessing
esquema. Seus dados históricos estão presentes na partiçãophistorica
l, que contém dados pertencentes a 2021 e anteriores. Na mesma tabela, os dados ativos em nível de aplicativo estão presentes nas partições ativas de cada mês de 2022. Para arquivar os dados na partiçãophistorical
, você pode criar um arquivotable orders_2021_and_older
com a mesma estrutura noarchive
esquema. Você pode então usar o MySQLPARTIÇÃO DE TROCAphistorical
naquela mesa. Observe que a tabela de arquivamento não está particionada. Após o arquivamento, você pode verificar seus dados e movê-los para o Amazon S3.
CREATE TABLE orders ( orderid bigint NOT NULL AUTO_INCREMENT, customerid bigint DEFAULT NULL, ............ ............ order_date date NOT NULL, PRIMARY KEY (`orderid`,`order_date`)) PARTITION BY RANGE (TO_DAYS(order_date)) ( PARTITION pstart VALUES LESS THAN (0), PARTITION phistorical VALUES LESS THAN (TO_DAYS('2022-01-01')), PARTITION p2022JAN VALUES LESS THAN (TO_DAYS('2022-02-01')), PARTITION p2022FEB VALUES LESS THAN (TO_DAYS('2022-03-01')), PARTITION p2022MAR VALUES LESS THAN (TO_DAYS('2022-04-01')), PARTITION p2022APR VALUES LESS THAN (TO_DAYS('2022-05-01')), PARTITION p2022MAY VALUES LESS THAN (TO_DAYS('2022-06-01')), PARTITION p2022JUN VALUES LESS THAN (TO_DAYS('2022-07-01')), PARTITION p2022JUL VALUES LESS THAN (TO_DAYS('2022-08-01')), PARTITION p2022AUG VALUES LESS THAN (TO_DAYS('2022-09-01')), PARTITION p2022SEP VALUES LESS THAN (TO_DAYS('2022-10-01')), PARTITION p2022OCT VALUES LESS THAN (TO_DAYS('2022-11-01')), PARTITION p2022NOV VALUES LESS THAN (TO_DAYS('2022-12-01')), PARTITION p2022DEC VALUES LESS THAN (TO_DAYS('2023-01-01')), PARTITION pfuture VALUES LESS THAN MAXVALUE ); CREATE TABLE orders_2021_and_older ( orderid bigint NOT NULL AUTO_INCREMENT, customerid bigint DEFAULT NULL, ............ ............ order_date date NOT NULL, PRIMARY KEY (`orderid`,`order_date`)); mysql> alter table orderprocessing.orders exchange partition phistorical with table archive.orders_2021_and_older; Query OK, 0 rows affected (0.33 sec)
Quando você usa oEXCHANGE PARTITION
recurso para arquivar dados históricos, recomendamos as seguintes práticas recomendadas:
-
Crie um esquema separado para armazenar dados arquivados em seu aplicativo. Esse esquema conterá tabelas de arquivamento que armazenarão os dados arquivados. Uma tabela de arquivamento em seu esquema de arquivamento deve ter a mesma estrutura da sua tabela dinâmica, incluindo seus índices e chave primária. No entanto, a tabela de arquivamento de destino não pode ser uma tabela particionada. A troca de partições entre duas tabelas particionadas não é permitida no MySQL.
-
Siga uma convenção de nomenclatura para sua tabela de arquivamento que o ajude a identificar os dados históricos armazenados nela. Isso é útil quando você executa tarefas de auditoria ou trabalhos de design que movem esses dados para o Amazon S3.
-
Execute o
EXCHANGE PARTITION
declaração de linguagem de definição de dados (DDL) em uma janela de tempo de inatividade quando não há tráfego entrando em seu gravador compatível com o Aurora MySQL, Amazon RDS para MySQL ou Amazon RDS para instâncias do MariaDB.Talvez seja possível executar
EXCHANGE PARTITION
durante janelas de baixo tráfego em seu aplicativo ou microsserviço. No entanto, não deve haver gravações e nenhuma ou muito poucas seleções na tabela particionada. As consultas selecionadas existentes e de longa duração podem fazer com queEXCHANGE PARTITION
DDL aguarde, causando contenções de recursos em seu banco de dados. Crie scripts que verificam que todas essas condições foram atendidas antes da execuçãoEXCHANGE PARTITION
em seu sistema.
Se o design do seu aplicativo pode suportar dados particionados e você atualmente tem uma tabela não particionada, considere mover seus dados para tabelas particionadas para suportar o arquivamento de seus dados. Para obter mais informações, consulte a documentação do MySQL