# MariaDB

## Introdução

MariaDB é um sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto, criado pelos desenvolvedores originais do MySQL. É um fork do MySQL, projetado para manter alta compatibilidade com o MySQL enquanto oferece recursos adicionais e melhorias de desempenho.

> [!NOTA] Compatibilidade com MySQL 
> MariaDB é altamente compatível com MySQL, permitindo uma migração fácil na maioria dos casos.

## Características Principais

- Compatibilidade com MySQL
- Melhorias de desempenho
- Recursos adicionais de segurança
- Motores de armazenamento avançados
- Suporte a Galera Cluster para alta disponibilidade

## Instalação

### Ubuntu/Debian

```bash
sudo apt-get update
sudo apt-get install mariadb-server
```

### CentOS/RHEL

```bash
sudo yum install mariadb-server
```

## Configuração Inicial

Após a instalação, execute o script de segurança:

```bash
sudo mysql_secure_installation
```

## Comandos Básicos

|COMANDO|DESCRIÇÃO|
|---|---|
|mysql -u root -p|Conectar ao MariaDB como root|
|SHOW DATABASES;|Listar bancos de dados|
|USE database_name;|Selecionar um banco de dados|
|SHOW TABLES;|Listar tabelas do banco de dados atual|
|DESCRIBE table_name;|Mostrar estrutura de uma tabela|

## Exemplos de Uso

1. Criar um banco de dados:
    
```sql
CREATE DATABASE meu_banco;
```
    
2. Criar uma tabela:
    
```sql
CREATE TABLE usuarios (
	id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100),
    email VARCHAR(100)
);
```
    
3. Inserir dados:
    
```sql
INSERT INTO usuarios (nome, email) VALUES ('João', 'joao@exemplo.com');
```
    
4. Consultar dados:
    
```sql
SELECT * FROM usuarios WHERE nome = 'João';
```
    

## Casos de Uso

1. **Aplicações Web**
    
    - Armazenamento de dados para sites e aplicações web
2. **Sistemas de Gerenciamento de Conteúdo**
    
    - Backend de dados para CMS como WordPress, Drupal
3. **Aplicações Empresariais**
    
    - Armazenamento de dados para ERP, CRM, etc.
4. **Análise de Dados**
    
    - Armazenamento e processamento de grandes volumes de dados

## Arquitetura Típica

```mermaid
graph TD
    A[Aplicação Cliente] --> B[Load Balancer]
    B --> C[MariaDB Master]
    C --> D[MariaDB Slave 1]
    C --> E[MariaDB Slave 2]
    F[Backup System] --> C
```

## Configuração Avançada

### Otimização de Performance

Edite `/etc/mysql/mariadb.conf.d/50-server.cnf`:

```ini
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
```

### Configuração de Replicação

No servidor master:

```sql
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
```

No servidor slave:

```sql
CHANGE MASTER TO
  MASTER_HOST='master_host',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=0;
START SLAVE;
```

## Monitoramento e Manutenção

- Use `mysqladmin` para monitoramento básico
- Implemente ferramentas como Prometheus e Grafana para monitoramento avançado
- Realize backups regulares usando `mysqldump` ou ferramentas como Percona XtraBackup

## Otimização de Desempenho

1. Otimize consultas usando EXPLAIN
2. Use índices apropriadamente
3. Configure o buffer pool do InnoDB corretamente
4. Utilize particionamento para grandes tabelas

## Troubleshooting Comum

1. **Conexões Lentas**: Verifique o max_connections e threads_connected
2. **Consultas Lentas**: Analise o slow query log
3. **Problemas de Replicação**: Verifique o status da replicação e logs de erro

## Considerações de Segurança

1. Implemente autenticação forte e gerencie permissões cuidadosamente
2. Mantenha o MariaDB atualizado com as últimas patches de segurança
3. Use SSL para conexões remotas
4. Implemente firewalls e restrições de acesso a nível de rede

## Melhores Práticas

1. Realize backups regulares e teste os procedimentos de restauração
2. Implemente monitoramento proativo
3. Otimize o esquema de banco de dados e consultas regularmente
4. Mantenha documentação atualizada das configurações e procedimentos

## Comparação com Outros RDBMS

|CARACTERÍSTICA|MARIADB|MYSQL|POSTGRESQL|
|---|---|---|---|
|Código Aberto|Sim|Parcial|Sim|
|Compatibilidade|Alta com MySQL|-|Parcial|
|Desempenho|Muito Bom|Bom|Excelente|
|Recursos Avançados|Muitos|Alguns|Muitos|

## Tendências Futuras

- Maior foco em recursos para big data e análise
- Melhorias contínuas em desempenho e escalabilidade
- Expansão de recursos de segurança e conformidade

## Considerações Finais

MariaDB oferece uma alternativa robusta e de código aberto ao MySQL, com melhorias significativas em desempenho e recursos adicionais. Sua alta compatibilidade com MySQL facilita a migração, enquanto suas inovações contínuas o tornam uma escolha atraente para uma ampla gama de aplicações, desde pequenos sites até grandes sistemas empresariais. A comunidade ativa e o desenvolvimento contínuo garantem que o MariaDB permaneça uma opção competitiva no mercado de RDBMS.

## Etiquetas

#MariaDB #Database #MySQL #OpenSource #RDBMS

## Leia Também

- [[elasticsearch|Elasticsearch]]
- [[backup do sistema|Backup do Sistema]]
- [[grupos de backup|Grupos de Backup]]