ZFS / ZFS enviar para replicação de banco de dados

1

Digamos que eu tenha um banco de dados um tanto importante, mas no qual não me importo com cada transação. Antes de você ficar sarcástico - é um banco de dados que armazena dados de status zabbix, então eu sinceramente não me importo se eu perder um ou dois minutos de transações quando os códigos de controle ascii atingirem o TTY.

Se eu quiser replicar esse banco de dados para outro host, eu poderia fazer a replicação de banco de dados tradicional que essencialmente reproduz o log de transações em um pipe. Existem alguns problemas com isso (como eu vou ter muitos escritores para o banco de dados primário eo escravo só terá um segmento inserindo os dados da réplica), mas eu também teria um "escravo somente leitura" para executar meus relatórios contra . E alguém vindo para a cidade entenderia o que está acontecendo. Ambos são valiosos, eu concordo completamente.

Mas - e se eu quiser ser inteligente? Sendo inteligente, executarei meu banco de dados postgresql em um sistema de arquivos ZFS com a compactação ativada. E agora que meu banco de dados está sendo executado no ZFS, posso apenas zfssendar esse fluxo para outra caixa e aplicá-lo ou apenas arquivar o fluxo de envio do zfs para posterior reprodução se eu decidir que preciso dele?

O banco de dados resultante seria utilizável após uma "limpeza após um desligamento não limpo e a repetição dos logs de transação" na máquina de destino? Digamos que agora eu também queira que um escravo somente para leitura rode meus relatórios, eu poderia reproduzir o ZFS, fazer um snapshot e inicializar o banco de dados contra o snapshot?

    
por chris 03.04.2013 / 13:41

1 resposta

2

O envio / recebimento do ZFS funciona com base em instantâneos do ZFS . A menos que você coloque em repouso o banco de dados, o instantâneo que você toma para fornecer a fonte inicial para o envio do ZFS será consistente com falhas .

Você pode usar envio / recebimento do ZFS para enviar esse instantâneo para outro host ou sistema de arquivos ZFS. Eu não entendo o que você entende por arquivar o fluxo de envio. O envio / recebimento do ZFS é atômico, por isso não tenho certeza se você tem a capacidade de salvar o fluxo.

Se você precisar de uma cópia somente leitura de um sistema de arquivos ZFS, poderá fazer um instantâneo do ZFS e clone esse instantâneo para um novo ponto de montagem do sistema de arquivos.

Nesse ponto, você pode executar operações na nova montagem conforme necessário.

    
por 03.04.2013 / 14:22