Май 082013
 

logo-mysql-170x115
Создам заметку.
Вообщем кто говорит что бинарные логи только занимают место на жестком диске, а кто говорит что с этой опцией спит спокойно, я предерживаюсь второго варианта «спасть спокойно».
Что нам нужно сделать для того, что бы можно было восстанавливать бд из бинарных логов.
В конфигурационном файле mysql активируем такие параметры.

# nano /etc/mysql/my.cnf
Уменьшим хранения логов, а иначе они точно могут разраститься на большой объем.
# Активируем бинарные логи.
log-bin
expire_logs_days = 7
# Храним 7 дней.
log-bin = /var/lib/mysql/bin-log
log-bin-index = /var/lib/mysql/bin-log.index
# Где будем хранить.
binlog-cache-size = 128K
# Кэш бинарного лога
sync-binlog = 1
# размер лога "файла"
max-binlog-size = 350M
# максимальный размер кэша.
max-binlog-cache-size = 90M

После перезагрузки mysql в /var/lib/mysql пофвится файл mysqld-bin.00001
Также добавлю как очистить старые версии логов.

mysql> PURGE BINARY LOGS BEFORE NOW() - INTERVAL 17 DAY;

Такс с конфигурированием сервера закончили, теперь пример как восстановить бд из бинарных логов.

# mysqlbinlog -D -s -d NAME_BD -u USER_BD --start-datetime="2013-05-08 19:35:15" -t mysql-bin.000001 > my_new_bd.sql

-s запрещаем вывод дополнительной служебной информации.
-d база-данных имя.
-u пользователь базы-данных.
-D который запрещает ведение лога.
-t говорим, что обрабатывать и логи нужно.
Ну а теперь осталось только загрузить только что восстановленную нами бд.

# mysql -u root -p < my_new_bd.sql

Добавлю еще.
Можно написать скриптик такого содержимого.

#!/bin/sh
echo 'PURGE BINARY LOGS BEFORE NOW() - INTERVAL 17 DAY;' | mysql -u root -pPASSWORD

 Leave a Reply

(required)

(required)

38 Запросов к базе. 0,381 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.225.16.10