Já pensou em instalar o SQL Server no Linux?

Já pensou em instalar o 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:

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

[root@localhost ~]# cd /var/opt/mssql
[root@localhost mssql]# ls
data 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:

 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

Verifique o diretório em que o backup foi realizado.
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

Veja que é possível utilizar outro diretório, diferente do padrão, para armazenar os arquivos .mdf e .ldf.
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:

CURSOSCONSULTORIA

Anterior Linux 5.17 estável chega ao mercado.
Próxima 4Linux: Formação Tecnológica Referência no Mercado Brasileiro

About author

Você pode gostar também

Infraestrutura TI

Dica da semana como-trancar um arquivo com o comando chattr.

Nesta dica da semana da 4Linux, iremos aprender o comando chattr, utilizado para bloquear arquivos e diretórios, ou seja criar restrições de acesso a diretórios e arquivos. O que é?

Infraestrutura TI

Crie, versione e compartilhe sua infraestrutura através de Códigos com Ansible Galaxy!

O termo IaC – Infrastructure as Code – dá nome aos processos de provisionamento de infraestrutura tecnológica (principalmente em Cloud Computing) através de códigos, viabilizando o versionamento e a colaboração

Cloud

Teoria do Terraform

Primeiramente, uma breve descrição sobre o que é “Infraestrutura como Código” ? Infraestrutura como Código, Infra as Code, ou simplesmente IaC, é tratar a infra como um software, desenvolvendo, versionando, testando, depurando