Replicação ou Clusterização: Qual devo usar ?
Bom pessoal, andei usando a pesquisa do fórum, mas não me ajudou muito, ainda tenho a seguinte dúvida:
Preciso montar um esquema de servidores para rodar um sistema Delphi/MySQL, que estará dividido em 3 lojas:
PHD – Terá o [b:e1adaa87de]servidor principal[/b:e1adaa87de], e as máquinas internas irão acessá-lo através da rede local (ou seja, a banda larga reservada à ele, fica apenas para quem for acessar direto no servidor). Caindo a banda larga, ficará afetado apenas as atualizações das demais lojas;
BJBC e DHP – Terão [b:e1adaa87de]servidores locais[/b:e1adaa87de], que constantemente estarão enviando suas atualizações para o servidor principal (loja PHD, a única que terá acesso aos dados de todas as lojas). Caso venha a ter indisponibilidade de conexão com o servidor principal, os servidores locais ficarão encarregados de armazenarem as informações até que a conexão seja restabelecida, e logo após isto, iniciar a transmissão dos dados atualizados. Enquanto houver conexão, as atualizações no servidor central deverão ser simultâneas. Lembrando que os servidores de BJBC e DHP não terão nenhum tipo de contato, ambos apenas irão ser reportar à PHD (servidor central). Não é necessário que nenhuma dessas duas lojas tenha acesso aos dados uma da outra.
Diante deste cenário, qual tipo de configuração é a ideal e mais confiável a se fazer (Replicação ou Clusterização) ?
E como deveria fazer isto ?
Servidor Central está configurado com o Fedora 5 (com o mysql instalado e com usuário configurado pra ter acesso total), e os Servidores Locais com o Fedora 7 (e o mysqld instalado, e rodando na inicialização).
Estou lendo 2 livros, [b:e1adaa87de]MySQL Guia do Programador [/b:e1adaa87de]e [b:e1adaa87de]MySQL a Bíblia[/b:e1adaa87de]. Entendi mais ou menos o conceito disso, mas a parte prática não entendi nada até agora, poderiam me ajudar ?
Preciso montar um esquema de servidores para rodar um sistema Delphi/MySQL, que estará dividido em 3 lojas:
PHD – Terá o [b:e1adaa87de]servidor principal[/b:e1adaa87de], e as máquinas internas irão acessá-lo através da rede local (ou seja, a banda larga reservada à ele, fica apenas para quem for acessar direto no servidor). Caindo a banda larga, ficará afetado apenas as atualizações das demais lojas;
BJBC e DHP – Terão [b:e1adaa87de]servidores locais[/b:e1adaa87de], que constantemente estarão enviando suas atualizações para o servidor principal (loja PHD, a única que terá acesso aos dados de todas as lojas). Caso venha a ter indisponibilidade de conexão com o servidor principal, os servidores locais ficarão encarregados de armazenarem as informações até que a conexão seja restabelecida, e logo após isto, iniciar a transmissão dos dados atualizados. Enquanto houver conexão, as atualizações no servidor central deverão ser simultâneas. Lembrando que os servidores de BJBC e DHP não terão nenhum tipo de contato, ambos apenas irão ser reportar à PHD (servidor central). Não é necessário que nenhuma dessas duas lojas tenha acesso aos dados uma da outra.
Diante deste cenário, qual tipo de configuração é a ideal e mais confiável a se fazer (Replicação ou Clusterização) ?
E como deveria fazer isto ?
Servidor Central está configurado com o Fedora 5 (com o mysql instalado e com usuário configurado pra ter acesso total), e os Servidores Locais com o Fedora 7 (e o mysqld instalado, e rodando na inicialização).
Estou lendo 2 livros, [b:e1adaa87de]MySQL Guia do Programador [/b:e1adaa87de]e [b:e1adaa87de]MySQL a Bíblia[/b:e1adaa87de]. Entendi mais ou menos o conceito disso, mas a parte prática não entendi nada até agora, poderiam me ajudar ?
Supervitao
Curtidas 0
Respostas
Supervitao
01/11/2007
Bom pessoal, estou de volta com meu tópico. Já optei por usar a [b:ae336845c9]Replicação[/b:ae336845c9], só que até o presente momento eu não tenho entrado em acordo com a configuração dos servidores. Já tentei diversas opções vindas de livros (MySQL, a Bíblia e MySQL, Guia do Programador) e tutoriais da internet, cada um feito de uma forma diferente, o que acabou me confundindo, testei tudo e nada funcionou. Vou postar a seguir os códigos que eu mais tenho utilizado, e por gentileza, alguém me dê uma orientação mais clara, pois não entendo bem de MySQL, entrei de gaiato nessa história de configurar os servidores. Aí vão os códigos e os procedimentos:
[b:ae336845c9]Passo 1:[/b:ae336845c9] Configurar servidor master
[mysqld]
log-bin=mysqlmaster # Habilitando log binário
server-id=1 Identificando o servidor
[b:ae336845c9]Passo 2:[/b:ae336845c9] Criar conta exclusiva para replicação
GRANT REPLICATION SLAVE ON *.* TO ´<usuario>´@´<dominio>´ IDENTIFIED BY ´<senha>´;
[b:ae336845c9]Passo 3:[/b:ae336845c9] Configurando servidor Slave
[mysqld]
server-id=2 # Identificando o servidor
[b:ae336845c9]Passo 4:[/b:ae336845c9] Após reiniciar servidor slave, os seguintes comandos foram executados
CHANGE MASTER TO
-> MASTER_HOST = ´<endereço IP ou URL do servidor master>´ ,
-> MASTER_PORT = <porta no qual o servidor está configurado, sem aspas>,
-> MASTER_USER = ´<usuário com acesso ao log binário>´,
-> MASTER_PASSWORD = ´<senha do usuário com acesso ao log binário>´,
-> MASTER_LOG_FILE = ´<vazio ou arquivo de replicação, se houver>´,
-> MASTER_LOG_POS = <zero ou linha de início de replicação, sem aspas>;
[b:ae336845c9]Passo 5:[/b:ae336845c9] Deixar a mesma database nos 3 servidores
Fiz estes passos e nada aconteceu. Agora a minha dúvida: A alteração que ele replica é de apenas registros, ou seria também na estrutura ? Por que no teste que fiz, eu criei uma nova tabela no servidor master, e depois fui verificar nos servidores slave, e nada desta tabela aparecer.
Uma outra forma que utilizei para configurar um servidor escravo, foi editar o my.conf da seguinte forma:
[mysqld]
server-id=2
master-host=<endereço IP ou URL do servidor master>
master-port=<porta no qual o servidor está configurado>
master-user=<usuário com acesso ao log binário>
master-password=<senha do usuário com acesso ao log binário>
replicate-do-db=<nome do banco de dados a ser replicado>
E novamente fiz o mesmo tipo de teste, criando uma tabela, ao invés de editar um registro. Será que a replicação estaria funcionando, e o erro estaria no tipo de teste ?
Como sou iniciante nesse brinquedo, quanto mais claro na explicação, será mais fácil para que eu entenda, desde já obrigado.
[b:ae336845c9]Obs.[/b:ae336845c9] A estrutura da replicação seria:
- Servidor PHD é o Master;
- Servidor DHP e Servidor BJBC são os Slaves;
Deve funcionar da seguinte forma: Os registros dos servidores DHP e BJBC serão enviados para o servidor PHD, e este irá sincronizar os dados, e devolver uma cópia atualizada para os servidores DHP e BJBC, sendo que estes dois servidores (DHP e BJBC) jamais se comunicarão, apenas se reportarão ao servidor PHD.
[b:ae336845c9]Passo 1:[/b:ae336845c9] Configurar servidor master
[mysqld]
log-bin=mysqlmaster # Habilitando log binário
server-id=1 Identificando o servidor
[b:ae336845c9]Passo 2:[/b:ae336845c9] Criar conta exclusiva para replicação
GRANT REPLICATION SLAVE ON *.* TO ´<usuario>´@´<dominio>´ IDENTIFIED BY ´<senha>´;
[b:ae336845c9]Passo 3:[/b:ae336845c9] Configurando servidor Slave
[mysqld]
server-id=2 # Identificando o servidor
[b:ae336845c9]Passo 4:[/b:ae336845c9] Após reiniciar servidor slave, os seguintes comandos foram executados
CHANGE MASTER TO
-> MASTER_HOST = ´<endereço IP ou URL do servidor master>´ ,
-> MASTER_PORT = <porta no qual o servidor está configurado, sem aspas>,
-> MASTER_USER = ´<usuário com acesso ao log binário>´,
-> MASTER_PASSWORD = ´<senha do usuário com acesso ao log binário>´,
-> MASTER_LOG_FILE = ´<vazio ou arquivo de replicação, se houver>´,
-> MASTER_LOG_POS = <zero ou linha de início de replicação, sem aspas>;
[b:ae336845c9]Passo 5:[/b:ae336845c9] Deixar a mesma database nos 3 servidores
Fiz estes passos e nada aconteceu. Agora a minha dúvida: A alteração que ele replica é de apenas registros, ou seria também na estrutura ? Por que no teste que fiz, eu criei uma nova tabela no servidor master, e depois fui verificar nos servidores slave, e nada desta tabela aparecer.
Uma outra forma que utilizei para configurar um servidor escravo, foi editar o my.conf da seguinte forma:
[mysqld]
server-id=2
master-host=<endereço IP ou URL do servidor master>
master-port=<porta no qual o servidor está configurado>
master-user=<usuário com acesso ao log binário>
master-password=<senha do usuário com acesso ao log binário>
replicate-do-db=<nome do banco de dados a ser replicado>
E novamente fiz o mesmo tipo de teste, criando uma tabela, ao invés de editar um registro. Será que a replicação estaria funcionando, e o erro estaria no tipo de teste ?
Como sou iniciante nesse brinquedo, quanto mais claro na explicação, será mais fácil para que eu entenda, desde já obrigado.
[b:ae336845c9]Obs.[/b:ae336845c9] A estrutura da replicação seria:
- Servidor PHD é o Master;
- Servidor DHP e Servidor BJBC são os Slaves;
Deve funcionar da seguinte forma: Os registros dos servidores DHP e BJBC serão enviados para o servidor PHD, e este irá sincronizar os dados, e devolver uma cópia atualizada para os servidores DHP e BJBC, sendo que estes dois servidores (DHP e BJBC) jamais se comunicarão, apenas se reportarão ao servidor PHD.
GOSTEI 0
[vaza]
01/11/2007
Opa amigo, conseguiu resolver o seu problema?
Eu terei que fazer esses testes logo logo para meu novo sistema.
Nessa ´estrutura´ que vc criou, os dados já estão sendo replicados?
Você esta usando que versão do MySql?
Você esta usando as engines InnoDB?
Abraços..t+
Eu terei que fazer esses testes logo logo para meu novo sistema.
Nessa ´estrutura´ que vc criou, os dados já estão sendo replicados?
Você esta usando que versão do MySql?
Você esta usando as engines InnoDB?
Abraços..t+
GOSTEI 0
Eselvati
01/11/2007
Opa...
no servidor de 1 filial...
[mysqld]
log-bin
server-id=2
master-host=seuhostprincipal
master-user=seuusuariodereplicacao
master-password=senhadereplicacao
na outra filial
[mysqld]
log-bin
server-id=3
master-host=seuhostprincipal
master-user=seuusuariodereplicacao
master-password=senhadereplicacao
no servidor principal
[mysqld]
server-id=1
#log-bin desabilitado...pois dele nao sera replicado nada..apenas recebera dados de replicacao de filiais
Ederson Selvati
no servidor de 1 filial...
[mysqld]
log-bin
server-id=2
master-host=seuhostprincipal
master-user=seuusuariodereplicacao
master-password=senhadereplicacao
na outra filial
[mysqld]
log-bin
server-id=3
master-host=seuhostprincipal
master-user=seuusuariodereplicacao
master-password=senhadereplicacao
no servidor principal
[mysqld]
server-id=1
#log-bin desabilitado...pois dele nao sera replicado nada..apenas recebera dados de replicacao de filiais
Ederson Selvati
GOSTEI 0