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.
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:
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
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.
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.
Depois de ter compactado o db, você poderia considerar usar o robocopy para copiar o arquivo?
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.
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.
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.
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.
Estou testando isso agora:
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:
RW