Compactando e copiando arquivos grandes no Windows Server?

1

Eu tenho tido dificuldade em copiar backups de banco de dados grandes do servidor de banco de dados para uma caixa de teste em outro site. Estou aberto a quaisquer ideias que me ajudem a mover este banco de dados sem precisar recorrer a um disco rígido USB e ao correio.

O servidor de banco de dados está executando o Windows Server 2003 R2 Enterprise, 16 GB de RAM e dois Xeon X5450s de 3,0 GHz quad-core. Os arquivos são arquivos de backup do SQL Server 2005 entre 100 GB e 250 GB.

O pipe não é o mais rápido e os arquivos de backup do SQL Server normalmente compactam para 10-40% do original, então fazia sentido compactar os arquivos primeiro. Eu tentei vários métodos, incluindo:

  • gzip 1.2.4 (UnxUtils) e 1.3.12 (GnuWin)
  • bzip2 1.0.1 (UnxUtils) e 1.0.5 (Cygwin)
  • WinRAR 3,90
  • 7-Zip 4,65 (7za.exe)

Eu tentei usar as opções WinRAR e 7-Zip para dividir em vários segmentos. O 7za.exe funcionou bem para mim para backups de banco de dados em outro servidor, que possui backups de ~ 50 GB.

Eu também tentei dividir o arquivo .BAK primeiro com vários utilitários e compactar os segmentos resultantes. Nenhuma alegria com essa abordagem também - não importa a ferramenta que eu tentei, ela acaba batendo no tamanho do arquivo.

Especialmente frustrante é que eu transferi arquivos de tamanho similar em caixas Unix sem problemas usando o rsync + ssh. Instalar um servidor SSH não é uma opção para a situação em que estou, infelizmente.

Por exemplo, é assim que o 7-Zip morre:

H:\dbatmp>7za.exe a -t7z -v250m -mx3 h:\dbatmp\zip\db-20100419_1228.7z h:\dbatmp\db-20100419_1228.bak

7-Zip (A) 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Scanning

Creating archive h:\dbatmp\zip\db-20100419_1228.7z

Compressing  db-20100419_1228.bak

System error:
Unspecified error
    
por Aaron 05.05.2010 / 20:02

8 respostas

2

qpress para compactação rápida com baixa carga cpu, usei-a para o despejo de backup de 130 GB do SQL 2008. Ele é compactado em um arquivo de 34GB a ~ 35MiB / s, o que eu acho impressionante.

    
por 06.06.2012 / 11:40
1

Você poderia usar o rsync sem o ssh? Não vejo onde a criptografia é um requisito e o rsync funciona bem no Windows.

Que tal o gzip através do netcat? O (s) arquivo (s) deve (m) apenas passar (em), sem se deparar com os problemas dos passos intermediários.

Apenas pensando em voz alta ... desculpe, eu não tenho algo definitivo.

    
por 05.05.2010 / 22:11
1

Depois de ter compactado o db, você poderia considerar usar o robocopy para copiar o arquivo?

    
por 07.05.2010 / 21:01
1

Se os seus utilitários estiverem sufocando com o tamanho do arquivo de backup, basta criar mais arquivos de backup, cada um deles será menor. Você pode ter o comando de backup do SQL Server para usar vários arquivos. Microsoft chama isso de um conjunto de backup "listrado". Aqui está um exemplo idiota:

banco de dados de backup foo para disco = 'c: \ foo.01.bak', 'c: \ foo.02.bak', 'c: \ foo.03.bak'

Você pode especificar quantos arquivos desejar. A documentação completa sobre o comando de backup é aqui .

Alternativamente, se você tiver algum dinheiro para queimar, pode usar o Lightspeed da CA ou um produto similar. Esta é uma instalação no servidor, mas comprimirá todos os backups do servidor. Isso resultará em tempos de backup mais curtos, dos quais os DBAs e os administradores de sistema normalmente gostam. A CA fornece um utilitário de linha de comando distribuível para descompactar um backup que usa seu formato, para que você possa enviar o arquivo de backup para qualquer lugar.

    
por 06.06.2012 / 15:16
0

Bem, aqui está o que eu fiz;)

  • Virtualização nos dois extremos.

  • Controlador de domínio em ambas as extremidades;) Fornece um backup DC externo.

  • Replicação DFS para transferências;) Esta é executada bem em segundo plano, usa compactação e continua sendo marcada.

por 05.05.2010 / 20:05
0

Quando eu preciso trazer nosso banco de dados do data center para o escritório, eu apenas faço o backup no MSSQL e, em seguida, comprimo-lo novamente com o winrar. Eu trago um backup de 4 GB DB para cerca de 500MB, então eu só uso o servidor FTP para fazer a transferência. Mesmo se ele parar, o FileZilla permitirá que você continue.

Leva cerca de 15 minutos para fazer o download.

    
por 05.05.2010 / 20:12
0

Tente compactar usando o link do IZARC - que tem um addon de linha de comando. Eu tive casos em que a compactação não foi bem-sucedida em arquivos grandes (cerca de 25 GB), mas consegui usar o IZARC, embora eu usei a versão do gui e não o addon da linha de comando.

    
por 09.05.2010 / 17:32
0

Estou testando isso agora:

  1. SQL Dump para arquivos .bak
  2. GZip com a opção rsyncable
  3. rsync os arquivos gzip.

O RSync é provavelmente o melhor, mesmo que você não o gzip, porque ele apenas dups o diff.

Estou usando binários do cygwin e meu lote tem essas linhas úteis (assim como muitas outras, inclusive enviando-me o log por e-mail):

:: Getting a list of backup files ".bak"
dir /b c:\temp\db_backups | findstr bak > c:\temp\db_backups\filelist.txt
:: For each line in the file list from above, gzip it rsyncable!
for /F %%i IN (c:\temp\db_backups\filelist.txt) DO c:\cygwin\bin\gzip -9 --rsyncable -v -q c:\temp\db_backups\%%i

:: rsync it to a UNC path on a server
:: if you want to ssh it or ftp it you'd need to tweak the transport method
:: but I'm just using a UNC path.

c:\cygwin\bin\rsync --remove-source-files -Prv --delete --force --stats --itemize-changes --log-file=c:\temp\daily.backup.rsync.log "/cygdrive/c/temp/db_backups" "//unc/path/to/my/server/e$/dbs"

Normalmente, você representa os caminhos UNC como \ unc \ caminho \ para \ meu \ servidor ... etc, mas o cygwin e o rsync não gostam do contrário.

Você também pode usar o rsync em ssh.

rsync -PavzrH -e "ssh" --delete --force --stats --itemize-changes --log-file=/cygdrive/c/temp/rsync_offsite_bkp.log /cygdrive/c/temp/db_backups [email protected]:/mnt/data/share/stuff

o "/ mnt / data / share / stuff" é o diretório de destino onde todas as suas coisas são armazenadas no servidor ssh.

Eu também vou advertir que se você estiver usando cygwin (altamente recomendado) você também precisa no seu diretório home do cygwin uma pasta ".ssh" e criar um:

"config" "id_rsa"

Arquivos contendo sua configuração:

Host yoursshserverhost.com
  HostName yoursshserverhost.com
  Port 22
  User your_user
  IdentityFile ~/.ssh/id_rsa
  AddressFamily inet
  BatchMode yes
  ForwardAgent yes
  ClearAllForwardings yes

O id_rsa é a sua "chave" que você precisa exportar do seu servidor ssh. Eu não tenho essa mão no momento, mas há informações on-line sobre como fazer uma chave ssh. Uma vez que você fez isso no seu servidor, você pode copiá-lo e copiá-lo e colocá-lo em outro arquivo "id_rsa" em seu servidor. Você também pode nomeá-lo como quiser, "my_special_super_secret_key", desde que você o aponte para sua configuração na pasta .ssh do diretório inicial do cygwin.

Então:

  1. despejo do sql
  2. gzip com a opção rsyncable
  3. rsync sobre ssh para backups seguros / cópia de arquivos

RW

    
por 29.11.2016 / 01:14