Цитата:
Сообщение от dmartynenko
А ведь в исходном вопросе речь шла не про чистку как таковую, а про бэкап базы без лишних данных.
Еще раз про мой рецепт подробнее и с примером.
Суть в том, что бы дампить таблицы содержание которых нам в бэкапе не нужно без данных (только структуру), остальные таблицы бэкапить с данными.
Пример bash скрипта для этой цели:
Код:
# юзер базы данных + пароль
USER=user
PASSWORD=pass
CHARSET=cp1251
# куда сохранять бэкапы - желательно за пределами htdocs
BACKUP=/home/userX/dump
date '+%Y-%m-%d %T'
echo "Backup databases to $BACKUP"
# делаем выборку списка баз, исключаем не нужные в бэкапе (как минимум information_schema)
for database in `mysql -u $USER -p$PASSWORD -e'SHOW DATABASES;' | grep -v information_schema | grep -v something`;
do
mkdir --mode=777 $BACKUP/$database
cd $BACKUP/$database
for table in `mysql -u $USER -p$PASSWORD $database -e'SHOW TABLES;'`;
do
### exclude empty tables
if [[ $table == cache_* || $table == tx_realurl_* || $table == tx_tcdirectmail_clicklinks || $table == tx_tcdirectmail_sentlog ]];
then
echo ''
echo "mysqldump --opt --no-data -u $USER -p$PASSWORD $database $table > $table.sql;"
mysqldump --default-character-set=$CHARSET --opt --no-data -u $USER -p$PASSWORD $database $table > $table.sql
date '+%Y-%m-%d %T'
echo "gzip --force $table.sql;"
gzip --force $table.sql
date '+%Y-%m-%d %T'
### else full data export
else
echo ''
echo "mysqldump --default-character-set=$CHARSET --add-locks --skip-comments --skip-extended-insert --hex-blob --add-drop-table --quick -u $USER -p$PASSWORD $database $table > $table.sql;"
mysqldump --default-character-set=$CHARSET --add-locks --skip-comments --skip-extended-insert --hex-blob --add-drop-table --quick -u $USER -p$PASSWORD $database $table > $table.sql
date '+%Y-%m-%d %T'
echo "gzip --fast --force $table.sql;"
gzip --fast --force $table.sql
date '+%Y-%m-%d %T'
fi
done
done
В примере строчки с date и echo только для логгирования работы (можно получать на почту результат cron задания).
В результате в BACKUP папке создается структура папок с названими всех нужных баз данных. В каждой папке для каждой таблицы создается отдельный архив. BACKUP папка скачивается раз в день по расписанию по FTP.
|
Если это получается на раз, два три - то это круто...