Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Preciso disponibilizar a um outro site B, o acesso às notícias do site A.
Pensei em fazer a replicação de uma tabela1 do BD1 para tabela2 do BD2 como posso realizar esta operação?
Pesquisei, e encontrei soluções, porém para tabelas da mesma BASE DE DADOS.
É possível ter um usuário no MySQL com permissão de consulta / deleção há apenas uma tabela do banco?
Entendi. Consegui fazer localmente, porém o servidor não permite criar outros usuários.
E quanto há replicar de um banco para outro, há alguma forma recomendada de se fazer?
Eu pensei o seguinte: Criar uma rotina para criar um backup SQL da tabela do BD 1 e outra rotina para importar os dados para o BD2.
Ainda localmente, consegui copiar os registros de uma tabela para outra da outra base de dados.
INSERT INTO replicacao1.noticias (titulo) SELECT titulo FROM replicacao.noticias;
Problemas:
1) Localmente, tenho apenas 1 usuário. No servidor, para cada banco é utilizado um usuário como poderei fazer a rotina acima nesta situação?
2) Os registros se já existentes na 2ª tabela são inseridos novamente, causando duplicidade, como evitar isso?
Mas ambos sites estão no mesmo servidor(na sua hospedagem, tipo revenda)?
2) Os registros se já existentes na 2ª tabela são inseridos novamente, causando duplicidade, como evitar isso?
Você usa IDs nas linhas? Se sim, use a ID como TOKEN, ambos bancos devem seguir os mesmos dados.
Se não tiver como, você poderia criar uma "rotina" que verifique os dados e acaso exista algo diferente, use o UPDATE.
Como ultima alternativa, seria legal criar uma "API", disponibilizar um XML ou um SERIALIZE (http://php.net/manual/pt_BR/function.serialize.php) das noticias do site A e o site B pegaria as noticias sem necessidade de BANCO DE DADOS.
As tabelas que manipularei são do mesmo servidor, porém em bancos diferentes.
NOTICIAS A em SERVIDOR 1
NOTICIAS B em SERVIDOR 1
Penso em meia e meia hora, replicar as notícias de A para B.
O outro site (servidor diferente) deverá pegar as notícias da NOTICIAS B. O usuário terá apenas permissão de consulta nesta tabela. Esta parte de criar o usuário e dar esta permissão, já consegui.
O que ainda está pendente, é a cópia da notícias de A para B.
Seguindo sua sugestão do ID, como faço para inserir a "regra" na consulta?
Tentei assim, porém não vai...
INSERT INTO replicacao1.noticias (titulo) SELECT titulo FROM replicacao.noticias WHERE replicacao.noticias.id != replicacao1.noticias.id;
O que ainda está pendente, é a cópia da notícias de A para B.Seguindo sua sugestão do ID, como faço para inserir a "regra" na consulta?
Tentei assim, porém não vai...
A maneira que você quer seria melhor criar um algorítimo com a linguagem de programação que você usa, acredito que seja PHP.
Você também pode excluir(apenas os registros) da tabela e clonar os dados da A para a B:
TRUNCATE TABLE [TABELA DO BANCO B];
INSERT INTO [TABELA DO BANCO B] SELECT * FROM [TABELA DO BANCO A] WHERE 1;
Testei e funcionou perfeitamente.
Hum...
Entendi, não havia pensado nisso.
Afinal, após os dados serem importados para o outro banco (externo) não há necessidade de mantermos os dados no nosso.
Muito obrigado pela sugestão.
Tente assim:
GRANT SELECT ON
SUA BANCO DE DADOS.SUA TABELATO 'USUARIO'@'SEUHOST';Espero que ajude.
[editado]
Se tiver dificuldades poste que te explico como fazer por phpmyadmin