Fala rapaziada, so na paz? espero que sim.
Hoje vou abordar um assunto simples e pratico que assim como no Oracle, também existe no MySQL, TABLESPACES.
â ïž CONTĂM TEXTO MELHORADO POR AI â E TA TUDO BEM (SE SOUBER USAR đ€)â ïž
Essa Ă© nova pra vocĂȘ? ou ja sabia que no MySQL tambĂ©m existe TABLESPACES?
Bom, se Ă© novidade ou nĂŁo vale dar uma lida para aprender ou relembrar detalhes sobre o assunto.
No MySQL, existem trĂȘs tipos principais de tablespaces:
- System Tablespace: Armazena metadados e dados do sistema.
- File-per-Table Tablespace: Cada tabela Ă© armazenada em seu prĂłprio arquivo
.ibd
(O que eu acho zoado por ser DBA Oracle kkk). - General Tablespace: Permite que mĂșltiplas tabelas compartilhem o mesmo arquivo de dados
.ibd
.
Por que usar Tablespaces no MySQL?
O uso de tablespaces oferece vĂĄrias vantagens para o DBA desorganizado đ€:
- Flexibilidade: VocĂȘ pode escolher onde armazenar os dados (em um diretĂłrio especĂfico, por exemplo).
- Desempenho: Tablespaces permitem otimizar o armazenamento para cenĂĄrios especĂficos, como compressĂŁo de dados.
- Gerenciamento Simplificado: Facilita a administração de grandes volumes de dados, especialmente em ambientes com mĂșltiplas tabelas.
- Compressão: Tablespaces suportam tabelas comprimidas, reduzindo o uso de espaço em disco.
Tipos de Tablespaces no MySQL
1. System Tablespace
A System tablespace é o coração do MySQL. Ele armazena metadados do sistema, como o dicionårio de dados e os logs de undo. Por padrão, ele é armazenado no arquivo ibdata1
. Embora seja essencial para o funcionamento do MySQL, ele nĂŁo Ă© recomendado para armazenar dados de usuĂĄrio, pois pode crescer indefinidamente (sim, tem doido pra tudo).
2. File-per-Table Tablespace
No modo file-per-table, cada tabela Ă© armazenada em seu prĂłprio arquivo .ibd
. Isso oferece maior flexibilidade, pois vocĂȘ pode mover, copiar ou excluir tabelas individualmente. AlĂ©m disso, facilita a recuperação de dados em caso de falhas.
Exemplo de criação de uma tabela no modo file-per-table:
CREATE TABLE tabela_braba (
cfp INT PRIMARY KEY,
dba VARCHAR(100)
) ENGINE=InnoDB;
3. General Tablespace
General tablespaces permitem que mĂșltiplas tabelas compartilhem o mesmo arquivo .ibd
. Eles sĂŁo ideais para cenĂĄrios onde vocĂȘ deseja centralizar o armazenamento de vĂĄrias tabelas ou utilizar compressĂŁo de dados.
Suporte aos seguintes row format:
REDUNDANT
COMPACT
DYNAMIC
COMPRESSED
Exemplo de criação de um general tablespace:
CREATE TABLESPACE tablespace_braba
ADD DATAFILE '/u01/para/df_brabo_01.ibd'
ENGINE=InnoDB;
Ou vocĂȘ tambĂ©m pode apenas executar:
CREATE TABLESPACE tablespace_braba Engine=InnoDB;
Se a clĂĄusula ADD DATAFILE nĂŁo for especificada ao criar uma tablespace, um datafile com um nome muito louco serĂĄ criado no lugar (nessa pegada: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
).
E para adicionar uma tabela a nova tablespace?
VocĂȘ pode apenas criar a tabela atribuindo-a sua tablespace:
CREATE TABLE tabela_braba (
cfp INT PRIMARY KEY,
dba VARCHAR(100)
) TABLESPACE tablespace_braba;
Mas vocĂȘ tambĂ©m pode vincular uma tabela existente a uma tablespace:
ALTER TABLE tabela_braba TABLESPACE tablespace_braba;
Podemos validar, verificar e entender a relação tabelas por tablespaces com a consulta:
SELECT a.NAME AS space_name, b.NAME AS table_name FROM INFORMATION_SCHEMA.INNODB_TABLESPACES a,
INFORMATION_SCHEMA.INNODB_TABLES b WHERE a.SPACE=b.SPACE AND a.NAME LIKE 'tablespace_braba';
+-----------------+--------------------+
| space_name | table_name |
+-----------------+--------------------+
| tablespace_braba| teste/tabela_braba |
+-----------------+--------------------+
Também como no Oracle é possivel adicionar datafiles a essas tablespaces criadas:
ALTER TABLESPACE tablespace_braba ADD DATAFILE '/u01/oradata/df_brabo_02.ibd' INITIAL_SIZE 48M ENGINE InnoDB;
Nesse caso acima ja estamos pre-alocando 48M para o arquivo de datafile, mas podemos também adicionar datafile sem alocar espaço previamente, assim:
ALTER TABLESPACE tablespace_braba ADD DATAFILE '/u01/oradata/df_brabo_03.ibd' ENGINE InnoDB;
Ainda é possivel também realizar o MOVE das tabelas entre diferentes tipo de tablespaces:
ALTER TABLE tabela_braba TABLESPACE [=] tablespace_name;
ALTER TABLE tabela_braba TABLESPACE [=] innodb_system;
ALTER TABLE tabela_braba TABLESPACE [=] innodb_file_per_table;
Rename pode? pode!
ALTER TABLESPACE tablespace_braba RENAME TO tablespace_braba_01;
Brincadeira tem hora: Durante o rename de uma tablespace, todas as tabelas relacionadas a ela sofre lock de metadados đš.
Também não é possivel realizar o RENAME enquanto as tabelas estiverem com: LOCK TABLES ou FLUSH TABLES WITH READ LOCK.
E por fim, dropar uma tablespace no MySQL:
DROP TABLESPACE tablespace_braba;
Vantagens dos General Tablespaces
- Armazenamento Centralizado: MĂșltiplas tabelas podem compartilhar o mesmo arquivo, simplificando o gerenciamento.
- CompressĂŁo de Dados: Suporta tabelas com row format
COMPRESSED
, reduzindo o uso de espaço em disco. - EficiĂȘncia: Ideal para cenĂĄrios onde vĂĄrias tabelas tĂȘm padrĂ”es de acesso semelhantes.
CombinaçÔes permitidas de tamanho de pågina para tabelas compactadas
InnoDB Page Size | FILE_BLOCK_SIZE Value | KEY_BLOCK_SIZE Value |
---|---|---|
64KB | 64K (65536) | Compression is not supported |
32KB | 32K (32768) | Compression is not supported |
16KB | 16K (16384) | None. If innodb_page_size is equal to FILE_BLOCK_SIZE , the tablespace cannot contain a compressed table. |
16KB | 8K (8192) | 8 |
16KB | 4K (4096) | 4 |
16KB | 2K (2048) | 2 |
16KB | 1K (1024) | 1 |
8KB | 8K (8192) | None. If innodb_page_size is equal to FILE_BLOCK_SIZE , the tablespace cannot contain a compressed table. |
8KB | 4K (4096) | 4 |
8KB | 2K (2048) | 2 |
8KB | 1K (1024) | 1 |
4KB | 4K (4096) | None. If innodb_page_size is equal to FILE_BLOCK_SIZE , the tablespace cannot contain a compressed table. |
4KB | 2K (2048) | 2 |
4KB | 1K (1024) | 1 |
Quando usar Tablespaces no golfinho?
- CenĂĄrios de CompressĂŁo: Se vocĂȘ precisa economizar espaço em disco, tablespaces com compressĂŁo sĂŁo uma Ăłtima opção.
- Armazenamento Centralizado: Para ambientes com mĂșltiplas tabelas relacionadas, general tablespaces podem simplificar o gerenciamento.
- Controle de Localização: Se vocĂȘ precisa armazenar dados em um diretĂłrio especĂfico (por exemplo, em um disco de alta performance [SSD, NVMe, Optane etc e tal]), tablespaces permitem esse controle.
REFERENCE GUIDE:
-- ============================================================================
-- COMANDOS CREATE TABLESPACE MAIS COMPLETOS POR ENGINE
-- ============================================================================
-- ============================================================================
-- 1. InnoDB ENGINE - TABLESPACE REGULAR
-- ============================================================================
CREATE TABLESPACE ts_innodb_complete
ADD DATAFILE '/var/lib/mysql/ts_innodb_complete.ibd'
AUTOEXTEND_SIZE = 64M
FILE_BLOCK_SIZE = 16384
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- ============================================================================
-- 2. InnoDB ENGINE - UNDO TABLESPACE
-- ============================================================================
CREATE UNDO TABLESPACE undo_ts_innodb_complete
ADD DATAFILE '/var/lib/mysql/undo_ts_innodb_complete.ibu'
AUTOEXTEND_SIZE = 128M
FILE_BLOCK_SIZE = 16384
ENCRYPTION = 'N'
ENGINE = InnoDB;
-- ============================================================================
-- 3. NDB ENGINE - TABLESPACE COMPLETO
-- ============================================================================
-- Primeiro, criar o LOGFILE GROUP (prerequisito para NDB tablespace)
CREATE LOGFILE GROUP lg_ndb_complete
ADD UNDOFILE 'undo_lg_ndb_complete.dat'
INITIAL_SIZE = 128M
UNDO_BUFFER_SIZE = 64M
ENGINE = NDB;
-- Agora criar o TABLESPACE NDB
CREATE TABLESPACE ts_ndb_complete
ADD DATAFILE 'ts_ndb_complete.dat'
USE LOGFILE GROUP lg_ndb_complete
AUTOEXTEND_SIZE = 32M
EXTENT_SIZE = 1M
INITIAL_SIZE = 256M
MAX_SIZE = 2G
NODEGROUP = 0
WAIT
COMMENT = 'Tablespace NDB completo para cluster'
ENGINE = NDB;
-- ============================================================================
-- 4. NDB ENGINE - UNDO TABLESPACE
-- ============================================================================
CREATE UNDO TABLESPACE undo_ts_ndb_complete
ADD DATAFILE 'undo_ts_ndb_complete.dat'
USE LOGFILE GROUP lg_ndb_complete
AUTOEXTEND_SIZE = 16M
EXTENT_SIZE = 512K
INITIAL_SIZE = 128M
MAX_SIZE = 1G
NODEGROUP = 1
WAIT
COMMENT = 'Undo tablespace NDB para transaçÔes'
ENGINE = NDB;
-- ============================================================================
-- EXPLICAĂĂO DOS PARĂMETROS
-- ============================================================================
/*
PARĂMETROS COMUNS (InnoDB e NDB):
- ADD DATAFILE: Especifica o arquivo de dados
- AUTOEXTEND_SIZE: Tamanho do incremento automĂĄtico
- ENGINE: Engine de armazenamento
PARĂMETROS EXCLUSIVOS InnoDB:
- FILE_BLOCK_SIZE: Tamanho do bloco (512, 1024, 2048, 4096, 8192, 16384, 32768, 65536)
- ENCRYPTION: Criptografia ('Y' ou 'N')
PARĂMETROS EXCLUSIVOS NDB:
- USE LOGFILE GROUP: Grupo de log files (obrigatĂłrio)
- EXTENT_SIZE: Tamanho da extensĂŁo (32K-2G)
- INITIAL_SIZE: Tamanho inicial
- MAX_SIZE: Tamanho mĂĄximo
- NODEGROUP: ID do grupo de nĂłs
- WAIT: Aguarda conclusão da operação
- COMMENT: ComentĂĄrio descritivo
VALORES RECOMENDADOS:
- FILE_BLOCK_SIZE InnoDB: 16384 (padrĂŁo)
- EXTENT_SIZE NDB: 1M (padrĂŁo)
- AUTOEXTEND_SIZE: 64M para InnoDB, 32M para NDB
*/
-- ============================================================================
-- MYSQL TABLESPACES COM MĂLTIPLOS DATAFILES
-- ============================================================================
/*
- InnoDB: NĂO suporta mĂșltiplos datafiles no CREATE TABLESPACE
- NDB: SIM, suporta mĂșltiplos datafiles nativamente
*/
-- ============================================================================
-- 1. InnoDB - LIMITAĂĂO: APENAS 1 DATAFILE NO CREATE
-- ============================================================================
-- â ISTO NĂO FUNCIONA NO InnoDB:
-- CREATE TABLESPACE ts_innodb
-- ADD DATAFILE 'file1.ibd', 'file2.ibd', 'file3.ibd' -- ERRO!
-- ENGINE = InnoDB;
-- â
InnoDB: Apenas 1 datafile no CREATE
CREATE TABLESPACE ts_innodb_inicial
ADD DATAFILE '/var/lib/mysql/ts_innodb_file1.ibd'
AUTOEXTEND_SIZE = 64M
FILE_BLOCK_SIZE = 16384
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- Para adicionar mais datafiles no InnoDB, vocĂȘ deve usar ALTER depois:
-- NOTA: ALTER TABLESPACE ADD DATAFILE nĂŁo Ă© suportado no InnoDB!
-- InnoDB usa auto-extend ao invĂ©s de mĂșltiplos arquivos
-- ============================================================================
-- 2. NDB - SUPORTE COMPLETO A MĂLTIPLOS DATAFILES
-- ============================================================================
-- Primeiro criar o LOGFILE GROUP
CREATE LOGFILE GROUP lg_multiple
ADD UNDOFILE 'undo_multiple.dat'
INITIAL_SIZE = 128M
UNDO_BUFFER_SIZE = 64M
ENGINE = NDB;
-- â
NDB: MĂșltiplos datafiles sĂŁo suportados via ALTER
CREATE TABLESPACE ts_ndb_multiple
ADD DATAFILE 'ndb_file1.dat'
USE LOGFILE GROUP lg_multiple
INITIAL_SIZE = 256M
EXTENT_SIZE = 1M
MAX_SIZE = 2G
ENGINE = NDB;
-- Adicionar mais datafiles ao tablespace NDB existente
ALTER TABLESPACE ts_ndb_multiple
ADD DATAFILE 'ndb_file2.dat'
INITIAL_SIZE = 256M
ENGINE = NDB;
ALTER TABLESPACE ts_ndb_multiple
ADD DATAFILE 'ndb_file3.dat'
INITIAL_SIZE = 256M
ENGINE = NDB;
ALTER TABLESPACE ts_ndb_multiple
ADD DATAFILE 'ndb_file4.dat'
INITIAL_SIZE = 256M
ENGINE = NDB;
-- ============================================================================
-- 3. VERIFICAR DATAFILES DE UM TABLESPACE
-- ============================================================================
-- Ver informaçÔes dos tablespaces e seus arquivos
SELECT
TABLESPACE_NAME,
FILE_NAME,
FILE_TYPE,
TOTAL_EXTENTS,
EXTENT_SIZE,
INITIAL_SIZE,
MAXIMUM_SIZE,
ENGINE
FROM INFORMATION_SCHEMA.FILES
WHERE TABLESPACE_NAME = 'ts_ndb_multiple'
ORDER BY FILE_NAME;
-- Para InnoDB, ver general tablespaces
SELECT
SPACE,
NAME,
FLAG,
ROW_FORMAT,
PAGE_SIZE,
SPACE_TYPE
FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE NAME = 'ts_innodb_inicial';
-- ============================================================================
-- 4. EXEMPLO PRĂTICO: DISTRIBUĂĂO DE CARGA EM NDB
-- ============================================================================
-- CenĂĄrio: Tablespace com 4 datafiles em diferentes discos
CREATE LOGFILE GROUP lg_distributed
ADD UNDOFILE '/disk1/mysql/undo_distributed.dat'
INITIAL_SIZE = 256M
UNDO_BUFFER_SIZE = 128M
ENGINE = NDB;
CREATE TABLESPACE ts_distributed
ADD DATAFILE '/disk2/mysql/data_file1.dat'
USE LOGFILE GROUP lg_distributed
INITIAL_SIZE = 1G
EXTENT_SIZE = 1M
MAX_SIZE = 10G
NODEGROUP = 0
ENGINE = NDB;
-- Adicionar datafiles em diferentes discos para performance
ALTER TABLESPACE ts_distributed
ADD DATAFILE '/disk3/mysql/data_file2.dat'
INITIAL_SIZE = 1G
ENGINE = NDB;
ALTER TABLESPACE ts_distributed
ADD DATAFILE '/disk4/mysql/data_file3.dat'
INITIAL_SIZE = 1G
ENGINE = NDB;
ALTER TABLESPACE ts_distributed
ADD DATAFILE '/disk5/mysql/data_file4.dat'
INITIAL_SIZE = 1G
ENGINE = NDB;
-- ============================================================================
-- 5. ALTERNATIVAS PARA InnoDB
-- ============================================================================
/*
Como InnoDB nĂŁo suporta mĂșltiplos datafiles por tablespace,
as alternativas sĂŁo:
1. USAR AUTO-EXTEND (recomendado)
- O arquivo cresce automaticamente conforme necessĂĄrio
- Mais simples de gerenciar
2. MĂLTIPLOS TABLESPACES
- Criar vĂĄrios tablespaces com 1 datafile cada
- Distribuir tabelas entre eles
3. PARTICIONAMENTO
- Particionar tabelas grandes
- Cada partição pode estar em tablespace diferente
*/
-- Exemplo: MĂșltiplos tablespaces InnoDB
CREATE TABLESPACE ts_innodb_part1
ADD DATAFILE '/disk1/mysql/ts_part1.ibd'
AUTOEXTEND_SIZE = 64M
ENGINE = InnoDB;
CREATE TABLESPACE ts_innodb_part2
ADD DATAFILE '/disk2/mysql/ts_part2.ibd'
AUTOEXTEND_SIZE = 64M
ENGINE = InnoDB;
CREATE TABLESPACE ts_innodb_part3
ADD DATAFILE '/disk3/mysql/ts_part3.ibd'
AUTOEXTEND_SIZE = 64M
ENGINE = InnoDB;
-- Tabela particionada usando mĂșltiplos tablespaces
CREATE TABLE vendas_particionada (
id INT AUTO_INCREMENT,
data_venda DATE,
valor DECIMAL(10,2),
PRIMARY KEY (id, data_venda)
)
PARTITION BY RANGE (YEAR(data_venda)) (
PARTITION p2023 VALUES LESS THAN (2024) TABLESPACE ts_innodb_part1,
PARTITION p2024 VALUES LESS THAN (2025) TABLESPACE ts_innodb_part2,
PARTITION p2025 VALUES LESS THAN (2026) TABLESPACE ts_innodb_part3
);
-- ============================================================================
-- RESUMO FINAL
-- ============================================================================
/*
CAPACIDADES POR ENGINE:
InnoDB:
â NĂŁo suporta mĂșltiplos datafiles no CREATE TABLESPACE
â NĂŁo suporta ALTER TABLESPACE ADD DATAFILE
â Suporta auto-extend (recomendado)
â Alternativa: mĂșltiplos tablespaces + particionamento
NDB:
â Suporta mĂșltiplos datafiles via ALTER TABLESPACE
â Ideal para distribuição de carga em cluster
â Permite adicionar datafiles dinamicamente
â Melhor controle sobre localização dos arquivos
RECOMENDAĂĂO:
- InnoDB: Use auto-extend ou particionamento
- NDB: Use mĂșltiplos datafiles conforme necessĂĄrio
*/
-- ============================================================================
-- COMANDOS ALTER TABLESPACE MAIS COMPLETOS POR ENGINE
-- ============================================================================
-- ============================================================================
-- 1. NDB ENGINE - OPERAĂĂES COM DATAFILES
-- ============================================================================
-- Adicionar datafile ao tablespace NDB
ALTER TABLESPACE ts_ndb_complete
ADD DATAFILE 'ts_ndb_additional_01.dat'
INITIAL_SIZE = 512M
WAIT
ENGINE = NDB;
-- Adicionar mĂșltiplos datafiles sequencialmente
ALTER TABLESPACE ts_ndb_complete
ADD DATAFILE 'ts_ndb_additional_02.dat'
INITIAL_SIZE = 1G
WAIT
ENGINE = NDB;
ALTER TABLESPACE ts_ndb_complete
ADD DATAFILE 'ts_ndb_additional_03.dat'
INITIAL_SIZE = 1G
WAIT
ENGINE = NDB;
-- Remover datafile do tablespace NDB
ALTER TABLESPACE ts_ndb_complete
DROP DATAFILE 'ts_ndb_additional_01.dat'
WAIT
ENGINE = NDB;
-- Renomear tablespace NDB
ALTER TABLESPACE ts_ndb_complete
RENAME TO ts_ndb_renamed
ENGINE = NDB;
-- ============================================================================
-- 2. NDB ENGINE - UNDO TABLESPACE OPERATIONS
-- ============================================================================
-- Adicionar datafile ao UNDO tablespace NDB
ALTER UNDO TABLESPACE undo_ts_ndb_complete
ADD DATAFILE 'undo_ts_ndb_additional.dat'
INITIAL_SIZE = 256M
WAIT
ENGINE = NDB;
-- Remover datafile do UNDO tablespace NDB
ALTER UNDO TABLESPACE undo_ts_ndb_complete
DROP DATAFILE 'undo_ts_ndb_additional.dat'
WAIT
ENGINE = NDB;
-- Renomear UNDO tablespace NDB
ALTER UNDO TABLESPACE undo_ts_ndb_complete
RENAME TO undo_ts_ndb_renamed
ENGINE = NDB;
-- ============================================================================
-- 3. InnoDB ENGINE - ADICIONAR DATAFILES E CONFIGURAĂĂES
-- ============================================================================
-- â
FUNCIONA: Adicionar datafile ao tablespace InnoDB
-- (Suportado em versĂ”es especĂficas do MySQL/MariaDB)
ALTER TABLESPACE ts_innodb_complete
ADD DATAFILE '/u01/oradata/df_innodb_02.ibd'
INITIAL_SIZE = 48M
ENGINE = InnoDB;
-- Adicionar mĂșltiplos datafiles ao InnoDB
ALTER TABLESPACE ts_innodb_complete
ADD DATAFILE '/u01/oradata/df_innodb_03.ibd'
INITIAL_SIZE = 64M
ENGINE = InnoDB;
ALTER TABLESPACE ts_innodb_complete
ADD DATAFILE '/u01/oradata/df_innodb_04.ibd'
INITIAL_SIZE = 128M
ENGINE = InnoDB;
-- Alterar AUTOEXTEND_SIZE do tablespace InnoDB
ALTER TABLESPACE ts_innodb_complete
AUTOEXTEND_SIZE = 128M
ENGINE = InnoDB;
-- Ativar criptografia no tablespace InnoDB
ALTER TABLESPACE ts_innodb_complete
ENCRYPTION = 'Y'
AUTOEXTEND_SIZE = 64M
ENGINE = InnoDB;
-- Desativar criptografia no tablespace InnoDB
ALTER TABLESPACE ts_innodb_complete
ENCRYPTION = 'N'
ENGINE = InnoDB;
-- Renomear tablespace InnoDB
ALTER TABLESPACE ts_innodb_complete
RENAME TO ts_innodb_renamed
AUTOEXTEND_SIZE = 64M
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- ============================================================================
-- 4. InnoDB ENGINE - UNDO TABLESPACE STATUS
-- ============================================================================
-- Definir UNDO tablespace como ATIVO
ALTER UNDO TABLESPACE undo_ts_innodb_complete
SET ACTIVE
AUTOEXTEND_SIZE = 256M
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- Definir UNDO tablespace como INATIVO
ALTER UNDO TABLESPACE undo_ts_innodb_complete
SET INACTIVE
AUTOEXTEND_SIZE = 128M
ENCRYPTION = 'N'
ENGINE = InnoDB;
-- Renomear UNDO tablespace InnoDB com todas as opçÔes
ALTER UNDO TABLESPACE undo_ts_innodb_complete
RENAME TO undo_ts_innodb_renamed
SET ACTIVE
AUTOEXTEND_SIZE = 512M
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- ============================================================================
-- 5. OPERAĂĂES COMBINADAS COMPLEXAS
-- ============================================================================
-- NDB: Adicionar datafile com todas opçÔes disponĂveis
ALTER TABLESPACE ts_ndb_production
ADD DATAFILE '/data/mysql/ndb/ts_prod_extra_01.dat'
INITIAL_SIZE = 2G
WAIT
RENAME TO ts_ndb_production_v2
ENGINE = NDB;
-- InnoDB: Modificar todas configuraçÔes simultaneamente
ALTER TABLESPACE ts_innodb_production
RENAME TO ts_innodb_production_v2
AUTOEXTEND_SIZE = 256M
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- InnoDB UNDO: Configuração completa de produção
ALTER UNDO TABLESPACE undo_production
RENAME TO undo_production_primary
SET ACTIVE
AUTOEXTEND_SIZE = 1G
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- ============================================================================
-- 6. CENĂRIOS PRĂTICOS DE MANUTENĂĂO
-- ============================================================================
-- CenĂĄrio 1: ExpansĂŁo de capacidade NDB
-- Adicionar mĂșltiplos datafiles para aumentar capacidade
ALTER TABLESPACE ts_app_data
ADD DATAFILE '/storage/fast/mysql/app_data_ssd_01.dat'
INITIAL_SIZE = 5G
WAIT
ENGINE = NDB;
ALTER TABLESPACE ts_app_data
ADD DATAFILE '/storage/bulk/mysql/app_data_bulk_01.dat'
INITIAL_SIZE = 10G
WAIT
ENGINE = NDB;
-- Cenårio 2: Migração e otimização InnoDB
-- Renomear e otimizar configuraçÔes
ALTER TABLESPACE ts_legacy_data
RENAME TO ts_optimized_data
AUTOEXTEND_SIZE = 512M
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- CenĂĄrio 3: Gerenciamento de UNDO tablespaces
-- Alternar entre UNDO tablespaces para manutenção
ALTER UNDO TABLESPACE undo_primary
SET INACTIVE
ENGINE = InnoDB;
ALTER UNDO TABLESPACE undo_secondary
SET ACTIVE
AUTOEXTEND_SIZE = 2G
ENCRYPTION = 'Y'
ENGINE = InnoDB;
-- CenĂĄrio 4: Rebalanceamento de storage NDB
-- Remover datafiles de storage lento
ALTER TABLESPACE ts_high_performance
DROP DATAFILE 'slow_storage_file.dat'
WAIT
ENGINE = NDB;
-- Adicionar datafiles em storage rĂĄpido
ALTER TABLESPACE ts_high_performance
ADD DATAFILE '/nvme/mysql/high_perf_01.dat'
INITIAL_SIZE = 8G
WAIT
ENGINE = NDB;
-- ============================================================================
-- 7. VERIFICAĂĂO E MONITORAMENTO
-- ============================================================================
-- Verificar status dos tablespaces após alteraçÔes
SELECT
TABLESPACE_NAME,
FILE_NAME,
FILE_TYPE,
TOTAL_EXTENTS,
FREE_EXTENTS,
INITIAL_SIZE,
MAXIMUM_SIZE,
AUTOEXTEND_SIZE,
ENGINE
FROM INFORMATION_SCHEMA.FILES
WHERE ENGINE IN ('NDB', 'InnoDB')
ORDER BY TABLESPACE_NAME, FILE_NAME;
-- Verificar UNDO tablespaces InnoDB
SELECT
SPACE,
NAME,
STATE,
SPACE_TYPE
FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo'
ORDER BY NAME;
-- ============================================================================
-- EXPLICAĂĂO DETALHADA DOS PARĂMETROS
-- ============================================================================
/*
PARĂMETROS POR ENGINE:
NDB EXCLUSIVO:
- ADD DATAFILE: Adiciona novo arquivo de dados
- DROP DATAFILE: Remove arquivo de dados (deve estar vazio)
- INITIAL_SIZE: Tamanho inicial do novo datafile
- WAIT: Aguarda conclusão da operação
InnoDB (DEPENDE DA VERSĂO):
- ADD DATAFILE: â
SUPORTADO em versĂ”es especĂficas
- INITIAL_SIZE: Tamanho inicial do novo datafile
- AUTOEXTEND_SIZE: Tamanho do incremento automĂĄtico
- SET ACTIVE/INACTIVE: Estado do UNDO tablespace
- ENCRYPTION: Ativação/desativação da criptografia
PARĂMETROS COMUNS:
- RENAME TO: Renomeia o tablespace
- ENGINE: Especifica a engine (pode ser omitido)
SUPORTE POR VERSĂO:
MySQL 8.0 (documentação oficial):
â ADD DATAFILE nĂŁo suportado para InnoDB
VersĂ”es especĂficas/MariaDB:
â
ADD DATAFILE suportado para InnoDB
â
INITIAL_SIZE funciona com InnoDB
IMPORTANTE:
- O suporte pode variar entre versÔes do MySQL/MariaDB
- Sempre teste em ambiente de desenvolvimento primeiro
- Verifique a documentação da sua versĂŁo especĂfica
VALORES RECOMENDADOS:
- AUTOEXTEND_SIZE InnoDB: 64M-1G (dependendo do uso)
- INITIAL_SIZE: 48M-1G (dependendo do datafile)
- ENCRYPTION: 'Y' para dados sensĂveis
- Sempre usar WAIT em operaçÔes NDB crĂticas
*/
Bueno, Ă© isso ae cambada, mais uma do golfinho pra vocĂȘs, espero que aproveitem e se organizem como bons DBA Oracle, quero dizer, DBA MySQLđ