Назад | Перейти на главную страницу

Настройка автоматического резервного копирования базы данных MySQL, включая блокировку таблиц и т. Д. - MySQL Workbench?

У нас есть виртуальный сервер с полным 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, вы можете

  • используйте параметр --single-transaction, если все данные InnoDB
  • если все данные MyISAM, запустите FLUSH TABLES WITH READ LOCK; в базе данных
  • если данные смешаны MyISAM и InnoDB, запустите FLUSH TABLES WITH READ LOCK; и --single-transaction в базе данных (см. мой пост https://dba.stackexchange.com/questions/8587/mysql-db-backup-excluding-specific-tables/8613#8613 для некоторых идей по написанию сценариев)

Попробуйте !!!