Поскольку я понимаю, что Вам нужна кластерная файловая система, которая доступна всем машинам в основанной на Linux инфраструктуре.
я предлагаю, чтобы Вы взглянули на Блеск . Это почти точно, что Вы ищете за исключением того, что это не синхронизирует данные локально.
Чтобы уточнить ответ Зеда и ответить на ваш комментарий:
INSERT INTO dues_storage
SELECT d.*, CURRENT_DATE()
FROM dues d
WHERE id = 5;
См. Комментарий TJ Crowder
INSERT INTO dues_storage
SELECT field1, field2, ..., fieldN, CURRENT_DATE()
FROM dues
WHERE id = 5;
Самый безопасный способ сделать это - полностью указать столбцы как для вставки, так и для извлечения. Нет никакой гарантии (для приложения), что любой из них будет в том порядке, в котором, по вашему мнению, они могут быть.
insert into dues_storage (f1, f2, f3, cd)
select f1, f2, f3, current_date() from dues where id = 5;
Если вы беспокоитесь о необходимости изменения множества нескольких страниц PHP, которые делают это (как вы, кажется, указываете в комментарии к другому ответу), это созрело для хранимой процедуры. Таким образом, все ваши страницы PHP просто вызывают хранимую процедуру с (например) только идентификатором для копирования, и она контролирует фактический процесс копирования. Таким образом, есть только одно место, где вам нужно поддерживать код, и, на мой взгляд, СУБД - подходящее место для этого.
Надеюсь, это кому-то поможет ... Вот небольшой PHP-скрипт, который я написал на случай, если вам нужно скопировать несколько столбцов но не другие, и / или столбцы находятся в разном порядке в обеих таблицах. Пока столбцы названы одинаково, это будет работать. Итак, если в таблице A есть [идентификатор пользователя, дескриптор, что-то], а в таблице B есть [идентификатор пользователя, дескриптор, временная метка], тогда вы должны «ВЫБРАТЬ ИД пользователя, дескриптор, СЕЙЧАС () как временную метку ИЗ таблицы A», затем получить результат и передать результат в качестве первого параметра этой функции ($ z). $ toTable - это строковое имя таблицы, в которую вы копируете, а $ link_identifier - это база данных, в которую вы копируете. Это относительно быстро для небольших наборов данных. Не рекомендуется пытаться переместить более нескольких тысяч строк за раз таким способом в производственных условиях. Я использую это в первую очередь для резервного копирования данных, собранных во время сеанса, когда пользователь выходит из системы, а затем немедленно очищаю данные из живой базы данных, чтобы сохранить ее компактность.
function mysql_multirow_copy($z,$toTable,$link_identifier) {
$fields = "";
for ($i=0;$i<mysql_num_fields($z);$i++) {
if ($i>0) {
$fields .= ",";
}
$fields .= mysql_field_name($z,$i);
}
$q = "INSERT INTO $toTable ($fields) VALUES";
$c = 0;
mysql_data_seek($z,0); //critical reset in case $z has been parsed beforehand. !
while ($a = mysql_fetch_assoc($z)) {
foreach ($a as $key=>$as) {
$a[$key] = addslashes($as);
next ($a);
}
if ($c>0) {
$q .= ",";
}
$q .= "('".implode(array_values($a),"','")."')";
$c++;
}
$q .= ";";
$z = mysql_query($q,$link_identifier);
return ($q);
}