Можно ли создать хранимую процедуру MySQL, которая может выполнять заданную вставку или обновление, а затем также подключать ее ко второму серверу и запускать те же команды? Я хочу в основном вызвать один сервер и в режиме реального времени сделать резервную копию на втором сервере. Просто yah или ney будет достаточно, если у вас нет ссылки или двух под рукой или другого решения.
Спасибо за уделенное время. Аарон
Вы могли, но только при трех определенных условиях:
Вторая таблица, которую вы обновляете на другом сервере:
Во-первых, убедитесь, что в MySQL включен движок FEDERATED.
Просто беги SHOW ENGINES;
Если механизм хранения FEDERATED не существует или отключен, не читайте дальше.
В противном случае вы можете попробовать это, написав как триггер INSERT AFTER и UPDATE AFTER.
В этом примере:
this_db
со столом this_table
that_db
со столом that_table
10.20.30.250
Структура таблицы выглядит так:
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;
Во-первых, убедитесь, что структуры таблиц соответствуют MyISAM и идентичны ...
На первом сервере выполните SHOW CREATE TABLE this_db.this_table\G
На другом сервере выполните SHOW CREATE TABLE that_db.that_table\G
На первом сервере запустите это:
CREATE TABLE this_db.that_table LIKE this_db.this_table;
На первом сервере запустите это:
ALTER TABLE this_db.that_table ENGINE=FEDERATED
CONNECTION='mysql://10.20.30.250/that_db/that_table';
На первом сервере создайте триггер INSERT AFTER для 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 ;
На первом сервере создайте триггер UPDATE AFTER для 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 ;
Вот и все.
Попробуйте !!!