Permitir que um Banco de Dados OpenBASE seja espelhado (copiado) para uma outra máquina, funcionando como um backup incremental.
No esquema, deve-se definir o arquivo, segundo a sintaxe
nome: arquivo E TS
Ao se definir um esquema com a cláusula TS ao lado do nome do arquivo, serão criados automaticamente três novos itens no arquivo:
TST T8
DEL L1
KST (0) T8 POS (TST)
O item TST armazena a data e hora que o registro foi incluído, alterado ou excluído.
O item DEL, armazena o valor 1, quando o registro for excluído (exclusão lógica)
Quando um registro é incluído ou alterado, o item DEL recebe o valor 0.
Os registros com DEL=1 não são lidos ou excluídos, a menos que a opção DELETED (SET DELETED ON) esteja ligada.
Caso seja incluído um registro com o mesmo valor de chave do registro deletado logicamente (DEL=1), o item DEL é alterado de 1 para 0.
Daí a necessidade de os arquivos replicáveis serem do tipo entidades (chave primária) ou do tipo relacionamento com pelo menos um item chave única.
No servidor (máquina para onde serão replicados os dados) ocorre:
nohup bdsrep Inicialização do servidor de replicação
É recebido o nome do banco e o arquivo a replicar.
servidor de replicação (bdsrep), lê a chave primária de cada registro recebido e:
se não existir e DEL = 0, inclui
se existir e DEL=1, exclui
se existir e DEL=0, altera
No cliente (máquina de onde vem os dados replicados) deve-se executar o comando:
bdcrep -h<host servidor> -b [percurso bd origem] <banco bd origem> -r [percurso bd destino] <banco bd destino> [-s<seg>] [-n<nivel>]
O serviço bdsrep é inicializado no host servidor (é carregado automaticamente).
É enviado o nome do banco no servidor e o arquivo replicar.
Serão pesquisados no banco no servidor todos os registros que possuam o item KST>=data_hora da última replicação e KST<=data_hora do sistema operacional. Tais registros são enviados para o banco no cliente.
Todos os registros enviados e que possuam DEL=1 serão excluídos fisicamente no cliente.
Obs.1: Para que a replicação assíncrona funcione, os dois bancos devem ser iguais, tanto no cliente quanto no servidor.
Obs.2: Caso se deseje replicar um arquivo que já possua dados gravados, deve-se:
descarregar o arquivo com bddesc.
acrescentar a clausula TS no esquema, ao lado do arquivo que se deseja replicar.
compilar o banco de dados (define) recriando o arquivo.
carregar o arquivo com bdadic, utilizando-se a opção -g.