2012-01-30 3 views
0

Я понимаю, что могу использовать команду MySql BACKUP и RESTORE для резервного копирования базы данных и отката при необходимости.Создание резервной копии/отката базы данных MySql

Мой вопрос, я был бы в состоянии выполнить это следующим образом:

sql="BACKUP my_db TO DISK my_backup_folder WITH FORMAT #"; 

if ($stmt = $this->connect->prepare($sql)) {  
$stmt->execute(); 
$stmt->close(); 
} else { 
    $error    = true; 
    $message['error'] = true; 
    $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE; 
    return json_encode($message); 
} 

и восстановление, сделанное в той же манере:

sql="RESTORE DATABASE my_db FROM DISK my_backup_folder WITH FILE #"; 

if ($stmt = $this->connect->prepare($sql)) {  
$stmt->execute(); 
$stmt->close(); 
} else { 
    $error    = true; 
    $message['error'] = true; 
    $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE; 
    return json_encode($message); 
} 

И в каждом случае, что делает # стенд для , является то, что .bak? И есть ли что-нибудь еще, что я должен добавить помимо того, что там?

+1

Были введены команды 'BACKUP' и' RESTORE'? – Mchl

+0

@Mchl - Что значит? – Roland

+0

На мой ответ и комментарий @ Mchl, это устаревшие команды и, вероятно, не лучший способ приблизиться к практической системе резервного копирования для MySQL. – quickshiftin

ответ

1

Быстрый пик в командной строке показывает, что это устаревшие команды.

mysql> help backup; Name: 'BACKUP TABLE' Description: Syntax: BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory' 

*Note*: This statement is deprecated and is removed in MySQL 5.5. As an alternative, mysqldump or mysqlhotcopy can be used instead. 

Я бы сказал, что любые советы о том, как использовать устаревшие команды, являются немного неправильным. Возьмите пик в mysqldump. Существуют и другие варианты, такие как LVM snapshots и т. Д.

+0

ОК. Я пытался использовать mysqldump, но он не работает на моем локальном сервере, и я не мог найти причину. Но теперь я пытаюсь другое решение, я перебираю db и получаю все существующие таблицы и что-то внутри них. И я делаю файлы с 'fopen', и я записываю данные в них, а также с командами sql, такими как' CREATE TABLE IF NOT EXISTS' и другие. Во всяком случае, этот метод, который я попросил, тоже не сработал. – Roland

+0

Просто мое мнение, но я бы порекомендовал выяснить, почему mysqldump не работает. Это стандартный инструмент, и похоже, вы переписываете его в этот момент. Бьюсь об заклад, в то время, когда вы проводите работу с mysqldump, вы не сможете заменить его своими собственными вещами. Но кто знает, иногда есть заслуга в новых решениях. – quickshiftin

+0

Действительно. Ну, некоторые сказали, что это потому, что я тестирую в среде Windows, но у меня XAAMP, который заставляет все процессы работать, что-то еще работает, я имею в виду, но эту команду. Некоторые говорят, что у меня нет доступа к записи, но для других процедур, которые пишет, работает. Поэтому я не мог понять, почему он не работает. И я решил работать с тем, что, как я знаю, это сработает. – Roland

Смежные вопросы