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:
1 | sudo alternatives --config python |
Caso não contenha o pacote, basta instalar com o seguinte comando:
1 | sudo yum install python2 compat-openssl10 |
Posteriormente, configure o interpretador padrão com o comando:
1 | 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.
Instale o pacote do mssql-server
1 | 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.
1 | 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:
1 | 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:
1 | sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent |
2 | 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/
1 | [vagrant@localhost ~]$ cd /opt/mssql/ |
2 | [vagrant@localhost mssql]$ ls |
- 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
1 | [root@localhost ~]# cd /var/opt/mssql |
2 | [root@localhost mssql]# ls |
3 | 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:
Instale o pacote mssql-tools e o pacote unixODBC-devel
1 | sudo yum install -y mssql-tools unixODBC-devel |
Para facilitar o acesso, adicione os binários instalados na variável de ambiente PATH:
1 | echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile |
2 | echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc |
Conectando-se a instância:
1 | 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:
Observação: Os comandos do SQLServer só serão processados após a instrução: GO
Para criar uma database, digite o comando:
1 | CREATE DATABASE DB_FOUR_LINUX; |
Conectando-se á base de dados e populando um registro:
03 | Changed database context to 'DB_FOUR_LINUX'. |
04 | CREATE TABLE TB_ALUNO (ID INT IDENTITY(1,1), NOME VARCHAR(200)); |
06 | INSERT INTO TB_ALUNO VALUES ( 'VITOR'); |
09 | SELECT * FROM TB_ALUNO; |
12 | ------- --------------------- |
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
1 | sudo ls -lha /var/opt/mssql/data/DB_FOUR_LINUX* |
2 | -rw-rw----. 1 mssql mssql 8.0M Dec 7 00:14 DB_FOUR_LINUX.mdf |
3 | -rw-rw----. 1 mssql mssql 8.0M Dec 7 00:14 DB_FOUR_LINUX_log.ldf |
Verifique o diretório em que o backup foi realizado.
1 | sudo ls -lha /var/opt/mssql/backup |
3 | drwxrwx---. 2 mssql mssql 31 Dec 7 00:17 . |
4 | drwxrwx---. 7 mssql mssql 91 Dec 7 00:17 .. |
5 | -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.
01 | RESTORE DATABASE DB_FOUR_LINUX_RESTORE |
02 | FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak' |
04 | MOVE 'DB_FOUR_LINUX' TO |
05 | '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf', |
06 | MOVE 'DB_FOUR_LINUX_log' |
07 | TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf'; |
09 | Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1. |
10 | Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1. |
11 | RESTORE DATABASE successfully processed 338 pages in 0.121 seconds (21.791 MB/sec). |
Verificando o novo diretório
Veja que é possível utilizar outro diretório, diferente do padrão, para armazenar os arquivos .mdf e .ldf.
01 | RESTORE DATABASE DB_FOUR_LINUX_RESTORE |
02 | FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak' |
04 | MOVE 'DB_FOUR_LINUX' TO |
05 | '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf', |
06 | MOVE 'DB_FOUR_LINUX_log' |
07 | TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf'; |
09 | Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1. |
10 | Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1. |
11 | 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.
1 | USE DB_FOUR_LINUX_RESTORE; |
3 | Changed database context to 'DB_FOUR_LINUX_RESTORE'. |
7 | ------- --------------------- |
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:
CURSOSCONSULTORIA