Mecanismo de armazenamento MySQL BLACKHOLE

Resumo : neste tutorial, você aprenderá sobre o mecanismo de armazenamento MySQL BLACKHOLE e sua aplicação em uma configuração de replicação.

Introdução ao mecanismo de armazenamento MySQL BLACKHOLE

Ao contrário de outros mecanismos de armazenamento, o mecanismo de armazenamento BLACKHOLE não armazena dados de tabela. Isso significa que quando você envia dados para as tabelas BLACKHOLE, elas os descartam imediatamente.

Para verificar se o servidor MySQL atual suporta ou não o mecanismo de armazenamento BLACKHOLE, use a seguinte consulta:

SELECT 
  engine, 
  support 
FROM 
  information_schema.engines 
ORDER BY 
  engine;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------------------+---------+
| engine             | support |
+--------------------+---------+
| ARCHIVE            | YES     |
| BLACKHOLE          | YES     |
| CSV                | YES     |
| FEDERATED          | NO      |
| InnoDB             | DEFAULT |
| MEMORY             | YES     |
| MRG_MYISAM         | YES     |
| MyISAM             | YES     |
| ndbcluster         | NO      |
| ndbinfo            | NO      |
| PERFORMANCE_SCHEMA | YES     |
+--------------------+---------+
11 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Se o seu servidor MySQL suportar o mecanismo de armazenamento BLACKHOLE, você poderá começar a usá-lo.

Primeiro, crie uma nova tabela que use o mecanismo de armazenamento BLACKHOLE:

CREATE TABLE products(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
) ENGINE = 'BLACKHOLE';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, insira uma linha na tabela products:

INSERT INTO products(name)
VALUES('Flagship product');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, consulte os dados da productstabela:

SELECT * FROM products;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

Empty set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Ele não retorna nenhuma linha porque as tabelas blackhole não armazenam os dados.

A questão é: por que o mecanismo de armazenamento BLACKHOLE existe e quando você pode usá-lo?

O mecanismo de armazenamento BLACKHOLE pode ser útil em alguns cenários, como replicação.

Usando o mecanismo de armazenamento BLACKHOLE em uma configuração de replicação

No MySQL, a replicação é um mecanismo que permite replicar alterações de dados de um servidor MySQL (o “mestre”) para um ou mais outros servidores MySQL (os “escravos”).

Normalmente, você usa a replicação para diversas finalidades, incluindo balanceamento de carga, alta disponibilidade e backup de dados.

Ao usar a replicação, você deseja que os dados nos servidores escravos sejam consistentes com os dados no servidor mestre.

O mecanismo de armazenamento BLACKHOLE pode ser útil em configurações de replicação, especificamente quando você deseja capturar alterações de dados no servidor mestre sem armazenar esses dados no servidor local.

No servidor mestre, você cria uma tabela usando o mecanismo de armazenamento BLACKHOLE. Esta tabela não armazena nenhum dado e simplesmente descarta todos os dados inseridos nela.

CREATE TABLE sample_tables (
  id INT AUTO_INCREMENT PRIMARY KEY, 
  data_column VARCHAR(255)
) ENGINE = BLACKHOLE;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Sempre que você insere, atualiza ou exclui dados no sample_tablesservidor mestre, o MySQL captura essas operações no log binário. O log binário é um registro de todas as modificações de dados e é um componente fundamental da replicação do MySQL.

O MySQL então replica o log binário para um ou mais servidores escravos. Nos servidores escravos, você pode usar um mecanismo de armazenamento diferente (por exemplo, InnoDB ou MyISAM ) para criar uma tabela com a mesma estrutura do arquivo sample_tables. O MySQL retransmitirá as alterações de dados do log binário no escravo, tornando efetivamente os dados no servidor escravo consistentes com o mestre.

O ponto principal aqui é que os servidores escravos usam um mecanismo de armazenamento diferente (por exemplo, InnoDB ou MyISAM) para armazenar os dados replicados. O mecanismo de armazenamento BLACKHOLE no servidor mestre não armazena os dados localmente, portanto não há sobrecarga de armazenamento desnecessária no mestre.

Esta configuração permite capturar e replicar alterações de dados sem manter os dados localmente no servidor mestre. Pode ser útil quando você deseja manter a consistência dos dados em vários servidores e, ao mesmo tempo, minimizar os requisitos de armazenamento no mestre.

Resumo

  • No MySQL, o mecanismo de armazenamento BLACKHOLE não armazena dados de tabela.
  • Use o mecanismo de armazenamento BLACKHOLE em uma replicação sem manter os dados localmente no servidor mestre.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *