Guia completo: Instalação e configuração do SQL Server no Linux

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.

RecursoRequisito
Memória2 GB
Sistema de ArquivosXFS ou EXT4
Espaço em Disco6 GB
Velocidade do Processador2 GHz
Núcleos2 núcleos
ArquiteturaSomente 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:

1sudo alternatives --config python

Caso não contenha o pacote, basta instalar com o seguinte comando:

1sudo yum install python2 compat-openssl10

Posteriormente, configure o interpretador padrão com o comando:

1sudo 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

1sudo 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.

1sudo /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:

1systemctl 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:

1sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
2sudo 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
3bin lib
  1. O diretório bin contém os binários necessários para a execução do SQL Server
  2. 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
3data log mssql.conf secrets
  1. O diretório data contém os arquivos de dados (.MDF) e os arquivos de LOG (.LDF), de cada database;
  2. 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;
  3. O diretório log contém o log de erros, logs do agent e alguns outros logs de sistema.
  4. 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.
  5. 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

1sudo yum install -y mssql-tools unixODBC-devel

Para facilitar o acesso, adicione os binários instalados na variável de ambiente PATH:

1echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
2echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
3source ~/.bashrc

Conectando-se a instância:

1sqlcmd -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

Criando uma database

Para criar uma database, digite o comando:

1CREATE DATABASE DB_FOUR_LINUX;
2GO

Conectando-se á base de dados e populando um registro:

01USE DB_FOUR_LINUX;
02GO
03Changed database context to 'DB_FOUR_LINUX'.
04CREATE TABLE TB_ALUNO (ID INT IDENTITY(1,1), NOME VARCHAR(200));
05GO
06INSERT INTO TB_ALUNO VALUES ( 'VITOR');
07GO
08(1 rows affected)
09SELECT * FROM TB_ALUNO;
10GO
11ID NOME
12------- ---------------------
131 VITOR
14(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

1sudo 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

Verificando o backup

Verifique o diretório em que o backup foi realizado.
1sudo ls -lha /var/opt/mssql/backup
2total 2.8M
3drwxrwx---. 2 mssql mssql 31 Dec 7 00:17 .
4drwxrwx---. 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.

01RESTORE DATABASE DB_FOUR_LINUX_RESTORE
02FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak'
03WITH RECOVERY,
04MOVE 'DB_FOUR_LINUX' TO
05'/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf',
06MOVE 'DB_FOUR_LINUX_log'
07TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf';
08GO
09Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1.
10Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1.
11RESTORE 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.
01RESTORE DATABASE DB_FOUR_LINUX_RESTORE
02FROM DISK = '/var/opt/mssql/backup/DB_FOUR_LINUX.bak'
03WITH RECOVERY,
04MOVE 'DB_FOUR_LINUX' TO
05'/var/opt/mssql/novo_dir/DB_FOUR_LINUX.mdf',
06MOVE 'DB_FOUR_LINUX_log'
07TO '/var/opt/mssql/novo_dir/DB_FOUR_LINUX.ldf';
08go
09Processed 336 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX' on file 1.
10Processed 2 pages for database 'DB_FOUR_LINUX_RESTORE', file 'DB_FOUR_LINUX_log' on file 1.
11RESTORE 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.

1USE DB_FOUR_LINUX_RESTORE;
2GO
3Changed database context to 'DB_FOUR_LINUX_RESTORE'.
4SELECT * FROM TB_ALUNO;
5GO
6ID      NOME
7------- ---------------------
8      1 VITOR 
9(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:

CURSOSCONSULTORIA

Anterior Linux 5.17: Novo lançamento traz melhorias e ajustes de desempenho
Próxima Capacite-se em TI com os Cursos de Formação da 4Linux

About author

Você pode gostar também

Treinamentos

Torne-se um especialista em PBX-IP com o curso prático da 4Linux

4Linux relança seu curso sobre “Como construir um PBX-IP na prática com Asterisk e FreePBX”.  O Asterisk é um software livre e de código aberto, que implementa em software, todos

Infraestrutura TI

Conhecendo o kernel Linux pelo /proc (parte 5) – Recursos da memória virtual

No post anterior vimos comportamentos relacionados ao uso de memória de virtual, como a “sobre-alocação” de memória, uso de SWAP, estouro de memória RAM e o que pode ocorrer em

Infraestrutura TI

Autenticando terraform na Google Cloud sem compartilhamento de chaves

O terraform atualmente é, de longe, a ferramenta de infraestrutura como código mais popular no mundo de TI e de Cloud. Ele tem suporte aos principais provedores de cloud e