Как я восстанавливаю MySQL Database from Time Machine Backup?

Если требуется избегать использования runinterval, настраивание крона могло бы работать хорошо. Это могло быть особенно полезно, если у Вас есть много серверов, что Вы хотите удержаться от удара Вашего puppetmaster одновременно. Я использовал puppetmaster для выставления файла и крона обновления, ничто, чтобы сделать от стороны клиента (очевидно).

Вот то, что я использую (обратите внимание, что я выполняю его каждый час, но Вы могли просто сослаться на него в cron.d, я не создал этот сценарий, и unfortunetly не знают, кто кредитовать):

#!/bin/bash
#/etc/cron.hourly/puppetRun.sh

# This file managed by Puppet.

# Leave this script in cron.  To disable Puppet, run 'puppetd --disable'
# to temporarily suspend the running of Puppet for testing purposes.

PROG=`basename $0 .sh`
exec > /usr/local/logs/${PROG}.last.trace 2>&1
set -x

if [ -e "/var/run/puppet/puppetd.pid" ]; then
  echo "Puppet is already running or has been disabled.  Remove the lock file /var/run/puppet/puppetd.pid or run
'puppetd --enable'."
  exit
fi

# Randomly sleep so all Puppet clients don't hit the Puppet Master at once.
WAIT=$((RANDOM % 60 * 60))
echo "Sleeping $WAIT seconds..."
/bin/sleep $WAIT


/usr/sbin/puppetd --onetime --no-daemonize --logdest syslog > /dev/null 2>&1
4
задан 3 April 2013 в 08:19
2 ответа

Time Machine не является резервной копией SQL, она будет выполнять резервное копирование фактических файлов, составляющих вашу базу данных SQL.

Я не знаю, как Mac обрабатывает открытое резервное копирование файлы (я предполагаю, что вы запускаете MySQL как своего рода службу или демон)

Что вам, вероятно, нужно сделать, так это использовать графический интерфейс машины времени, чтобы вернуть файлы базы данных (просто перейдите к нужной версии и ударил, я думаю, Time Machine позаботится о том, чтобы вернуть исходные + инкрементные изменения)

Тогда вам, вероятно, потребуется запустить некоторые инструменты согласованности, чтобы убедиться, что ваша БД согласована. Некоторые из них должны быть встроены в MySQL, но я не эксперт. Есть ли в MySQL журналы транзакций? если это так, используйте Time Machine, чтобы вернуть их в тот же момент времени.

0
ответ дан 3 December 2019 в 03:31

Мне просто пришлось с этим справиться.

Поиск резервной копии

В моем случае mysql находится в / usr / local / mysql / (где последний часть фактически является символической ссылкой на текущую установленную версию mysql). Он действительно правильно выполняет резервное копирование файлов, и вся структура существует в резервной копии.

Но по какой-то причине, даже если вы перейдете к правильному локальному пути в поисковике, если вы запустите «Time Machine», он покажет, предыдущей резервной копии не существует. Что, к счастью, неверно, если вы его не исключили.

Итак, чтобы восстановить резервную копию, вы должны перейти к соответствующему пути на томе резервной копии, который должен быть примерно таким, как / Volumes / / Backups .backupdb / <хост> / / Macintosh HD / usr / local / mysql / data / . Проще всего в Терминале. Как только вы cd 'd по правильному пути, вы можете использовать open. , чтобы открыть окно поиска по этому пути и использовать перетаскивание. Однако Finder, вероятно, сначала попросит вас стать владельцем папки, поэтому вам придется впоследствии исправить разрешения.

Поиск стабильной резервной копии

Если у вас постоянно работает mysql, у вас все еще может быть проблема. Насколько я знаю, InnoDB довольно устойчив, но возможно, что файловая структура повреждена. MySQL поставляется с mysqlcheck , который предположительно может восстанавливать такие таблицы ..

Я не знаю, вероятно, проще найти резервную копию, где дата / время изменения всех файлов в data / (разумно, скажем, на несколько минут) ниже даты / времени резервного копирования. В этом случае вы можете быть уверены, что у вас есть согласованная резервная копия, и mysql должен без проблем запускаться с нее.

Разрешения

Если по какой-то причине ваши разрешения не работают после восстановления, в настоящее время (OS X 10.10 / Yosemite) разрешения, установленные

sudo chown -R _mysql:admin /usr/local/mysql/data

, отлично работали у меня (MySQL работает как пользователь _mysql ). Обратите внимание, что mysqld завершится с ошибкой почти незаметно и попытается создать файл журнала ошибок только в / usr / local / mysql / data / , что также может привести к ошибке из-за разрешений. ]

4
ответ дан 3 December 2019 в 03:31

Теги

Похожие вопросы