Você poderia, mas apenas sob 3 condições específicas:
A segunda tabela que você está atualizando em outro servidor é:
- uma tabela MyISAM
- identicamente a mesma estrutura de tabela que no primeiro servidor
- representado no MySQL no primeiro servidor como mecanismo de armazenamento FEDERADO
Primeiro, verifique se você tem o mecanismo FEDERATED habilitado no MySQL |
Apenas execute SHOW ENGINES;
Se o mecanismo de armazenamento FEDERATED não existir ou estiver desativado, não leia mais.
Caso contrário, você pode tentar isso escrevendo-o como um gatilho INSERT AFTER e UPDATE AFTER.
Para este exemplo:
- O SERVER1 tem o banco de dados
this_db
com a tabelathis_table
- O SERVER2 possui o banco de dados
that_db
com a tabelathat_table
- O SERVER2 tem o endereço IP
10.20.30.250
A estrutura da tabela se parece com isso:
CREATE TABLE 'this _table' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'fruit' char(10) NOT NULL,
'number' int(10) NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM;
-
Primeiro, verifique se as estruturas da tabela são MyISAM e idênticas ...
No primeiro servidor, façaSHOW CREATE TABLE this_db.this_table\G
No outro servidor, façaSHOW CREATE TABLE that_db.that_table\G
-
No primeiro servidor, execute isto:
CREATE TABLE this_db.that_table LIKE this_db.this_table;
-
No primeiro servidor, execute isto:
ALTER TABLE this_db.that_table ENGINE=FEDERATED CONNECTION='mysql://10.20.30.250/that_db/that_table';
-
No primeiro servidor, crie um gatilho INSERT AFTER contra
this_db.this_table
:
use this_db DELIMITER $$ CREATE TRIGGER this_table afterinsert AFTER INSERT ON this_table FOR EACH ROW INSERT INTO that_table (id,fruit,number) VALUES (NEW.id,NEW.fruit,NEW.number); $$ DELIMITER ;
-
No primeiro servidor, crie um gatilho UPDATE AFTER contra
this_db.this_table
:
use this_db DELIMITER $$ CREATE TRIGGER this_table afterupdate AFTER UPDATE ON this_table FOR EACH ROW UPDATE that_table SET fruit=NEW.fruit,number=NEW.number WHERE id=OLD.id; $$ DELIMITER ;
É isso.
Experimente !!!