Nesta postagem do blog, mostraremos um guia passo a passo sobre como instalar e configurar um servidor MySQL manualmente no sistema operacional Ubuntu 20.04, bem como usando o serviço de banco de dados gerenciado do ScaleGrid. Nas seções a seguir deste tutorial, nós o ajudaremos em cada passo para configurar com sucesso seu próprio servidor MySQL e configurá-lo corretamente.
Um pouco sobre MySQL e Ubuntu
MySQL é um sistema de gerenciamento de banco de dados relacional (DBMS) de código aberto. Ele roda em servidores Windows e Linux e é comumente instalado como parte da pilha LAMP (Linux, Apache, MySQL, PHP/Python/Perl) ou da pilha LEMP (Linux, Nginx, MySQL, PHP). É uma escolha adequada se você sabe que simplesmente precisa de um banco de dados, pois é um sistema baseado em SQL rápido, simples e escalável e é considerado o sistema de gerenciamento de banco de dados relacional mais popular.
Embora o Ubuntu seja um dos sistemas operacionais de desktop de código aberto mais populares do mundo, o Ubuntu 20.04 vem com estabilidade de classe empresarial, resiliência e segurança ainda melhor em um modelo econômico.
Como instalar o MySQL no Ubuntu 20.04
Antes de nos aprofundarmos no processo de instalação de um servidor MySQL no Ubuntu, lembre-se destes pré-requisitos:
- Um servidor Ubuntu 20.04 com um administrador não root ou usuário sudo para executar as etapas autorizadas e um firewall configurado com UFW
- O sistema deve ser atualizado usando:
sudo apt update
sudo apt upgrade -y
- Uma conexão de rede estável
Instalação nova do MySQL no Ubuntu 20.04
Instalar o MySQL
Para instalar o MySQL no Ubuntu 20.04, um simples comando (apt install mysql server) pode ser executado, pois o pacote de instalação faz parte do repositório oficial do Ubuntu 20.04.
apt install mysql-server -y
Protegendo a instalação do servidor MySQL
O servidor MySQL tem um script pré-construído para sua instalação segura. Como prática comum para tornar esta instalação segura, execute este script após o comando de instalação. O que ele faz é permitir que o usuário defina a senha de root para o MySQL, desabilite a acessibilidade da conta root de fora do host local, remova contas de usuários anônimos e também remova o banco de dados de teste que pode ser acessado por usuários anônimos. Este script pode ser invocado com este
sudo
comando:sudo mysql_secure_installation
Uma série de prompts aparece após a execução do script de instalação segura. O primeiro prompt é configurar
VALIDATE PASSWORD COMPONENT
. Este prompt (se selecionado) realizará a validação na criação da senha do usuário. Ele só permitirá que você crie a senha se ela corresponder aos padrões de senha no MySQL. Configurando a senha de root
O prompt a seguir é para configurar a senha para root. O usuário deve definir esta senha. Responda a todos os prompts subsequentes como "Sim", pois essa é uma prática recomendada do ponto de vista da segurança.
Configurando SSL para a instalação do servidor MySQL
Há momentos após a instalação do MySQL, quando o servidor de banco de dados é configurado em uma máquina física separada, na mesma rede ou em uma rede diferente. Para se comunicar com esse banco de dados, a comunicação precisa ser protegida e criptografada. Portanto, os certificados SSL devem ser instalados e ativados no servidor de banco de dados. O protocolo SSL usa um par de chaves para autenticar, proteger e gerenciar conexões seguras. Use o seguinte comando para gerar chaves SSL:
sudo mysql_ssl_rsa_setup --uid=mysql
Seu diretório padrão contém essas chaves e você pode encontrá-las invocando o seguinte comando:
sudo sudo find /var/lib/mysql -name '*.pem' -ls
mysql> \s
Ao invocar o comando acima no prompt SQL, você pode confirmar que o SSL está ativo procurando a linha que diz
SSL: Cipher in use is […]
, como pode ser visto na imagem abaixo. Protegendo seu banco de dados
A segurança do banco de dados é um dos elementos mais críticos a serem considerados ao planejar a instalação do MySQL. Os invasores estão sempre à procura de maneiras de obter entrada de backdoor em sistemas de banco de dados e obter informações privilegiadas sobre o alvo. Alterar sua porta padrão é uma maneira fácil de aumentar a segurança do seu banco de dados. Isso pode ser alterado no arquivo de configuração em
/etc/mysql/mysql.conf.d/mysqld.cnf
. Criar um usuário e banco de dados MySQL
Usando este comando simples, você pode criar uma conta de usuário do banco de dados MySQL junto com sua senha:
CREATE USER 'Username' @ 'localhost' IDENTIFIED BY 'StrongPassword';
O campo
localhost
no CREATE USER
O comando indica que o usuário se conectará a partir do mesmo servidor. Ele pode ser substituído por um endereço IP se você quiser se conectar de uma máquina com um endereço IP específico ou pode ser substituído por um sinal de porcentagem %
se o usuário quiser acessar o banco de dados de qualquer lugar. Se você deseja apenas criar um banco de dados, ele pode ser criado usando o seguinte comando:
CREATE DATABASE databasename;
Depois de criar o usuário e o banco de dados, o usuário receberá as permissões necessárias para o banco de dados.
As permissões podem ser de qualquer tipo; por exemplo,
CREATE
, ALTER
, INSERT
, UPDATE
, DELETE
, SELECT
, RELOAD
, etc. Normalmente, o proprietário do banco de dados precisa de todas as permissões e essas permissões podem ser atribuídas independentemente a um usuário. Todas essas permissões podem ser concedidas de uma só vez usando o comando. GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';
Novamente, a palavra-chave localhost pode ser substituída por um endereço IP ou pelo
%
sign, se o usuário pretende se conectar a partir de um endereço IP específico ou de qualquer outra fonte. Privilégios para um usuário podem ser vistos através do comando SHOW GRANTS
SHOW GRANTS for 'databaseuser'@'localhost';
Todos os privilégios podem ser revogados para um usuário usando o comando:
REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';
Aqui você pode ver que depois de executar o
REVOKE
comando, não há privilégios para o usuário jason
. Criando e excluindo tabelas
É fácil adicionar ou excluir tabelas do seu banco de dados. Tudo que você precisa fazer é usar um dos seguintes comandos:
DROP TABLE databasename.tablename
CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);
O parâmetro column especifica o nome, enquanto o parâmetro datatype especifica que tipo de dados a coluna contém.
Há momentos em que uma chave primária precisa ser adicionada a uma coluna. Uma chave primária permite identificar exclusivamente cada entrada em sua tabela. Isso pode ser feito mencionando-o no
CREATE TABLE
comando. O exemplo abaixo cria uma coluna user_id
com uma chave primária que é incrementada automaticamente. Lembre-se de que a chave primária deve conter valores exclusivos e não pode conter valores nulos Adicionar ou remover colunas em uma tabela
As colunas também podem ser adicionadas ou excluídas de uma tabela específica de um banco de dados após sua criação.
Para fazer isso, altere o banco de dados que deseja alterar usando o
use database_name
comando. Subsequentemente, os seguintes comandos adicionarão e descartarão uma coluna:
ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;
Inserir dados em uma tabela
Insira dados em uma tabela usando o seguinte comando:
INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );
Você precisará especificar os nomes das colunas e o valor a ser inserido em cada coluna em ordem. Se você deseja inserir valores em todas as colunas de uma tabela, basta omitir as colunas e começar a especificar os valores diretamente após o nome da tabela:
INSERT INTO tablename VALUES ('value1','value2','value3' );
Update Data in a Table
Use o seguinte comando para atualizar os dados em uma tabela:
UPDATE tablename SET columnname= 'newvalue' WHERE columnname='value'
O
WHERE
condição informa em qual linha os dados devem ser atualizados. Se a condição não for especificada, os dados serão atualizados em todas as linhas da coluna especificada. Selecionar dados de uma tabela
Para selecionar e visualizar dados de colunas específicas em uma tabela, use o seguinte comando:
SELECT column1,column2 FROM tablename;
Porém, para selecionar todas as colunas de uma tabela, o comando utilizado é:
SELECT * FROM tablename;
Ativar registro binário
Habilitar o log binário no servidor de banco de dados MySQL permite que você registre as consultas que fizeram alterações no banco de dados. O log binário é um recurso útil para habilitar se, por exemplo, você precisar solucionar um problema causado por uma consulta no banco de dados.
Para habilitar o log binário, adicione a seguinte linha dentro do arquivo de configuração em
/etc/mysql/mysql.conf.d/mysqld.cnf
. log-bin=mysql-bin.log
Para confirmar se o registro binário está ativo, invoque o seguinte comando do shell do MySQL:
show variables like '% log_bin%'
Por padrão, os arquivos de log binários são armazenados dentro do
/var/lib/mysql
diretório na maioria das distribuições Linux, incluindo Ubuntu. Configurar replicação assíncrona simples
O MySQL tem suporte para replicação, o que é útil ao planejar a recuperação de desastres e garantir que você minimize o potencial de qualquer tempo de inatividade. O MySQL suporta dois tipos de replicações:
- Replicação semi-síncrona
- Replicação assíncrona
Com a replicação semi-síncrona, quando uma fonte confirma uma transação, todas as réplicas também confirmaram a transação antes que a fonte retorne à sessão que executou a transação. A desvantagem é que causa um grande atraso na conclusão da transação devido ao sistema de transações mencionado acima.
Enquanto que, com a replicação assíncrona, a origem grava eventos em seu log binário e as réplicas os solicitam quando estão prontas. No entanto, não há garantia de que qualquer evento chegará a qualquer réplica.
Por padrão, o MySQL tem a replicação assíncrona habilitada devido ao seu rápido tempo de processamento. Ainda assim, a principal desvantagem é que, se o banco de dados de origem falhar, não há como recuperar dados que não concluíram as transações para bancos de dados de réplica. Por outro lado, o modo de replicação semi-síncrona se concentra mais na disponibilidade e durabilidade dos dados, mas é muito lento. A escolha de um modo de replicação depende exclusivamente das necessidades específicas do usuário em relação à configuração do banco de dados.
Dentro do arquivo my.cnf para o servidor de origem e o servidor de réplica, você pode escrever os IDs do servidor respectivamente como:
server_id=1
server_id=2
Um usuário MySQL dedicado pode ser criado no servidor de origem, que será usado pela réplica para se conectar ao servidor de origem.
GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server' → IDENTIFIED BY ‘masterpassword’;
O processo de replicação no servidor de réplica pode ser iniciado por:
mysql> CHANGE MASTER TO -> MASTER_HOST='ip address', -> MASTER_PORT=port number, -> MASTER_USER='username', -> MASTER_PASSWORD='password', -> MASTER_LOG_FILE='', -> MASTER_LOG_POS=4; mysql> start slave;
Essas instruções começarão a criar o servidor de réplica como uma cópia do servidor de origem.
Fazer backup/restaurar um banco de dados MySQL
Manter um backup do seu banco de dados é sempre uma boa ideia, você nunca sabe quando pode precisar dele para garantir que dados críticos não sejam perdidos. Para fazer backup de um banco de dados para MySQL no sistema operacional Ubuntu, basta executar o seguinte
mysqldump
comando:sudo mysqldump -u root -p <database.name> > <filename.sql>
Para restaurar um banco de dados excluído, o banco de dados é criado primeiro com o mesmo nome no MySQL. O banco de dados é então restaurado com o comando:
sudo mysql -u root -p <database.name> < <filename.sql>
A captura de tela a seguir primeiro exclui nosso test_database, depois o recria e tenta restaurar todos os seus dados do backup criado anteriormente. A importação de dados também pode ser feita seguindo o mesmo processo.
Encerrando a instalação do MySQL no Ubuntu
Agora você concluiu com sucesso as etapas básicas para instalar o MySQL no Ubuntu 20.04. Após concluir a instalação, você terá um banco de dados relacional operacional que pode ser usado para construir seu próximo aplicativo ou site.
Se você preferir que todo esse processo seja automatizado e gerenciado por especialistas, confira a próxima parte deste guia.
Usando ScaleGrid para configurar sua implantação do MySQL da DigitalOcean
Nesta parte do guia, estamos usando nossa solução de hospedagem MySQL totalmente gerenciada, pois oferece a maior taxa de transferência e menor latência na DigitalOcean. Saiba mais no artigo Best MySQL DigitalOcean Performance para comparar preços, latência e desempenho de taxa de transferência do ScaleGrid vs. DigitalOcean Managed Databases.
Todo o processo deve levar menos de 20 minutos, com apenas alguns minutos no início para personalizar sua configuração de implantação do MySQL e alguns minutos no final para se conectar ao seu aplicativo .
Depois de se inscrever para uma conta de avaliação gratuita, a primeira coisa que você fará é selecionar MySQL como seu banco de dados, DigitalOcean como sua nuvem e Hospedagem Dedicada como seu plano para iniciar o processo de criação do cluster:
Etapa 1. Insira os detalhes de implantação do MySQL
O assistente de criação de cluster será aberto na primeira etapa, na qual você poderá personalizar os detalhes básicos de sua implantação. Insira um nome para seu cluster usando alfanuméricos e use um nome exclusivo e descritivo para que você possa reconhecê-lo facilmente posteriormente.
Em seguida, selecione o data center da DigitalOcean que você gostaria de usar para seu servidor mestre no menu suspenso da região da nuvem – recomendamos usar a mesma região que seus aplicativos DigitalOcean Droplets para obter o melhor atuação. Em seguida, você pode selecionar o tamanho da VM das instâncias do Droplet DigitalOcean e a versão do MySQL que deseja usar (todas as principais versões suportadas). O InnoDB Storage Engine é o padrão para todas as implantações do MySQL. Clique em próximo.
Etapa 2. Habilitar a replicação mestre-escravo
Na etapa 2, você pode habilitar a replicação mestre-escravo do MySQL da DigitalOcean para adicionar alta disponibilidade à sua implantação. A replicação é importante para manter seu aplicativo disponível e online para seus usuários caso a região do data center da DigitalOcean fique inativa. Embora a DigitalOcean seja um provedor de nuvem altamente confiável com 99,99% de tempo de atividade, os data centers inevitavelmente caem, portanto, replicar seus dados para locais de data center adicionais permite minimizar o risco de perda de dados e tempo de inatividade para seus usuários.
Se você quiser continuar com uma implantação independente, clique em próximo para ir para a etapa 3 sem habilitar a configuração mestre-escravo.
Observação – a configuração mestre-escravo está disponível apenas para contas pagas, você não pode configurar uma implantação de conjunto de réplicas enquanto estiver no modo de avaliação.
Configure a configuração do MySQL Master-Slave
Existem algumas opções aqui para personalizar sua configuração mestre-escravo do MySQL. Primeiro, você pode escolher entre 2 + 1 Quorum ou 3 nós para sua implantação. Ambos oferecem alta disponibilidade, mas na configuração 2 + 1 Quorum, você tem apenas 2 nós portadores de dados, pois o nó Quorum serve como tomador de decisões em um evento de failover. Você também pode entrar em contato com o suporte para personalizar sua configuração mestre-escravo para adicionar mais nós à sua implantação.
Em seguida, você pode escolher entre replicação semissíncrona e assíncrona. A replicação semisíncrona garante que pelo menos um escravo tenha recebido todos os dados que o mestre confirmou, garantindo que o failover para o escravo correto seja sem perdas. Na replicação assíncrona, cada escravo sincroniza de forma assíncrona com o mestre, de modo que o failover do mestre para o escravo pode resultar em failover para um servidor que não está totalmente sincronizado com o mestre atual.
Por fim, personalize os locais do data center da DigitalOcean que deseja usar para seus nós escravos. Assim que terminar, clique em próximo.
Como configurar o MySQL na DigitalOceanClick To Tweet
Etapa 3. Ativar SSL
Na etapa 3, você pode habilitar o SSL para sua implantação. Por padrão, o servidor MySQL sempre instala e habilita a configuração SSL, mas não é obrigatório que os clientes se conectem usando SSL. Os clientes podem optar por se conectar com ou sem SSL, pois o servidor permite os dois tipos de conexões. Saiba mais sobre como configurar e gerenciar SSL neste tutorial do MySQL.
Etapa 4. Configurar firewalls
Na última etapa do processo de criação do cluster, insira pelo menos um CIDR de IP que terá permissão de acesso à sua implantação do MySQL para configurar sua regra de firewall. Você pode encontrar seu CIDR de IP atual na parte superior da página. Eles podem ser personalizados posteriormente no nível do cluster e no nível da conta. Depois de inseri-lo, clique em Adicionar. Insira todos os CIDRs de IP desejados e clique em Avançar.
Etapa 5. Revisar e criar
A última página fornece um breve resumo do seu novo cluster MySQL DigitalOcean. Revise todos os detalhes e clique no botão Anterior para voltar a uma etapa anterior e modificar suas configurações. Quando estiver pronto, clique em Criar para ativar seu cluster.
E é isso! Sua implantação está sendo provisionada agora! Isso leva cerca de 15 minutos, portanto, enquanto espera, você pode se familiarizar com as ferramentas de gerenciamento do MySQL no console – backups, restaurações, dimensionamento, alertas, análise de consultas etc.
Conectar e migrar
Quando o status do cluster mudar de “Criando” para “Em execução”, você poderá conectar sua implantação. Existem algumas maneiras diferentes de fazer isso – por meio de sua string de conexão com seu aplicativo, por meio da linha de comando, por WordPress, por MySQL Workbench ou outras ferramentas populares de GUI. Todos os detalhes de sua conexão estão disponíveis na metade inferior da guia Visão geral da página de detalhes do cluster.
Visite as guias superiores para criar um banco de dados MySQL e criar um usuário de banco de dados MySQL. Eles podem ser acessados e gerenciados a qualquer momento no console do ScaleGrid.
Migre sua instalação existente do MySQL em minutos
A migração também é um processo automatizado que requer apenas alguns detalhes de sua implantação existente. Clique no botão Importar dados na guia Visão geral e insira o Nome do servidor, Porta, Nome(s) do banco de dados, Nome de usuário e Senha. Confira nosso documento de Migrações do MySQL para obter mais detalhes e opções de migração adicionais.
|
Executando seu servidor MySQL na DigitalOcean
Depois que você estiver em funcionamento, sua implantação do MySQL poderá operar virtualmente no piloto automático. Como o ScaleGrid é um serviço totalmente gerenciado, cuidamos de toda a administração e manutenção do dia-a-dia de seus bancos de dados MySQL, para que você possa se concentrar na criação de seu aplicativo. Se surgir alguma coisa que exija sua atenção, como falta de espaço em disco, enviaremos uma notificação para que você possa fazer login e ver se está pronto para escalar seu cluster.
Você também pode se conectar com nossos especialistas em MySQL a qualquer momento por meio de nosso suporte 24 horas por dia, 7 dias por semana, para ajudá-lo a configurar e solucionar problemas de sua implantação.