Como instalar e configurar o MariaDB no Ubuntu e CentOS

Vamos aprender como instalar e configurar o MariaDB, um popular MySQL Relational Database Management System (RDBMS) de código aberto.

É desenvolvido pela comunidade e tem a opção de suporte comercial. O MariaDB foi planejado para permanecer altamente compatível com o MySQL, embora existam alguns desvios.

Neste artigo, abordaremos a instalação e configuração do MariaDB no Ubuntu 20.xe CentOS 7.x/8.xe no final revisaremos algumas práticas recomendadas para proteger e melhorar seu desempenho.

MariaDB no Ubuntu

No Ubuntu 20.x, o MariaDB está disponível diretamente em seus repositórios padrão. Usaremos o apt para esta tarefa.

Primeiro atualize os dados dos repositórios do apt por:

$ sudo apt update

Depois que os dados do repositório forem atualizados, execute:

$ sudo apt install mariadb-server

Isso instalará o MariaDB e os pacotes necessários. Confirme com ‘Y’ para quaisquer prompts que você possa receber durante a execução do comando anterior.

Do you want to continue? [Y/n] Y

MariaDB no CentOS 7.x

Para CentOS 7.x, a versão MariaDB disponível do repositório CentOS padrão é 5.x. Vamos instalar a versão mais recente disponível do MariaDB.

Para isso, precisamos primeiro configurar um repositório yum adicional. O MariaDB fornece uma maneira fácil de usar o script mariadb_repo_setup. Para obter a configuração do repositório, execute os seguintes comandos em seu sistema CentOS 7.x:

$ sudo yum install wget
$ wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ chmod +x mariadb_repo_setup
$ sudo ./mariadb_repo_setup

Este script irá configurar o repositório yum necessário para instalar a versão mais recente do MariaDB automaticamente. No momento da redação deste artigo, é 10.x.

Ou caso você queira seguir o caminho manual, você pode configurar um repositório yum manual criando um novo arquivo repo como:

$ sudo vi /etc/yum.repos.d/MariaDB.repo

Em seguida, adicione os seguintes detalhes ao arquivo repo e salve-o:

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Agora para instalar o MariaDB, execute o comando abaixo:

$ sudo yum install MariaDB-server

Confirme todos os prompts que aparecem durante a instalação digitando ‘y’:

Is this ok [y/d/N]: y

Isso conclui a instalação do servidor MariaDB e dos pacotes dependentes.

MariaDB no CentOS 8.x

Para CentOS 8.x, a versão disponível dos repositórios padrão é 10.3 ou mais recente. Podemos instalar diretamente o MariaDB usando o comando DNF:

sudo dnf install mariadb-server

Caso contrário, para obter a versão mais recente disponível, você pode seguir o caminho manual, conforme fornecido na seção anterior para o CentOS 7.xe isso deve ajudá-lo a trabalhar.

Iniciando o MariaDB

Em uma máquina Ubuntu, você terá o serviço MariaDB em execução logo após a instalação, enquanto para o CentOS, temos que habilitar e iniciar manualmente os serviços relevantes.

De qualquer forma, para Ubuntu e CentOS, execute os comandos abaixo para iniciar o serviço MariaDB, habilitado na inicialização e verifique-o:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
$ sudo systemctl status mariadb.service

Resultado:

$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ sudo systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2020-12-31 13:20:04 IST; 13s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 13521 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─13521 /usr/sbin/mariadbd

Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: 10.5.8 started; log sequence number 45118; transaction id 20
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] InnoDB: Buffer pool(s) load completed at 201231 13:20:04
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Server socket created on IP: '::'.
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Reading of all Master_info entries succeeded
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] Added new Master_info '' to hash table
Dec 31 13:20:04 centos7vm mariadbd[13521]: 2020-12-31 13:20:04 0 [Note] /usr/sbin/mariadbd: ready for connections.
Dec 31 13:20:04 centos7vm mariadbd[13521]: Version: '10.5.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Dec 31 13:20:04 centos7vm systemd[1]: Started MariaDB 10.5.8 database server.
$

Protegendo o MariaDB

Como primeiro passo após a instalação do MariaDB, devemos proteger sua implantação definindo uma senha de root, desabilitando o login remoto de root, removendo o banco de dados de teste, bem como usuários anônimos e, finalmente, recarregando os privilégios.

  10 Marketplaces NFT Polygon (MATIC) para comprar/vender

Execute o comando abaixo para proteger o MariaDB:

$ sudo mysql_secure_installation

Você pode seguir os prompts padrão com ações sugeridas, a menos que tenha um requisito específico para desviar.

Resultado:

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

Aqui usaremos a autenticação do sistema, portanto, não configure uma senha de root separada para o MariaDB, pois ela já é segura. Se precisar, você também pode configurar uma senha de root separada.

Validação de configuração

Para verificar sua configuração do MariaDB, execute (especifique a senha que você configurou durante a execução do mysql_secure_installation ou, se for ignorado nesse momento, use as credenciais de root do seu sistema):

$ sudo mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 53 min 17 sec

Threads: 2  Questions: 77  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Você pode configurar uma nova conta de administrador no lugar da raiz, conforme mostrado abaixo (altere o valor da senha com a que você pretende definir para a conta de administrador):

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 44
Server version: 10.5.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> exit
Bye
$

Verifique o acesso com o novo usuário administrador como (digite a senha conforme definido na etapa anterior):

$ mysqladmin -u admin -p version
Enter password:
mysqladmin  Ver 9.1 Distrib 10.5.8-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.5.8-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 56 min 59 sec

Threads: 2  Questions: 83  Slow queries: 0  Opens: 20  Open tables: 14  Queries per second avg: 0.024
$

Otimização do SO

Após a instalação e a segurança da configuração do MariaDB, você deve tomar medidas para ajustar o sistema operacional e o banco de dados para obter um desempenho ideal. Esse ajuste varia com base na configuração do sistema, tipo de uso, número de usuários e vários outros fatores.

  Como dividir a tela em um Chromebook (5 métodos)

Do ponto de vista do sistema operacional, alguns parâmetros do sistema podem ser configurados para o MariaDB, que discutiremos agora.

Configurações do kernel Linux – Agendador de E/S

Os agendadores de E/S recomendados para MariaDB são noop e deadline. Para verificar use cat /sys/block/${DEVICE}/queue/scheduler

$ sudo cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
$

Uma mudança temporária pode ser feita emitindo o seguinte comando e seu efeito, se houver, será imediato no desempenho do sistema:

$ sudo echo noop > /sys/block/sda/queue/scheduler

Para torná-lo persistente, você precisará configurá-lo no arquivo de configuração do GRUB conforme mostrado abaixo em /etc/default/grub , reconstruir o GRUB e reinicializar o sistema.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Limites de recursos – Limite de arquivos abertos

O Linux geralmente limita o número de descritores de arquivo que cada processo pode abrir. Para um sistema de banco de dados ativo, esse limite pode exceder facilmente ou afetar o desempenho. Em muitos sistemas Linux, esse limite padrão é 1024. Além disso, há uma opção de limites flexíveis e rígidos.

Para aumentar o limite, você pode adicionar as seguintes linhas em seu /etc/security/limits.conf:

mysql soft nofile 65535
mysql hard nofile 65535

Uma reinicialização do sistema será necessária após qual usuário mysql poderá ver e usar os novos limites. Isso pode ser verificado como:

$ ulimit -Sn
65535
$ ulimit -Hn
65535

Limites de recursos – Tamanho do arquivo principal

O Linux limita o tamanho dos arquivos principais como visto no caso anterior. Novamente, isso tem um limite flexível e rígido e, por padrão, o limite flexível é definido como 0, o que efetivamente desativa a geração do arquivo principal. Para permitir a geração do arquivo principal (outras configurações necessárias para a geração de core dump), podemos aumentar esse valor em /etc/security/limits.conf como:

mysql soft core unlimited
mysql hard core unlimited

Após a reinicialização do sistema, o usuário mysql poderá ver os novos valores usando o comando ulimit como:

$ ulimit -Sc
unlimited
$ ulimit -Hc
unlimited

Configurar troca

O valor de troca no Linux determina a probabilidade do sistema trocar uma página da memória para o espaço de troca configurado no sistema. Normalmente, o valor padrão é definido como 60, que pode ser verificado em:

sysctl vm.swappiness

Seu valor pode variar de 0 a 100, onde um valor menor significa menor probabilidade de troca. Em um servidor de banco de dados executando apenas MariaDB, gostaríamos de reduzir esse valor para 0 para evitar o uso de swap o máximo possível. Observe aqui que a configuração do valor de swappiness de 0 deve ser feita com cautela, considerando outros fatores de design do sistema, como no caso de alto uso de memória ou carga de E/S, há uma chance de o processo de falta de memória (OOM) ser eliminado pelo kernel.

  Como consertar fotos tortas do iPhone automaticamente

Como uma configuração baixa de swappiness é recomendada para cargas de trabalho de banco de dados e, como tal, para bancos de dados MariaDB, é recomendável definir swappiness para um valor de 1. Você pode adicionar a linha abaixo em /etc/sysctl.conf para tornar essa alteração persistente:

vm.swappiness = 1

As alterações entrarão em vigor após a reinicialização do sistema, embora você sempre possa fazer isso com antecedência usando o comando sysctl:

sysctl -w vm.swappiness=1

Otimizações do sistema de arquivos

Para o MariaDB, os melhores sistemas de arquivos Linux são geralmente considerados ext4, XFS e Btrfs, todos incluídos no kernel Linux principal e amplamente suportados. Esses sistemas de arquivos estão disponíveis na maioria das distribuições Linux. Cada sistema de arquivos tem suas propriedades e recursos exclusivos e pode ser escolhido com base nos requisitos após uma análise adequada.

Além disso, é improvável que você precise registrar o tempo de acesso ao arquivo em um servidor de banco de dados. Podemos desativá-lo para melhorar o desempenho. Você pode montar o sistema de arquivos relevante com a opção noatime ou adicioná-lo nas opções de montagem no arquivo /etc/fstab para torná-lo persistente.

Otimização de banco de dados

Existem vários ajustáveis ​​internos ao funcionamento do MariaDB que podem ser personalizados com base nos requisitos e necessidades de cada um.

Vamos discutir alguns deles aqui.

O MariaDB é configurado principalmente pelo arquivo my.cnf.

No Ubuntu, você pode encontrar my.cnf em:

/etc/mysql/my.cnf

Enquanto no CentOS está localizado em:

/etc/my.cnf

A documentação detalhada sobre quais variáveis ​​estão disponíveis para ajuste no arquivo de configuração pode ser consultada em aqui.

Muito também depende do tipo de mecanismo usado pelo MariaDB, ou seja, MyISAM e InnoDB ou XtraDB. Ambos têm seus próprios conjuntos de prós e contras e a escolha de um depende dos requisitos do banco de dados e do aplicativo.

Devemos definir innodb_buffer_pool_size para cerca de 80% de sua memória. Isso garante que 80% do seu conjunto de trabalho esteja na memória.

Alguns dos outros parâmetros ajustáveis ​​importantes são:

innodb_log_file_size
innodb_flush_method
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
innodb_buffer_pool_instances
innodb_buffer_pool_size
innodb_max_dirty_pages_pct_lwm
innodb_read_ahead_threshold
innodb_thread_concurrency

Mais detalhes sobre o ajuste de variáveis ​​InnoDB ou XtraDB podem ser encontrados aqui. Consulte este guia para todas as opções de ajuste disponíveis para MariaDB.

Se você estiver interessado, confira esses recursos para aprender SQL e NoSQL.

Conclusão

MariaDB é uma das escolhas populares quando se trata de DBMS de relação. Ser de código aberto com uma comunidade diversificada contribui ainda mais para isso.

Para saber mais, consulte o seu documentação que inclui tópicos como SQL básico, migração, administração MariaDB, alta disponibilidade, ajuste de desempenho, mecanismos de armazenamento, programação e personalização. Você também pode desabilitar o log binário se não estiver usando um cluster.