У нас есть виртуальный сервер с полным ssh и корневым доступом, на котором работает LAMP на сервере Ubuntu.
У меня в офисе есть маленький компьютер с Ubuntu, который ни для чего не используется. Я подумал, что должен использовать его для создания и хранения (копии) резервных копий нашей базы данных MySQL. Однако как мне сделать резервную копию наших баз данных?
MySQL Workbench блокирует таблицы, чтобы избежать ошибок, среди множества других функций, но не имеет запланированного автоматического резервного копирования. MySQL Дампер не указывает, что они могут поддерживать целостность базы данных.
Источник информации из этого абзаца:
Я не вижу смысла запускать php-скрипт на моем сервере и отправлять резервные копии по электронной почте, когда у меня есть доступ по SSH. Поскольку резервное копирование так важно, я считаю, что должен быть стандартный (или отличный) способ сделать это, которого я еще не нашел!
Итак, как мне сделать резервную копию наших данных? И, желательно, наши пользователи, конфиг и тд тоже!
Сценарий ниже в файле и make - это exe use (chmod u + v имя файла), затем добавьте запись crontab в имя файла @daily на компьютере, и он будет дамп и сохранять еженедельную резервную копию.
#!/bin/sh
eightdaysago=$(date --date='7 days ago' +%Y-%m-%d-%A)
rm -rf /backups/$eightdaysago
# Backup the mysql Databases
for database in $(mysql -u b4ckup -pd1psh1t --host server0.expatjob.net -e "show databases" | awk '{print $1}' | grep -v Database| grep -v information_schema | grep -v mysql | grep -v phpmyadmin | grep -v STATS)
do
ssh user@ip 'mysqladmin -u (user) -p(password) flush-hosts'
mysqldump -u (user) -p(password) --lock-tables=false --host ip $database > /backups/`date +\%Y-\%m-\%d`-`date +\%A`/$database.sql
done
Если у вас установлен MySQL на машине Ubuntu, вы можете сделать следующее:
Предположим, что IP-адрес Virtual 10.1.2.30.
Вы можете сделать следующее на машине Ubuntu
BACKUP_FILE=/root/MySQLData.sql
MYSQL_HOST=10.1.2.30
MYSQL_USER=whateverusername
MYSQL_PASS=whateverpassword
MYSQL_CONN="-h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS}"
mysqldump ${MYSQL_CONN} --all-databases > ${BACKUP_FILE}
Вы также можете настроить это на машине Ubuntu
Если вы ищете последовательные mysqldump, вы можете
FLUSH TABLES WITH READ LOCK;
в базе данныхFLUSH TABLES WITH READ LOCK;
и --single-transaction
в базе данных (см. мой пост https://dba.stackexchange.com/questions/8587/mysql-db-backup-excluding-specific-tables/8613#8613 для некоторых идей по написанию сценариев)Попробуйте !!!