Compactar dados de streaming antes de enviar

1

O seguinte está funcionando conforme o esperado.

Servidor de envio:

mysqldump db_name tbl_name -d | nc -l 1234

Servidor de recebimento:

nc 10.10.10.114 1234 | mysql -uroot -proot@123 test

Quando estou descarregando para o servidor remoto, demora muito tempo para transferir dados. É possível adicionar tar jcf - e tar jxf - neste processo.

    
por shantanuo 30.07.2011 / 13:29

2 respostas

2

Claro:

mysqldump db_name tbl_name -d | bzip2 -c | nc -l 1234

e

nc 101010.114 1234 | bzip2 -cd | mysql -uroot -proot@123 test

(Substitua bzip2 por gzip ou algum outro programa de compressão se você quiser; todos eles funcionam da mesma maneira no Linux)

Não há razão para usar o tar; você está apenas jogando dados do MySQL como um único pedaço de texto. Você também está usando nc no que geralmente é considerado um caminho "invertido"; tipicamente o consumidor dos dados ( mysql neste caso) faz a escuta (mas não há diferença real na operação, apenas "parece" estranho).

Seja avisado, no entanto, este método pode não fazer nada ficar mais rápido - na minha experiência, o gargalo no MySQL é o MySQL, não a rede (a menos que você esteja rodando sobre um link seriamente limitado pela largura de banda) ).

    
por 30.07.2011 / 13:40
0

A tubulação através do tar deve funcionar bem.

Envio:

... | tar -cjf - | ...

Recebendo

... | tar -xjf - | ...

Você pode querer usar "z" em vez de usar a compactação gzip em vez do bzip2 mais caro, mas isso depende de quão rápido ele funciona para você.

    
por 30.07.2011 / 13:39

Tags