Резервное копирование и восстановление больших баз данных порой может быть сложной задачей.
Недавно, когда мне пришлось делать резервное копирование и восстановление большой базы данных, я сделал резервную копию каждой таблицы базы данных и восстановил их одну за другой с помощью скрипта bash. В случае сбоя восстановления вам нужно будет иметь дело только с конкретной резервной копией таблицы, которая вызвала сбой.
Создать сценарий резервного копирования
Сначала давайте создадим скрипт bash для резервного копирования таблицы базы данных за таблицей. Сохраните следующий скрипт как backup_db.sh. Этот скрипт будет делать резервную копию каждой таблицы в вашей базе данных в отдельный файл.sql.
#!/bin/bash
MYSQL_DB="wordpress_db"
BACKUP_DIR="/root/mysql/${MYSQL_DB}"
mkdir -p "$BACKUP_DIR"
TABLES=$(mysql -N -e "SHOW TABLES FROM ${MYSQL_DB}")
for TABLE in $TABLES
do
echo "Backing up table: $TABLE"
/usr/bin/mysqldump "${MYSQL_DB}" "$TABLE" > "$BACKUP_DIR/${TABLE}.sql"
done
echo "Backup completed. Files are stored in $BACKUP_DIR"
Запустить скрипт резервного копирования
После создания backup_db.sh вы можете запустить его с помощью:
bash backup_db.sh
После запуска скрипта каждая таблица из вашей базы данных будет сохранена в виде отдельного файла.sql в указанном каталоге резервных копий.
Создать сценарий восстановления
Теперь, когда у вас есть резервная копия, вам понадобится способ восстановить эти таблицы. Следующий скрипт восстановит каждую таблицу из соответствующего ей файла.sql.
#!/bin/bash
MYSQL_DB="wordpress_db"
BACKUP_DIR="/root/mysql/${MYSQL_DB}"
if [! -d "$BACKUP_DIR" ]; then
echo "Error: Backup directory does not exist."
exit 1
fi
for SQL_FILE in "$BACKUP_DIR"/*.sql
do
if [ -f "$SQL_FILE" ]; then
TABLE_NAME=$(basename "$SQL_FILE".sql)
echo "Restoring table: $TABLE_NAME"
/usr/bin/mysql "${MYSQL_DB}" < "$SQL_FILE"
if [ $? -eq 0 ]; then
echo "Successfully restored $TABLE_NAME"
else
echo "Error restoring $TABLE_NAME"
fi
fi
done
echo "Restore process completed."
MYSQL_DB: снова замените «wordpress_db» на фактическое имя вашей базы данных.
Run the Restore Script
После создания restore_db.sh сделайте его исполняемым и запустите:
bash restore_db.sh