SQL — Как сделать резервную копию базы данных, нажав одну кнопку?

Привет, пользователь stackoverflow

У меня есть база данных SQL, которую я хочу иметь возможность создавать резервные копии одним нажатием кнопки (не спрашивайте, почему), так как мне это сделать?

-3

Решение

Если у вас есть сервер Linux, следующий код сохраняет файл для каждого дня 31 дня месяца при каждом его запуске. Для Windows Server могут потребоваться некоторые моды.

Создайте форму, которая направляет на эту страницу:

    <?phpdefine('DB_HOST', 'localhost');
define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_username');
define('DB_PASSWORD', 'your_username_password');
define('BACKUP_SAVE_TO', 'backup_storage_path');

$time = time();
$day = date('j', $time);
if ($day == 1) {
$date = date('Y-m-d', $time);
} else {
$date = $day;
}

$backupFile = BACKUP_SAVE_TO . '/' . DB_NAME . '_' . $date . '.gz';
if (file_exists($backupFile)) {
unlink($backupFile);
}
$command = 'mysqldump --opt -h ' . DB_HOST . ' -u ' . DB_USER . ' -p\'' . DB_PASSWORD . '\' ' . DB_NAME . ' | gzip > ' . $backupFile;
system($command);

?>
0

Другие решения

Я не уверен насчет вашего текущего кода или того, какой модуль SQL вы используете. Сейчас я предполагаю, что вы используете встроенный модуль sqlite 3. В этом случае мне все еще нужно знать, что вы подразумеваете под резервной копией. Для сохранения информации, введенной пользователем в базу данных, или вы хотите скопировать данные из базы данных в другую в качестве резервной копии? Вопрос неясен, но я предполагаю, что это второе.
1.) Первый импорт Tkinter и sqlite 3

import Tkinter, sqlite3

2.) Затем подключитесь к файлу, в котором хранится ваша база данных, и создайте курсор

conn = sqlite3.connect("table.db")
c = conn.cursor()

3.) Затем создайте объект Tkinter (в данном случае кнопка) и создайте def для его обратного вызова.

master = Tk()

def callback():
c.execute("SELECT * FROM table_name")
Data = c.fetchall()
c.execute('''CREATE TABLE IF NOT EXISTS table_backup
(id INTEGER PRIMARY KEY, some_row, some_row2)''')

row_1 = Data[0]
row_2 = Data[1]
c.execute("INSERT INTO table_backup(some_row, some_row2) VALUES(?, ?);",   (row_1, row_2))
conn.commit()
b = Button(master, text="OK", command=callback())
b.pack()

mainloop()
0

Очень просто.

Просто создайте новую веб-страницу PHP, скажем backup.php и сделать форму (с полем имени базы данных) и кнопку отправки на нем.
Когда он нажал, вы перенаправили на другую временную страницу, скажем saving.php

На этой странице:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'password';

$dbname = $_POST['database_name'];

$backup = $dbname . date("Y-m-d-H-i-s") . '.gz';
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "test_db | gzip > $backup";

system($command);
?>

После резервного копирования базы данных перенаправьте обратно на backup.php

Каждый раз, когда вы нажимаете эту кнопку, резервная копия вашей базы данных находится в нужном месте.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector