Guia completo: Instalação e configuração do SQL Server no Linux
O que é SQL Server?
O SQL server é um sistema gerenciador de banco de dados relacional, mantido pela Microsoft. Originalmente estava disponível apenas para distribuições Windows, como o Windows Server.
Desde a versão do SQL Server 2017 também é possível instalá-lo no Linux e em Docker.
A versão developer
É uma edição gratuita e completa do SQL server, para desenvolvimento e testes em ambientes não produtivos. Você pode instalar e utilizá-lo em ambientes Windows e Linux.
Requisitos de sistema
Estes são os principais requisitos para rodar o SQL Server no Linux.
Caso algum não seja satisfatório, o processo de instalação não será concluído.
Recurso | Requisito |
---|---|
Memória | 2 GB |
Sistema de Arquivos | XFS ou EXT4 |
Espaço em Disco | 6 GB |
Velocidade do Processador | 2 GHz |
Núcleos | 2 núcleos |
Arquitetura | Somente x64 |
Para maiores informações de Requisitos, acesse a documentação oficial.
Distribuições disponíveis
As distribuições compatíveis são:
- Red Hat Enterprise Linux (RHEL)
- SUSE Linux Enterprise Server (SLES)
- Ubuntu
- Docker
Instalação
O processo de instalação do SQL Server no Linux é rápido e prático. Há um guia para instalação, conforme a distribuição, no site oficial da microsoft.
Neste Post, será demonstrado a instalação no Centos8.
Preparação do ambiente
O CentOS 8, não contém o pacote python2 pré-instalado. O mesmo é necessário para o SQLServer.
Você pode verificar o interpretador padrão com o comando:
sudo alternatives --config python
Caso não contenha o pacote, basta instalar com o seguinte comando:
sudo yum install python2 compat-openssl10
Posteriormente, configure o interpretador padrão com o comando:
sudo alternatives --config python
Baixe o repositório oficial da microsoft para o RHEL 8. Caso a sua distribuição da Red Hat seja diferente, você pode editar o link abaixo para a distribuição correta.
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
Instale o pacote do mssql-server
sudo yum install -y mssql-server
Inicie a instalação da instância:
Observação: No Linux não há instâncias nomeadas, sendo uma instância em cada servidor.
sudo /opt/mssql/bin/mssql-conf setup
Neste passo você deve escolher uma edição para instalação (tanto as versões pagas quanto as gratuitas estão no mesmo pacote). Instalaremos a edição desenvolvedor (Developer).
Aceite os termos de licença
Por fim, defina uma senha para o usuário sa.
A senha precisa ter:
- No mínimo 8 caracteres
- Letras maiúsculas e minúsculas
- Digitos na base 10 e/ou símbolos não alfanuméricos.
Caso tenha executado com sucesso, é possível verificar o status da instância com o comando:
systemctl status mssql-server
(Extra) Para aceitar conexões TCP, caso o seu firewallD esteja habilitado, é necessário liberar a porta 1433 (Padrão do SQL Server). O mesmo pode ser feito com a sequência de comandos:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent sudo firewall-cmd --reload
A partir deste momento o seu servidor está pronto e aceitando conexões externas!
Diretórios do SQL Server
Os arquivos do SQL Server estão segregados em 2 diretórios principais:
- Binários e bibliotecas: /opt/mssql/
[vagrant@localhost ~]$ cd /opt/mssql/ [vagrant@localhost mssql]$ ls bin lib
- O diretório bin contém os binários necessários para a execução do SQL Server
- Já o diretório lib contém as bibliotecas padrão.
- Arquivos de dados e logs: /var/opt/mssql
[root@localhost ~]# cd /var/opt/mssql [root@localhost mssql]# ls data log mssql.conf secrets
- O diretório data contém os arquivos de dados (.MDF) e os arquivos de LOG (.LDF), de cada database;
- Assim como Windows, é possível criar bases de dados com arquivos .LDF e .MDF em outros diretórios, desde que o usuário mssql seja capaz de acessá-los;
- O diretório log contém o log de erros, logs do agent e alguns outros logs de sistema.
- O arquivo mssql.conf contém algumas definições básicas da instância. Este não é um arquivo completo como em outros SGBDS, que permitem alterar porta, endereços de IP etc.
- O diretório secrets contém as chaves utilizadas na instância, como por exemplo a chave do host.
Programas para acessar a instância
O SQL Server Management Studio não está disponível para distribuições linux (Apesar de ser completamente compatível a conexão via Windows em um servidor SQL Server Linux). Para distribuições Linux, é possível utilizar o Azure Data Studio ou qualquer outro programa que tenha compatibilidade com o SQLServer, como por exemplo o DBeaver.
Para utilizar o SQL Server via linha de comando, é necessário instalar o pacote mssql-tools, com os seguintes comandos:
Adicione o repositório oficial da Microsoft: Caso a sua distribuição da Red Hat seja diferente, você pode editar o link abaixo para a distribuição correta:
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
Instale o pacote mssql-tools e o pacote unixODBC-devel
sudo yum install -y mssql-tools unixODBC-devel
Para facilitar o acesso, adicione os binários instalados na variável de ambiente PATH:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
Conectando-se a instância:
sqlcmd -S localhost -U SA -P 'Sua_Senha'
Os parâmetros são:
- S: Hostname do SQLServer
- -U: Usuário
- -P: Senha (você pode omitir o parâmetro que será solicitado posteriormente)
A lista completa de parâmetros pode ser acessada utilizando:
sqlcmd -?
Observação: Os comandos do SQLServer só serão processados após a instrução: GO
Criando uma database
Para criar uma database, digite o comando:
CREATE DATABASE DB_FOUR_LINUX; GO
Conectando-se á base de dados e populando um registro:
USE DB_FOUR_LINUX; GO Changed database context to 'DB_FOUR_LINUX'. CREATE TABLE TB_ALUNO (ID INT IDENTITY(1,1), NOME VARCHAR(200)); GO INSERT INTO TB_ALUNO VALUES ( 'VITOR'); GO (1 rows affected) SELECT * FROM TB_ALUNO; GO ID NOME ------- --------------------- 1 VITOR (1 rows affected)
Verificando os arquivos de dados
Acesse o diretório da instância e em /var/opt/mssql/data e veja o diretório de dados
sudo ls -lha /var/opt/mssql/data/DB_FOUR_LINUX* -rw-rw----. 1 mssql mssql 8.0M Dec 7 00:14 DB_FOUR_LINUX.mdf -rw-rw----. 1 mssql mssql 8.0M Dec 7 00:14 DB_FOUR_LINUX_log.ldf
Verificando o backup
sudo ls -lha /var/opt/mssql/backup total 2.8M drwxrwx---. 2 mssql mssql 31 Dec 7 00:17 . drwxrwx---. 7 mssql mssql 91 Dec 7 00:17 .. -rw-rw----. 1 mssql mssql 2.8M Dec 7 00:17 DB_FOUR_LINUX.bak
Restaurando a base de dados em outro diretório
O processo de restore também é o mesmo do Windows.
A diferença está apenas no local do restore.
RESTORE DATABASE DB_FOUR_LINUX_RESTORE FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak' WITH RECOVERY, MOVE 'DB_FOUR_LINUX' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf', MOVE 'DB_FOUR_LINUX_log' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf'; GO Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1. Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1. RESTORE DATABASE successfully processed 338 pages in 0.121 seconds (21.791 MB/sec).
Verificando o novo diretório
RESTORE DATABASE DB_FOUR_LINUX_RESTORE FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak' WITH RECOVERY, MOVE 'DB_FOUR_LINUX' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf', MOVE 'DB_FOUR_LINUX_log' TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf'; go Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1. Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1. RESTORE DATABASE successfully processed 338 pages in 0.121 seconds (21.791 MB/sec).
Verificando os dados restaurados
Conecte-se á instância e verifique se o registros inserido está disponível.
USE DB_FOUR_LINUX_RESTORE; GO Changed database context to 'DB_FOUR_LINUX_RESTORE'. SELECT * FROM TB_ALUNO; GO ID NOME ------- --------------------- 1 VITOR (1 rows affected)
Boas práticas de tunning e performance
A Microsoft disponibilizou uma página dedicada a melhores práticas de configuração e performance do SQL Server no Linux, disponível na documentação oficial.
Viu como é simples?
O processo de instalação do sql server no Linux é totalmente simples e compatível com todos os tipos de licença, a partir do SQL Server 2017.
Por ser uma comunicação via TCP/IP, é totalmente compatível também a conexão de um cliente Windows e um SQL Server no Linux, assim como o contrário.
O SQL Server é um software proprietário, então verifiquem a licença de usuário antes da sua utilização. Nunca utilizem a versão developer em ambientes produtivos.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Novidades em cursos da 4Linux: Entrevista com o novo líder de treinamentos
Novidades educacionais devem ser introduzidas nos novos cursos da 4Linux já a partir de 2020! A área de marketing da 4Linux bateu um papo com André Luiz Oliveira – o
Avance na carreira com a certificação AWS SysOps: novo curso da 4Linux
Se você é um profissional de TI e deseja avançar na carreira, uma das opções mais interessantes atualmente é a certificação AWS SysOps Administrator, e a 4Linux tem uma um
Desbravando o OpenTofu: Parte 02 – Provisionando uma VM na GCP
Olá pessoal, hoje no blog, vamos realizar um deploy na GCP com uma ferramenta em potencial de Infra as Code chamada OpenTofu, um fork do Terraform. Bora lá! Antes de