24hop session - database administration strategies

77
Database Administration Strategies Murilo Miranda, Database Administrator The Pythian Group

Upload: murilo-miranda

Post on 14-Jul-2015

82 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: 24HOP Session - Database Administration Strategies

Database

Administration

StrategiesMurilo Miranda, Database Administrator – The Pythian Group

Page 2: 24HOP Session - Database Administration Strategies

Murilo MirandaDatabase Administrator @ The Pythian Group

http://pt.linkedin.com/in/murilomiranda/

@murilocmiranda

[email protected]

Page 3: 24HOP Session - Database Administration Strategies

Agenda

Page 4: 24HOP Session - Database Administration Strategies

4

Agenda

• Desafios de um DBA.

• Configurando o SO.• Instant File Initialization.

• Anti-Virus.

• Rede.

• Storage.

• Configurando a Instância.• TempDB.

• Configurando a base de dados.• Gestão de ficheiros.

• Transaction Log.

• Disaster Recovery (Overview).

• Manutenção.• Verificação de integridade.

• Backups.

• Índices.

Page 5: 24HOP Session - Database Administration Strategies

Desafios de um DBA

Page 6: 24HOP Session - Database Administration Strategies

6

Desafios de um DBA

• O objectivo de um DBA é “não trabalhar”.

• Um bom DBA é um DBA preguiçoso.

• Nós queremos o mais

calmo ambiente:

• Bem planeado.

• Bem configurado.

• Bem monitorizado.

6

Page 7: 24HOP Session - Database Administration Strategies

7

Desafios de um DBA

• Quando um DBA está de prevenção, o barulho do pager

é…

7

Page 8: 24HOP Session - Database Administration Strategies

8

Desafios de um DBA

• Quando um DBA está de prevenção, o barulho do pager

é…

IRRITANTE

8

Page 9: 24HOP Session - Database Administration Strategies

9

Desafios de um DBA

• Tarefas planeadas são aceitáveis…

• Alarmes são horríveis!!

• Lentidão.

• Problemas de falta de espaço.

• Bases de Dados corrompidas.

• Jobs de manutenção que falham.

9

Page 10: 24HOP Session - Database Administration Strategies

10

Desafios de um DBA

• Tarefas planeadas são aceitáveis…

• Alarmes são horríveis!!

• Lentidão.

• Problemas de falta de espaço.

• Bases de Dados corrompidas.

• Jobs de manutenção que falham.

Não queremos isso!

10

Page 11: 24HOP Session - Database Administration Strategies

11

Backups

Índices

Estatísticas

Disaster Recovery

Performance

As vezes é um desafio definir…

Desafios de um DBA

Manutenção

Page 12: 24HOP Session - Database Administration Strategies

12

Desafios de um DBA

• Nos próximos slides iremos ver abordagens que irão

facilitar:• Minimizar alarmes.

• Aumentar a disponibilidade.

• Manter a manutenção recorrente bem encaminhada.

12

Page 13: 24HOP Session - Database Administration Strategies

13

Desafios de um DBA

• Nos próximos slides iremos ver abordagens que irão

facilitar:• Minimizar alarmes.

• Aumentar a disponibilidade.

• Manter a manutenção recorrente bem encaminhada.

• Vamos ser proactivos primeiro, depois preguiçosos

13

Page 14: 24HOP Session - Database Administration Strategies

Configurando o SO

Page 15: 24HOP Session - Database Administration Strategies

A activação do IFI pode aumentar a velocidade de criação e expansão de ficheiros de dados.

Config. o SO – Inst. File Initialization

Instant File Initialization

Page 16: 24HOP Session - Database Administration Strategies

A activação do IFI pode aumentar a velocidade de criação e expansão de ficheiros de dados.

Config. o SO – Inst. File Initialization

O mesmo não é válido para ficheiros de log!

Page 17: 24HOP Session - Database Administration Strategies

Config. o SO – Inst. File Initialization

Page 18: 24HOP Session - Database Administration Strategies

Config. o SO – Anti-Virus

Não é incomum encontrar Anti-Virus

em servidores com SQL Server…

… mas, por vezes, o AV age tal e qual um

VIRUS!

Anti-Virus

Page 19: 24HOP Session - Database Administration Strategies

• O licenciamento custa €€.

• A manutenção custa tempo.

• Pode causar problemas.

• Não protege de zero-day exploits.

Porque não utilizar AV junto com o SQL Server?

Config. o SO – Anti-Virus

Page 20: 24HOP Session - Database Administration Strategies

• Mais uma aplicação concorrendo por

recursos.

• Os ficheiros do SQL Server podem ser

sujeitos a varrimento e mesmo ficar

bloqueados.

Qual é o grande problema para o SQL Server?

Config. o SO – Anti-Virus

Page 21: 24HOP Session - Database Administration Strategies

• Manter os servidores atualizados.

• Configurar a firewall corretamente.

• Restringir o acesso ao servidor.

• Podemos instalar o AV… em workstations apenas!

Qual seria nossa opção?

Config. o SO – Anti-Virus

Page 22: 24HOP Session - Database Administration Strategies

Mas eu gosto de AV! O que posso fazer para

manter o SQL Server e o AV juntos?

Config. o SO – Anti-Virus

Page 23: 24HOP Session - Database Administration Strategies

Configure Exceções!

Mas eu gosto de AV! O que posso fazer para

manter o SQL Server e o AV juntos?

Config. o SO – Anti-Virus

Page 24: 24HOP Session - Database Administration Strategies

Basicamente, o AV deve excluir:

• Ficheiros de dados e log do SQL (.mdf, .ndf e .ldf).

• Ficheiros de backup (.bak and .trn).

• Ficheiros do Full-text Catalog.

• Ficheiros Trace (.trc), XE (.xem, .xel) e Audits (.sqlaudit).

• Os ficheiros de ERRORLOG.

• A pasta contendo os binários do SQL Server.

• A pasta do Filestream.

Mais detalhes em: http://support.microsoft.com/kb/309422

Config. o SO – Anti-Virus

Page 25: 24HOP Session - Database Administration Strategies

Config. o SO - Network

• Por vezes esquecida, a rede tem uma função

especial na instância.

• É a auto-estrada por onde passam os nossos

dados.

• Não apenas dados aplicacionais, mas

manutenção, backups e outros serviços ….

• Tudo isso está viajando na rede.

Rede

Page 26: 24HOP Session - Database Administration Strategies

Config. o SO - Network

Então, qual a melhor abordagem?

Page 27: 24HOP Session - Database Administration Strategies

Config. o SO - Network

Então, qual a melhor abordagem?

Dividir !

Page 28: 24HOP Session - Database Administration Strategies

Config. o SO - Network

Backups Network

Front-End Network

Back-End Network

Page 29: 24HOP Session - Database Administration Strategies

• Planeie uma arquitetura eficiente para o storage.

• Normalmente, quanto mais segregado melhor.

Config. o SO – Storage

Storage

Page 30: 24HOP Session - Database Administration Strategies

Sugestão:

SQL BIN SQL DATA SQL IDX SQL LOGS SQL TMP

Config. o SO – Storage

Storage

• Planeie uma arquitetura eficiente para o storage.

• Normalmente, quanto mais segregado melhor.

Page 31: 24HOP Session - Database Administration Strategies

Mountpoints podem ser uma boa estratégia.

Config. o SO – Storage

Page 32: 24HOP Session - Database Administration Strategies

Mountpoints podem ser uma boa estratégia.

Config. o SO – Storage

Prós:

• Escalável.• Economiza letras (limitado a 26).• Fácil de adicionar.• Não necessita de reiniciar o SQL.

Page 33: 24HOP Session - Database Administration Strategies

Mountpoints podem ser uma boa estratégia.

Config. o SO – Storage

Prós:

• Escalável.• Economiza letras (limitado a 26).• Fácil de adicionar.• Não necessita de reiniciar o SQL.

Contras:

• Parece uma pasta normal.• É preciso ter uma abordagem

diferente na monitoria.

Page 34: 24HOP Session - Database Administration Strategies

Mountpoints podem ser uma boa estratégia.

Config. o SO – Storage

Prós:

• Escalável.• Economiza letras (limitado a 26).• Fácil de adicionar.• Não necessita de reiniciar o SQL.

Contras:

• Parece uma pasta normal.• É preciso ter uma abordagem

diferente na monitoria.

No SQL Server 2014 temos ainda uma solução melhor:• Clustered Shared Volumes (CSV)

Page 35: 24HOP Session - Database Administration Strategies

• Podemos perder até 30% em performance se nãodefinirmos o offset da partição de forma adequada.• Uma partição desalinhada pode ocasionalmente causar duas

operações de I/O ao invés de uma.

Alinhamento da partição

Config. o SO – Storage

Page 36: 24HOP Session - Database Administration Strategies

• Podemos perder até 30% em performance se nãodefinirmos o offset da partição de forma adequada.• Uma partição desalinhada pode ocasionalmente causar duas

operações de I/O ao invés de uma.

• Definir o offset correctamente…• Aumenta a taxa de débito (bytes/s) • Reduz as queues do disco.

Alinhamento da partição

Config. o SO – Storage

Page 37: 24HOP Session - Database Administration Strategies

Se não for explícitamente indicada ao formatar a partição, ooffset padrão (31,5 Kb) irá resultar em partiçõesdesalinhadas. Isso acontece em versões do Windows até2003 (inclusivé).

Config. o SO – Storage

Page 38: 24HOP Session - Database Administration Strategies

Alguns fabricantes intercetam o que o Windows tentafazer e estão ainda criando partições com o offseterrado em qualquer versão do Windows!

Config. o SO – Storage

Atenção!!

Page 39: 24HOP Session - Database Administration Strategies

Alguns fabricantes intercetam o que o Windows tentafazer e estão ainda criando partições com o offseterrado em qualquer versão do Windows!

Verifique SEMPRE!

Config. o SO – Storage

Atenção!!

Page 40: 24HOP Session - Database Administration Strategies

Este offset é associado a hidden sectors,que basicamente guardam informações sobre a partição.

Considerando que:- Cada setor de um disco tem 512 bytes.- O Windows 2003 tem 63 hidden sectors.

512 * 63 = 31,5 Kb

Config. o SO – Storage

Page 41: 24HOP Session - Database Administration Strategies

Exemplo:

Stripe Unit Size: 64Kb*Block Size: 64Kb

* Defined by storage team.

Valores ótimos

Stripe Size

Dados (Block Size)

Config. o SO – Storage

Hidden Sectors

Page 42: 24HOP Session - Database Administration Strategies

Solução ideal:

Stripe Size

Dados (Block Size)

Config. o SO – Storage

Hidden Sectors

Page 43: 24HOP Session - Database Administration Strategies

Boa prática

- Definir um offset de 1024 Kb.- Este valor funciona com a maioria dos discos.

- Block Size = Stripe Unit Size.

As regras:

Offset / Strip Unit Size = Nº InteiroStrip Unit Size / Block Size = Nº Inteiro

Config. o SO – Storage

Page 44: 24HOP Session - Database Administration Strategies

Configurando a Instância

Page 45: 24HOP Session - Database Administration Strategies

Dois comportamentos comuns:• Ignorar.• Sobrevalorizar.

Instância - TempDB

TempDB

Page 46: 24HOP Session - Database Administration Strategies

Instância - TempDB

“A TempDb é a casa de banhopública do SQL Server”

Page 47: 24HOP Session - Database Administration Strategies

Então temos que tratar bem dela!

Instância - TempDB

Page 48: 24HOP Session - Database Administration Strategies

“A TempDB deve sempre terum ficheiro por cada CPU lógico.”

Instância - TempDB

• É comum encontrar informações do tipo:

Page 49: 24HOP Session - Database Administration Strategies

“A TempDB deve sempre terum ficheiro por cada CPU lógico.”

Instância - TempDB

• É comum encontrar informações do tipo:

DEPENDE….

Page 50: 24HOP Session - Database Administration Strategies

• Porque ter cuidado com o número de ficheiros?• Operações como sorts ou guardar grandes tabelas temporárias podem ficar lentas.

Instância - TempDB

Page 51: 24HOP Session - Database Administration Strategies

• Porque ter cuidado com o número de ficheiros?• Operações como sorts ou guardar grandes tabelas temporárias podem ficar lentas.

• A operação de round-robin passa a ser um constrangimento.• Quanto mais ficheiros, mais custoso.

Instância - TempDB

Page 52: 24HOP Session - Database Administration Strategies

Os seguintes wait types são comuns na TempDB:

• PAGELATCH_*: Contenção relacionada com In-memory allocation bitmaps. • PAGEIOLATCH_*: Contenção relacionada com o I/O subsystem.

Instância - TempDB

Page 53: 24HOP Session - Database Administration Strategies

Quantos ficheiros devermos ter para a TempDB?

Instância - TempDB

Page 54: 24HOP Session - Database Administration Strategies

Quantos ficheiros devermos ter para a TempDB?

Uma boa abordagem seria…• Servidor com até 8 cores:

Número de ficheiros = Número de Cores.

Instância - TempDB

Page 55: 24HOP Session - Database Administration Strategies

Quantos ficheiros devermos ter para a TempDB?

Uma boa abordagem seria…• Servidor com até 8 cores:

Número de ficheiros = Número de Cores.

• Servidor com mais do que 8 cores: 1. Adicionar 8 ficheiros.2. Monitorizar o wait type PAGELATCH_*.3. Adicionar mais 4 de uma vez, se necessário.4. Retornar ao ponto 2 …

Instância - TempDB

Page 56: 24HOP Session - Database Administration Strategies

Outras boas práticas para a TempDB:

• Isolar a TempDB em disco dedicado.• Dependendo da carga, pode ser boa idéia separar os ficheiros de

dados e o de log.

Instância - TempDB

Page 57: 24HOP Session - Database Administration Strategies

Outras boas práticas para a TempDB:

• Isolar a TempDB em disco dedicado.• Dependendo da carga, pode ser boa idéia separar os ficheiros de

dados e o de log.

• Usar um disco rápido.• Já é possível a utilização de um disco local em clusters.

Instância - TempDB

Page 58: 24HOP Session - Database Administration Strategies

Outras boas práticas para a TempDB:

• Isolar a TempDB em disco dedicado.• Dependendo da carga, pode ser boa idéia separar os ficheiros de

dados e o de log.

• Usar um disco rápido.• Já é possível a utilização de um disco local em clusters.

• Defina um valor inicial idêntico para todos osficheiros.• Atenção aos valores definidos no auto-growth.

Instância - TempDB

Page 59: 24HOP Session - Database Administration Strategies

Outras boas práticas para a TempDB:

• Isolar a TempDB em disco dedicado.• Dependendo da carga, pode ser boa idéia separar os ficheiros de

dados e o de log.

• Usar um disco rápido.• Já é possível a utilização de um disco local em clusters.

• Defina um valor inicial idêntico para todos osficheiros.• Atenção aos valores definidos no auto-growth.

• Se existe uma operação pesada usando a constantemente a TempDB, considere criar umatabela de staging dentro da própria BD.

Analize osprós e contras.

Instância - TempDB

Page 60: 24HOP Session - Database Administration Strategies

Configurando a

Base de Dados

Page 61: 24HOP Session - Database Administration Strategies

62

Base de Dados – Ficheiros

• Gerir os ficheiros de forma proactiva.

• Definir um tamanho inicial adequado.

• Definir uma taxa de crescimento adequada.

• Antecipar as operações de crescimento.

• Fazer isso em momento adequado e sem ultrapassar os

limites.

• Deixar o “Auto-growth” como salvaguarda.

• Monitorizar:

• Espaço em disco.

• Espaço utilizado Vs. Espaço alocado.

Ficheiros

Page 62: 24HOP Session - Database Administration Strategies

Tenha certeza de que você está gerindo o t-log adequadamente.

Base de Dados – Transaction Log

Page 63: 24HOP Session - Database Administration Strategies

• Não há vantagem em ter vários ficheiros de log.• Na perspetiva de performance.

• Full recovery pede backup de log.

• Controle o crescimento do ficheiro, ou então issopoderá causar a fragmentação dos VLF.

• Problemas de performance (Inserts, Deletes e Updates lentos).• Backups lentos.• Recovery mais longo.

• Não defina o auto growth para ficheiros de log paramultiplos de 4Gb em versões antigas do SQL Server.

• Versões até 2008 SP1.• http://connect.microsoft.com/SQLServer/feedback/details/481594/log-growth-not-

working-properly-with-specific-growth-sizes-vlfs-also-not-created-appropriately

Base de Dados – Transaction Log

Page 64: 24HOP Session - Database Administration Strategies

Pense em um plano de disaster recovery!

Base de Dados – Disaster Recovery

Page 65: 24HOP Session - Database Administration Strategies

Pense em um plano de disaster recovery!

O SQL Server tem opções “free”:• Log Shipping (HA and DR)• Database Mirroring (HA and DR)

• Mirror aceita DB Snapshot.

• Replication (HA, DR and LB)• AlwaysOn (HA, DR and LB)

• … ou em alternativa utilizar opções de replicação de storage.

Base de Dados – Disaster Recovery

Page 66: 24HOP Session - Database Administration Strategies

Manutenção

Page 67: 24HOP Session - Database Administration Strategies

• Temos que ter resposta aos seguintes pontos:• Quais são os SLAs?• A perda de dados e aceitável?• E o tempo máximo de recuperação?• Qual a nossa janela de manutenção?

Manutenção

Page 68: 24HOP Session - Database Administration Strategies

• Temos que ter resposta aos seguintes pontos:• Quais são os SLAs?• A perda de dados e aceitável?• E o tempo máximo de recuperação?• Qual a nossa janela de manutenção?

• Assim conseguiremos planear:• Actualização das STATISTCS.• Manutenção de INDEXES.• Verificação de INTEGRIDADE.• Efectuar BACKUPS.

Manutenção

Page 69: 24HOP Session - Database Administration Strategies

• CHECKDB demora e utiliza muitos recursos.

• Execute o DBCC CHECKDB utilizando a opção WITH PHYSICAL_ONLY.

• Limita a verificação de integridade a estrutura física das páginas e header dos registos, além da consistência no alocamento da base de dados.

• Rápido, mas incompleto. Um CHECKDB completo é necessárioperiodicamente.

• Podemos dividir esta tárefa em vários dias, utilizando“fragmentos do CHECKDB”:

• DBCC CHECKALLOC• DBCC CHECKCATALOG• DBCC CHECKTABLE

Manutenção – Integrity Check

Integrity Check

Page 70: 24HOP Session - Database Administration Strategies

• O particionamento pode ajudar na manutenção.

• Tire vantagem em backups e restores.• Uma arquitetura em FG permite “piecemeal restores” com baixo TTR

• Piecemeal restore online:• Após o restore do PRIMARY FG a BD fica online.• O resto vai ficando disponível conforme os FG são

restaurados.

• Desenhe a base de dados correctamente.• Mantenha apenas o necessário no FG PRIMARY.

• Tabelas de configuração, dados indispensáveis, etc…• Pense na consistência: mantenha tabelas relacionadas no mesmo FG.

Manutenção - Backups

Backups

Page 71: 24HOP Session - Database Administration Strategies

• Backup compression pode ser uma boa opção.• Menos tempo para fazer backups/restores (~40%).• Bom rácio de compressão.

• SELECT backup_size/compressed_backup_size FROM msdb..backupset;

• Mais CPU é utilizado nos backups/restores (~20%).• Um backupset não pode conter backups comprimidos e não

comprimidos.• Não há vantagem quando temos TDE activo.

Manutenção - Backups

Page 72: 24HOP Session - Database Administration Strategies

• O MULTISTREAM BACKUP é mais uma opção para aceleraros backups:

DB

File 1

File 2

File 3

E:

G:

F:

Manutenção – Mais sobre Backups

Page 73: 24HOP Session - Database Administration Strategies

• Podemos utilizar o MIRROR para obtermos redundância nosbackups.

DB

File 1

File 2

File 3

E:

G:

F:

File 1

File 2

File 3

Manutenção – Mais sobre Backups

Page 74: 24HOP Session - Database Administration Strategies

• Tente efetuar rebuild/defrag em índices realmentefragmentados.

• Se for feito o defrag, não esquecer de executar o update stats.

• Tenha cuidado ao fazer manutenção de índices grandes, se usar Log Shipping, DB Mirroring ou AlwaysOn.

• Contribuem para um grande crescimento do log.• Os rebuilds de índices são sempre fully-logged quando temos DBM

configurado.

Manutenção – Índices

Evite trabalhodesnecessário nas

janelas de manutenção.

Índices

Page 75: 24HOP Session - Database Administration Strategies

• Os famosos scripts da Ola Hallengren.• http://ola.hallengren.com

• Efectua de forma inteligente:• Backups.• Manutenção de índices e estatísticas.• Integrity Checks para VLDBs.• Muito utilizado e testado.

Manutenção

Uma boa opção para manutenção

Page 76: 24HOP Session - Database Administration Strategies

Perguntas?

Page 77: 24HOP Session - Database Administration Strategies

Obrigado pela presença!