MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como instalar, proteger e ajustar o desempenho do servidor de banco de dados MariaDB


Um servidor de banco de dados é um componente crítico da infraestrutura de rede necessária para os aplicativos atuais. Sem a capacidade de armazenar, recuperar, atualizar e excluir dados (quando necessário), a utilidade e o escopo de aplicativos da Web e de desktop se tornam muito limitados.

Além disso, saber instalar, gerenciar e configurar um servidor de banco de dados (para que funcione conforme o esperado) é uma habilidade essencial que todo administrador de sistema deve ter.

Neste artigo, revisaremos brevemente como instalar e proteger um servidor de banco de dados MariaDB e, em seguida, explicaremos como configurá-lo.

Instalando e protegendo um servidor MariaDB


No CentOS 7.x , o MariaDB substituiu o MySQL, que ainda pode ser encontrado no Ubuntu (junto com MariaDB). O mesmo vale para o openSUSE .

Por brevidade, usaremos apenas MariaDB neste tutorial, mas observe que, além de ter nomes e filosofias de desenvolvimento diferentes, ambos os Sistemas de gerenciamento de banco de dados relacional (RDBMSs para breve) são quase idênticos.

Isso significa que os comandos do lado do cliente são os mesmos no MySQL e MariaDB , e os arquivos de configuração são nomeados e localizados nos mesmos locais.

Para instalar o MariaDB, faça:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# yum update && yum install mariadb mariadb-server # CentOS 

--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 

--------------- On openSUSE --------------- 
# zypper update && zypper install mariadb mariadb-tools # openSUSE

Observe que, no Ubuntu , você será solicitado a inserir uma senha para o usuário root do RDBMS.

Depois que os pacotes acima forem instalados, verifique se o serviço de banco de dados está em execução e foi ativado para iniciar na inicialização (no CentOS e openSUSE você precisará realizar esta operação manualmente, enquanto no Ubuntu o processo de instalação já terá cuidado disso para você):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
# systemctl start mariadb && systemctl enable mariadb 

--------------- On openSUSE --------------- 
# systemctl start mysql && systemctl enable mysql

Em seguida, execute o mysql_secure_installation roteiro. Este processo permitirá que você:
  1. definir/redefinir a senha para o usuário root do RDBMS
  2. remover logins anônimos (permitindo assim que apenas usuários com uma conta válida façam login no RDBMS)
  3. desabilitar o acesso root para máquinas que não sejam localhost
  4. remova o banco de dados de teste (que qualquer pessoa pode acessar)
  5. ative as alterações associadas a 1 a 4.

Para uma descrição mais detalhada deste processo, você pode consultar a seção Post installation em Install MariaDB Database in RHEL/CentOS/Fedora e Debian/Ubuntu.

Configurando o servidor MariaDB


As opções de configuração padrão são lidas nos seguintes arquivos na ordem indicada:/etc/mysql/my.cnf , /etc/my.cnf e ~/.my.cnf .

Na maioria das vezes, apenas /etc/my.cnf existe. É neste arquivo que definiremos as configurações de todo o servidor (que podem ser substituídas pelas mesmas configurações em ~/.my.cnf para cada usuário).

A primeira coisa que precisamos observar sobre my.cnf é que as configurações são organizadas em categorias (ou grupos) onde cada nome de categoria é colocado entre colchetes.

As configurações do sistema do servidor são fornecidas no [mysqld] seção, onde normalmente você encontrará apenas as duas primeiras configurações na tabela abaixo. O resto são outras opções usadas com frequência (quando indicado, alteraremos o valor padrão por um personalizado de nossa escolha):
Configuração e descrição Valor padrão
diretório de dados é o diretório onde os arquivos de dados são armazenados. datadir=/var/lib/mysql
socket indica o nome e a localização do arquivo de socket que é usado para conexões de clientes locais. Lembre-se de que um arquivo de soquete é um recurso utilizado para passar informações entre aplicativos. socket=/var/lib/mysql/mysql.sock
bind_address é o endereço onde o servidor de banco de dados escutará conexões TCP/IP. Se você precisar que seu servidor escute em mais de um endereço IP, deixe de fora esta configuração (0.0.0.0, o que significa que ele escutará em todos os endereços IP atribuídos a esse host específico).

Vamos mudar isso para instruir o serviço a escutar apenas em seu endereço principal (192.168.0.13):

bind_address=192.168.0.13
bind_address=0.0.0.0
port representa a porta onde o servidor de banco de dados estará escutando.

Substituiremos o valor padrão (3306) por 20500 (mas precisamos garantir que nada mais esteja usando essa porta):
port=20500

Embora algumas pessoas argumentem que a segurança por meio da obscuridade não é uma boa prática, alterar as portas de aplicativos padrão para superiores é um método rudimentar -mas eficaz- para desencorajar varreduras de portas.
porta=3306
innodb_buffer_pool_size é o buffer pool (em bytes) de memória que é alocado para dados e índices que são acessados ​​com frequência ao usar o Innodb (que é o padrão no MariaDB) ou XtraDB como mecanismo de armazenamento.

Vamos substituir o valor padrão por 256 MB:

innodb_buffer_pool_size=256M
innodb_buffer_pool_size=134217728
skip_name_resolve indica se os nomes de host serão resolvidos ou não nas conexões de entrada. Se definido como 1, como faremos neste guia, apenas endereços IP.

A menos que você precise de nomes de host para determinar permissões, é aconselhável desabilitar esta variável (para acelerar conexões e consultas) configurando seu valor como 1:

skip_name_resolve=1
skip_name_resolve=0
query_cache_size representa o tamanho (em bytes) disponível para o cache de consulta em disco, onde os resultados de consultas SELECT são armazenados para uso futuro quando uma consulta idêntica (para mesmo banco de dados e usando o mesmo protocolo e mesmo conjunto de caracteres) é executado.

Você deve escolher um tamanho de cache de consulta que corresponda às suas necessidades com base 1) no número de consultas repetitivas e 2) no número aproximado de registros que essas consultas repetitivas devem retornar. Vamos definir esse valor para 100 MB por enquanto:

query_cache_size=100M
query_cache_size=0 (o que significa que está desabilitado por padrão)
max_connections é o número máximo de conexões simultâneas do cliente com o servidor. Vamos definir esse valor para 30:
max_connections=30Cada conexão usará um thread e, portanto, consumirá memória. Leve esse fato em consideração ao definir max_connections.
max_connections=151
thread_cache_size indica o número de threads que o servidor aloca para reutilização depois que um cliente se desconecta e libera thread(s) anteriormente em uso. Nessa situação, é mais barato (em termos de desempenho) reutilizar um thread do que instanciar um novo.

Novamente, isso depende do número de conexões que você espera. Podemos definir com segurança esse valor para metade do número de max_connections:

thread_cache_size=15
thread_cache_size=0 (desativado por padrão)

No CentOS , precisaremos informar ao SELinux para permitir MariaDB para ouvir em uma porta não padrão (20500 ) antes de reiniciar o serviço:
# yum install policycoreutils-python
# semanage port -a -t mysqld_port_t -p tcp 20500

Em seguida, reinicie o serviço MariaDB.

Ajustando o desempenho do MariaDB


Para nos ajudar a verificar e ajustar a configuração de acordo com nossas necessidades específicas, podemos instalar o mysqltuner (um script que fornecerá sugestões para melhorar o desempenho do nosso servidor de banco de dados e aumentar sua estabilidade):
# wget https://github.com/major/MySQLTuner-perl/tarball/master
# tar xzf master

Em seguida, altere o diretório para a pasta extraída do tarball (a versão exata pode ser diferente no seu caso):
# cd major-MySQLTuner-perl-7dabf27

e execute-o (você será solicitado a inserir as credenciais de sua conta administrativa do MariaDB)
# ./mysqltuner.pl

A saída do script é por si só muito interessante, mas vamos pular para o final onde estão listadas as variáveis ​​a serem ajustadas com o valor recomendado:

O query_cache_type configuração indica se o cache de consulta está desabilitado (0) ou ativado (1) . Neste caso, mysqltuner está nos aconselhando a desativá-lo.

Então, por que somos aconselhados a desativá-lo agora? A razão é que o cache de consulta é útil principalmente em cenários de alta leitura / baixa gravação (o que não é o nosso caso, já que acabamos de instalar o servidor de banco de dados).

AVISO Observação:Antes de fazer alterações na configuração de um servidor de produção, recomendamos que você consulte um administrador de banco de dados especialista para garantir que uma recomendação dada pelo mysqltuner não tenha um impacto negativo em uma configuração existente.

Resumo


Neste artigo, explicamos como configurar um servidor de banco de dados MariaDB depois de instalá-lo e protegê-lo. As variáveis ​​de configuração listadas na tabela acima são apenas algumas configurações que você pode considerar ao preparar o servidor para uso ou ao ajustá-lo posteriormente. Sempre consulte a documentação oficial do MariaDB antes de fazer alterações ou consulte nossas dicas de ajuste de desempenho do MariaDB:

Não t Perder: 15 dicas úteis de ajuste e otimização de desempenho do MariaDB

Como sempre, não hesite em nos informar se tiver dúvidas ou comentários sobre este artigo. Existem outras configurações de servidor que você gostaria de usar? Sinta-se à vontade para compartilhar com o resto da comunidade usando o formulário de comentários abaixo.
Torne-se um administrador de sistemas certificado para Linux