В процессе создания автоматизированного решения для резервного копирования и восстановления всего сервера MySQL я натолкнулся на mysql
базу данных, которая, кажется, содержит учетные записи пользователей, разрешения, метаданные и тому подобное. Нужно ли создавать резервную копию этой базы данных? Будет ли резервное копирование и попытка восстановить это сломать вещи?
У меня было чертовски много времени, когда я гуглял "mysql для резервного копирования базы данных mysql", как вы можете себе представить.
mysql
backup
database
backup-restoration
database-backup
Дэниэл Бердсли
источник
источник
Ответы:
Вот кое-что интересное: резервное копирование
mysql
базы данных сильно ограничивает вас тем, что вы можете восстановить такую базу данных только до той же версии mysql, с которой вы выполняли резервное копирование. Вот почему:Вот mysql.user из MySQL 5.0.45
Вот mysql.user из MySQL 5.1.32
Вот mysql.user из MySQL 5.5.12
Если вы попытаетесь восстановить mysql.user до версии MySQL, для которой он не предназначен, это приведет к случайным проблемам с разрешениями. Способ резервного копирования пользовательских разрешений mysql в зависимости от версии - сбросить пользовательские разрешения в SQL. Таким образом, пользовательские гранты полностью переносимы. Есть два способа сделать это:
ВАРИАНТ № 1: Использование MAATKIT
mk-show-grants сгенерирует необходимый SQL-запрос независимо от того, к какому экземпляру mysql вы подключаетесь. (Имейте в виду, что MAATKIT переносится в Percona Toolkit. Этот инструмент, скорее всего, будет называться pt-show-grants).
ВАРИАНТ № 2: Сценарий сброса SQL-грантов
Я написал свою собственную эмуляцию mk-show-grants. Это исключит анонимных пользователей. Это выглядит так:
Использование любого из этих параметров создаст более стабильную резервную копию пользовательских грантов.
НА ОТДЕЛЬНОМ ПРИМЕЧАНИЕ
Теперь, если вы используете эту опцию вывода журнала
база данных mysql заполняет медленный журнал (если он включен) как таблицу mysql в схеме mysql, а не как текстовый файл. Таким образом, создание физических резервных копий будет включать такие журналы на основе таблиц mysql. Поверьте, это не стоит дискового пространства, если общий лог и медленный журнал запросов включены и накапливаются в схеме mysql. Просто придерживайтесь опций дампов MySQL Grants.
ОБНОВЛЕНИЕ 2011-09-19 15:54 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Существует один очень важный фактор в поддержке резервного копирования разрешений MySQL с помощью грантов SQL:
Каждый пользователь выходит со своим паролем в каком-то измененном формате MD5. Для mysql 4.0 и обратно это шестнадцатеричная строка из 16 символов. Для mysql 4.1+ это 41 символ (звездочка, за которой следует шестнадцатеричная строка из 40 символов).
Прежде чем восстанавливать дамп SQL-грантов, проверьте файл дампа SQL-грантов на наличие 16-значных шестнадцатеричных паролей. Если вы видите даже один, вы должны добавить следующее в /etc/my.cnf (или my.ini для Windows) на сервере MySQL, на который вы будете восстанавливать:
Old_password директива разрешает 16-полукокса и 41 преобразовывались пароли сосуществовать и правильно аутентификации в том же экземпляре Запуск MySQL. Все пароли, созданные в будущем, будут состоять из 16 символов.
Перезапуск MySQL не требуется. Просто запустите это:
источник
SHOW GRANTS
QUOTE()
SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';') FROM mysql.user WHERE user<>'';
Да, вы определенно хотите сделать резервную копию
mysql
базы данных - это неотъемлемая часть вашего сервиса. Несмотря на то, что вы можете восстановить его содержимое из другой информации, сложность сделать это непомерно высока, если вы пытаетесь быстро вернуться к обслуживанию.источник
Вы можете восстановить базу данных mysql между версиями, по крайней мере, относительно недавних версий. В
mysql_upgrade
новые версии MySQL включен инструмент , который обновит системные таблицы для вас.http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html
источник
Пока вы восстанавливаете аналогичную версию mysql, вы можете восстановить базу данных mysql из резервной копии. Если вы сомневаетесь, просто проведите различие между схемами базы данных mysql (из резервной копии и из нового сервера mysql).
источник