SQL Server en linux
 Ingeniero Informático
 Microsoft Data Platform MVP
 Mentor en SolidQ
 Tuning y alta disponibilidad
Enrique Catalá Bañuls
ecatala@solidq.com
@enriquecatala
SQL Server en diferentes OS
Linux
Linux/Windows container
Windows
• Linux distributions including
RedHat Enterprise Linux (RHEL),
Ubuntu, and SUSE Enterprise
Linux (SLES)
• Docker: Windows & Linux
containers
• Windows Server / Windows 10
• Package-based installation,
Yum Install, Apt-Get, and Zypper
SQL Server 2017
Business intelligence
Advanced Analytics
Analytics
at a fraction
of the cost on
any device
1M predictions
per second
0
50
100
150
Vulnerabilities
(2010-2016)
Structured
Unstructured
OLTP
MOBILE
ERP
LOB
Graph
Social
IoT
Media
Microsoft Tableau Oracle
$120
$480
$2,230
DATA SOURCES DATA INSIGHTS
DatavirtualizationPolyBase
DATA MANAGEMENT
DataintegrationSSIS
Big data processing
Data warehousing
Operational data
#1
performance
in TPC-HScale to petabytes
T-SQL query
over any data
1010
0101 { }
Leader
in TPC-E
#1
#2
#3
Least vulnerable
over the last 7
years
R
PB
Any language,
any platform, anywhere
Support for
R and Python
An industry leader
four years in a row
+
SECURITY
FLEXIBILITY
SQL Server SAP HANA PostgreSQL IBM DB2 Oracle MySQL
The above graphics were published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from Microsoft. Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select
only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.
National Institute of Standards and Technology Comprehensive Vulnerability Database update 2017.
TPC-H non-clustered results as of 2017 respectively. http://www.tpc.org/tpch/results/tpch_perf_results.asp?resulttype=noncluster
.NET Azure 3rd
JAVA
Vale…pero por qué Linux?
• Hasta el 30 junio 2018
30% descuento
• Containers
Entornos testing
• kubernetes
Nuevas arquitecturas
People Ahorro
Puntos clave
• Sin nombre siempre
Solo una instancia por host
• XFS
• EXT4
Sistema de ficheros
• Incluyendo tempdb
System databases SIEMPRE en /var/opt/mssql/data
Siempre corre con el usuario “mssql”
master key encryption en /var/opt/mssql/secrets/machine-key
Features no soportadas (por ahora)
Services
• SQL Server Browser
• R services
• StreamInsight
• Analysys Services
• Reporting Services
• DQS
• MDS
• DTC
Engine
• Replication
• Stretch DB
• Polybase
• Distributed query
• FileTable,
FILESTREAM
• CLR with
EXTERNAL_ACCESS
or UNSAFE
• Buffer Pool Extension
Agent
• Replication agents
• Powershell, SSIS,
SSAS,…
• Alerts
• Change Data Capture
• Managed backup
Security
• AD authentication
• for Linked servers
• For AGs
DEMO
1. Instalar SQL Server en Linux y restaurar un backup de
Windows
2. Monitorizar linux
HA de misión crítica en cualquier plataforma
• High Availability
• Offload Backups
• Scale BI Reporting
• Enables Testing
• Enables Migrations
• Always On para linux y
windows para HA y DR
• Arquitecturas HA flexibles
• Balanceo de carga sobre
secundarios para leer
Puntos clave: HA
• No soportado por ahora
Replicación
• Soportado
• Recomendado
AlwaysOn
• Soportado
• Requiere paquete mssql-server-agent
Log Shipping
• Soportado
Clustering
Puntos clave: Clustering
16 nodos máximo
• Poco acoplamiento
• SQL Server no sabe que corre en cluster
Gestionado con pacemaker
• iSCSI
• Network file system (NFS)
• SMB en Windows server
Almacenamiento compatible (por ahora)
No soportado tempdb local
• Acaso lo dudabas? 
Sin GUI
Puntos clave: Migraciones y entornos híbridos
 Entornos híbridos HA con AG
 Cluster type: NONE
 Ejemplo:
 AG1 sql2016 windows
 AG 2 sql2017 linux
DEMO
FCI con iSCSI en Linux
*rhel 7.5 con subscipcion HA
STEP1
Configurar iSCSI
Añadimos un
volumen compartido
para montar el FCI
When Linux starts, it
will mount the file
system. To ensure
that only Pacemaker
can mount the
iSCSI disk, rebuild
the root filesystem
image.
Despues de añadir
la interfaz, editamos
a mano el fichero
Conectamos al
servidor iSCSI (ya
temenos permisos)
Y aqui chicos…empieza el DOLOR

Validamos que
estamos
conectados al iSCSI
1. Creamos el punto de
montaje
2. Creamos el grupo donde
meter los datos.
3. Le asignamos 25Gb
Formateamos con
ext4 (o xfs)
Me paso al verde, por la noche se ve mejor… 
Instalamos SQL
Server Developer
Edition
Paramos la
instancia
Creamos temporal,
movemos todo y
borramos lo viejo
Movemos todos los datos de SQL Server al
nuevo punto de montaje iSCSI
Montamos sobre /var/opt/mssql/data el volumen iSCSI
Arrancamos SQL Server…todo igual pero los datos residen en el
iSCSI
Configuramos para que solo pacemaker pueda montar el volumen
Configuramos para que
pacemaker sea el único
que lo pueda montar
Editamos /etc/lvm/lvm.conf para
excluir el montaje rhel
Desmontamos el volumen
Cuando linux arranque, montará el Sistema de ficheros,
forzaremos que únicamente pacemaker pueda montarlo
recreando su root
Reiniciamos el servidor y añadimos el iSCSI al resto de
nodos únicamente
Configuramos para que solo pacemaker pueda montar el volumen
STEP 2
Configurar pacemaker
Damos permisos a pacemaker para poder lanzar
sp_server_diagnose (al igual que en FCI tradicional)
Forzamos en /etc/hosts las IP de ambos nodos del FCI
Guardamos en texto claro (pero
con permisos para root:root) el
login y password de pacemaker 
sudo yum install pacemaker pcs fence-agents-all resource-agents
Instalamos pacemaker
Activamos el plugin de alta disponibilidad de RedHat (previo pago)
Asignamos password al recurso de clustering
(hacluster se creó al instalar pacemaker y activar la licencia de HA)
Activamos pacemaker e instalamos el modulo de SQL Server para
HA
STEP 3
Configurar FCI
Creamos el cluster, indicando que queremos los 2 nodos dentro
Vemos el status en uno de los nodos…y parece todo correcto
Tras el primer reinicio…no va nada… Buena señal, eh? 
Nos faltan los recursos!!! 
Si la lias (como es mi caso)…
….siempre puedes modificarlo “facilmente”
Puedes levanter los recursos manualmente en modo debug para que te diga por qué está con error
En la imagen de antes se puede apreciar como el error está en que el formato de mascara de red lo
puse mal
DEMO
Configurar AlwaysON con docker-compose
https://github.com/enriquecatala/sqlserver-docker-alwayson
Preguntas

SQL Server 2017 en Linux

  • 1.
  • 2.
     Ingeniero Informático Microsoft Data Platform MVP  Mentor en SolidQ  Tuning y alta disponibilidad Enrique Catalá Bañuls ecatala@solidq.com @enriquecatala
  • 3.
    SQL Server endiferentes OS Linux Linux/Windows container Windows • Linux distributions including RedHat Enterprise Linux (RHEL), Ubuntu, and SUSE Enterprise Linux (SLES) • Docker: Windows & Linux containers • Windows Server / Windows 10 • Package-based installation, Yum Install, Apt-Get, and Zypper
  • 4.
    SQL Server 2017 Businessintelligence Advanced Analytics Analytics at a fraction of the cost on any device 1M predictions per second 0 50 100 150 Vulnerabilities (2010-2016) Structured Unstructured OLTP MOBILE ERP LOB Graph Social IoT Media Microsoft Tableau Oracle $120 $480 $2,230 DATA SOURCES DATA INSIGHTS DatavirtualizationPolyBase DATA MANAGEMENT DataintegrationSSIS Big data processing Data warehousing Operational data #1 performance in TPC-HScale to petabytes T-SQL query over any data 1010 0101 { } Leader in TPC-E #1 #2 #3 Least vulnerable over the last 7 years R PB Any language, any platform, anywhere Support for R and Python An industry leader four years in a row + SECURITY FLEXIBILITY SQL Server SAP HANA PostgreSQL IBM DB2 Oracle MySQL The above graphics were published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from Microsoft. Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose. National Institute of Standards and Technology Comprehensive Vulnerability Database update 2017. TPC-H non-clustered results as of 2017 respectively. http://www.tpc.org/tpch/results/tpch_perf_results.asp?resulttype=noncluster .NET Azure 3rd JAVA
  • 5.
    Vale…pero por quéLinux? • Hasta el 30 junio 2018 30% descuento • Containers Entornos testing • kubernetes Nuevas arquitecturas People Ahorro
  • 6.
    Puntos clave • Sinnombre siempre Solo una instancia por host • XFS • EXT4 Sistema de ficheros • Incluyendo tempdb System databases SIEMPRE en /var/opt/mssql/data Siempre corre con el usuario “mssql” master key encryption en /var/opt/mssql/secrets/machine-key
  • 7.
    Features no soportadas(por ahora) Services • SQL Server Browser • R services • StreamInsight • Analysys Services • Reporting Services • DQS • MDS • DTC Engine • Replication • Stretch DB • Polybase • Distributed query • FileTable, FILESTREAM • CLR with EXTERNAL_ACCESS or UNSAFE • Buffer Pool Extension Agent • Replication agents • Powershell, SSIS, SSAS,… • Alerts • Change Data Capture • Managed backup Security • AD authentication • for Linked servers • For AGs
  • 8.
    DEMO 1. Instalar SQLServer en Linux y restaurar un backup de Windows 2. Monitorizar linux
  • 9.
    HA de misióncrítica en cualquier plataforma • High Availability • Offload Backups • Scale BI Reporting • Enables Testing • Enables Migrations • Always On para linux y windows para HA y DR • Arquitecturas HA flexibles • Balanceo de carga sobre secundarios para leer
  • 10.
    Puntos clave: HA •No soportado por ahora Replicación • Soportado • Recomendado AlwaysOn • Soportado • Requiere paquete mssql-server-agent Log Shipping • Soportado Clustering
  • 11.
    Puntos clave: Clustering 16nodos máximo • Poco acoplamiento • SQL Server no sabe que corre en cluster Gestionado con pacemaker • iSCSI • Network file system (NFS) • SMB en Windows server Almacenamiento compatible (por ahora) No soportado tempdb local • Acaso lo dudabas?  Sin GUI
  • 12.
    Puntos clave: Migracionesy entornos híbridos  Entornos híbridos HA con AG  Cluster type: NONE  Ejemplo:  AG1 sql2016 windows  AG 2 sql2017 linux
  • 13.
    DEMO FCI con iSCSIen Linux *rhel 7.5 con subscipcion HA
  • 14.
  • 15.
  • 19.
    When Linux starts,it will mount the file system. To ensure that only Pacemaker can mount the iSCSI disk, rebuild the root filesystem image.
  • 20.
    Despues de añadir lainterfaz, editamos a mano el fichero
  • 21.
    Conectamos al servidor iSCSI(ya temenos permisos)
  • 23.
    Y aqui chicos…empiezael DOLOR  Validamos que estamos conectados al iSCSI 1. Creamos el punto de montaje 2. Creamos el grupo donde meter los datos. 3. Le asignamos 25Gb
  • 24.
  • 25.
    Me paso alverde, por la noche se ve mejor…  Instalamos SQL Server Developer Edition
  • 28.
  • 29.
    Creamos temporal, movemos todoy borramos lo viejo Movemos todos los datos de SQL Server al nuevo punto de montaje iSCSI
  • 30.
  • 31.
    Arrancamos SQL Server…todoigual pero los datos residen en el iSCSI
  • 32.
    Configuramos para quesolo pacemaker pueda montar el volumen Configuramos para que pacemaker sea el único que lo pueda montar Editamos /etc/lvm/lvm.conf para excluir el montaje rhel Desmontamos el volumen
  • 33.
    Cuando linux arranque,montará el Sistema de ficheros, forzaremos que únicamente pacemaker pueda montarlo recreando su root Reiniciamos el servidor y añadimos el iSCSI al resto de nodos únicamente Configuramos para que solo pacemaker pueda montar el volumen
  • 34.
  • 35.
    Damos permisos apacemaker para poder lanzar sp_server_diagnose (al igual que en FCI tradicional)
  • 36.
    Forzamos en /etc/hostslas IP de ambos nodos del FCI Guardamos en texto claro (pero con permisos para root:root) el login y password de pacemaker 
  • 37.
    sudo yum installpacemaker pcs fence-agents-all resource-agents Instalamos pacemaker
  • 38.
    Activamos el pluginde alta disponibilidad de RedHat (previo pago)
  • 39.
    Asignamos password alrecurso de clustering (hacluster se creó al instalar pacemaker y activar la licencia de HA)
  • 40.
    Activamos pacemaker einstalamos el modulo de SQL Server para HA
  • 41.
  • 42.
    Creamos el cluster,indicando que queremos los 2 nodos dentro
  • 43.
    Vemos el statusen uno de los nodos…y parece todo correcto
  • 44.
    Tras el primerreinicio…no va nada… Buena señal, eh? 
  • 45.
    Nos faltan losrecursos!!! 
  • 46.
    Si la lias(como es mi caso)…
  • 47.
    ….siempre puedes modificarlo“facilmente” Puedes levanter los recursos manualmente en modo debug para que te diga por qué está con error En la imagen de antes se puede apreciar como el error está en que el formato de mascara de red lo puse mal
  • 48.
    DEMO Configurar AlwaysON condocker-compose https://github.com/enriquecatala/sqlserver-docker-alwayson
  • 49.