Резервное копирование (backup) всех баз mysql
Прошелся по нескольким блогам. почитал и удивился тому что для того чтобы сделать дампы всех баз mysql люди используют mysqldump –all-databases. На мой взгляд вариант более чем неудобный.
Предложу более правильный вариант, снимаются дампы со всех баз данных каждая база в отдельный файл. Для пояснения:
/backup/mysql/ - папка куда будем складывать дампы.
megapass - пароль root к mysql
итак собственно сам скрипт:
for i in `mysql -pmegapass -e'show databases;' | grep -v information_schema | grep -v Database`; do mysqldump -pmegapass $i > `date +%Y-%m-%d`-$i; gzip `date +%Y-%m-%d`-$i;done
теперь поясню что делается, в цикле вывода имен всех баз данных кроме information_schema и Database выполняется mysqldump в файл дата-имя_базы, затем дамп жмется gzip-ом.
На выходе получаем пачку файлов на подобии:
2009-02-11-shakirov_kayako.gz
2009-02-11-shakirov_mantis.gz
2009-02-11-shakirov_openfire.gz
Например если в системе несколько пользователей и базы данных у них сделаны правильно (имя базы с префиксом имени пользователя, например shakirov_base), то можно делать бакапы баз разных пользователей в разные папки. С полученными бакапами можно поступать как удобно, хранить на отдельном диске, разделе. внешнем ftp сервере или заливать куда-то по scp.
Table is marked as crashed and should be repaired
Запись создана марта 16, 2009
Просматривая /var/log/mysql/error.log обнаруживаем ошибки вида:
090316 20:55:03 [ERROR] /usr/sbin/mysqld: Table ‘./user_base/table’ is marked as crashed and should be repaired
если crashed всего несколько таблиц, то можно выполнить repair table из консольного mysql клиента или phpmyadmin при помощи sql запроса:
> USE user_base
> REPAIR TABLE TABLE;
Если в базе crashed много таблиц, то будет проще выполнить команду:
mysqlcheck -uUSER -pPASSWORD --repair --extended user_base
ну а если много побитых таблиц, да еще и в большом количестве баз, то репайр лучше запустить на все базы, командой:
mysqlcheck -uUSER -pPASSWORD --repair --extended -A
Бакапим и ресторим базу MySQL
Запись создана марта 12, 2008
Делаем дамп:
# mysqldump --add-drop-table --host=localhost --user=root --password=111 basename > basename.sql
Ресторим базу из дампа:
# mysql --host=localhost --user=root --password=111 --default-character-set=cp1251 basename <>
Комментариев нет:
Отправить комментарий