Просмотр полной версии : Что можно очистить в typo3 (на сервере|в БД) - для создания Бэкапа
Раз в день приходится делать бэкап (копирую папки с сервера, БД - через adminer делаю выгрузку).
Что бы существенно уменьшить вес бэкапа
На сервере копирую все кроме папки typo3temp
В базе данных перед копированием очищаю таблицы sys_log и sys_history
Что еще можно очищать из временных данных и что за таблицы:
cache_extensions
cache_imagesizes
cache_md5params
cache_treelist
cache_typo3temp_log
cf_cache_hash
cf_cache_hash_tags
cf_cache_pages
cf_cache_pages_tags
cf_cache_pagesection
cf_cache_pagesection_tags
cf_extbase_object
cf_extbase_object_tags
cf_extbase_reflection
cf_extbase_reflection_tags
cf_workspaces_cache
cf_workspaces_cache_tags
dmartynenko
23.10.2012, 14:02
Чистить кэши = замедлять работу сайта пока кэши снова не наполнятся.
Лучше напишите простенький скрипт-обертку для mysqldump и делайте выгрузку всех таблиц полностью, а *cache* таблиц только как "CREATE TABLE".
К вашему списку я бы добавил cache_pages, и tx_realurl***cache
-=UncleByte=-
23.10.2012, 16:24
Обычно самая большая таблица на не нагруженных проектах это cache_extensions - ее записи можно смело выкинуть при бэкапе.
В общем после очистки БД все начинает весить примерног на 25% меньше...
Это уже хорошо!
Спасибо!
Андрей Аксенов
24.10.2012, 12:05
Может так проще:
http://xn--80abcjdogk0b.xn--80afg4bgm.xn--p1ai/blog/blog-post/2011/01/21/uproshchenie-rezervirovanija-bazy-dannykh-pri-pomoshchi-sypex-dump/
Как уже писал, БД использует InnoDB, что подразумевает постоянное разрастание размера файла БД... Решить это можно лишь периодическим созданием резервной копии и воссозданием БД из нее...
Может я где-то и ошибаюсь, но других решений не нашел, а вот инструментик для БД хороший...
-=UncleByte=-
24.10.2012, 22:10
Может так проще:
http://xn--80abcjdogk0b.xn--80afg4bgm.xn--p1ai/blog/blog-post/2011/01/21/uproshchenie-rezervirovanija-bazy-dannykh-pri-pomoshchi-sypex-dump/
Как уже писал, БД использует InnoDB, что подразумевает постоянное разрастание размера файла БД... Решить это можно лишь периодическим созданием резервной копии и воссозданием БД из нее...
Может я где-то и ошибаюсь, но других решений не нашел, а вот инструментик для БД хороший...
В принципе для InnoDB есть прекрасные рецепты - http://www.dmitry-dulepov.com/2012/01/cleaning-and-optimising-cache-tables-in.html
Андрей Аксенов
24.10.2012, 23:29
Та же ерунда, вид сбоку... Сервер нужно останавливать, ну так какая разница - конвертить БД несколько раз, или просто зарезервировать и воссоздать?
-=UncleByte=-
25.10.2012, 01:40
Сервер в рецепте нужно остановить один раз, далее очистка просто производиться конвертацией таблиц двойной без необходимости остановки. Рецепт, отмечу, предназначен не для переноса, но для работающего сайта.
А SypexDumper - бесспорно замечательный инструмент, сам пользуюсь и всем тут советовал раньше.
dmartynenko
25.10.2012, 12:52
А ведь в исходном вопросе речь шла не про чистку как таковую, а про бэкап базы без лишних данных.
Еще раз про мой рецепт подробнее и с примером.
Суть в том, что бы дампить таблицы содержание которых нам в бэкапе не нужно без данных (только структуру), остальные таблицы бэкапить с данными.
Пример 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.
Еще можно очистить
cache_extensions
sys_log
sys_history
tx_realurl_errorlog
+ можно выключить ведение логов для sys_log
+ можно выключить ведение логов для sys_log
Недавно в одном небольшом проекте видел раздувшуюся до 1000Мб sys_log :rolleyes:
dmartynenko
25.02.2013, 12:36
Часто бывает при обновлении на 4.5-4.6 в лог начинают писаться всякие сообщения про deprecated методы. При этом все работает как обычно, а в логи редко кто заглядывает.
Вот удивительно - вроде ведение логов отключено...
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '0';
$TYPO3_CONF_VARS['SYS']['devIPmask'] = '';
$TYPO3_CONF_VARS['SYS']['errorHandler'] = '';
$TYPO3_CONF_VARS['SYS']['debugExceptionHandler'] = '';
$TYPO3_CONF_VARS['SYS']['productionExceptionHandler'] = '';
$TYPO3_CONF_VARS['SYS']['systemLog'] = '';
$TYPO3_CONF_VARS['SYS']['enable_errorDLOG'] = '0';
$TYPO3_CONF_VARS['SYS']['enable_exceptionDLOG'] = '0';
$TYPO3_CONF_VARS['SYS']['enableDeprecationLog'] = '0'; //Сообщаяе системе что бы она не вела служебные логи
$TYPO3_CONF_VARS['SYS']['setMemoryLimit'] = '128'; //Максимальное время работы
А в таблицу всеравно что-то пишется в таблицу sys_log...
Можно еще очистить:
sys_ter
sys_lockedrecords
sys_history (не желательно, но можно - наверное!)
А ведь в исходном вопросе речь шла не про чистку как таковую, а про бэкап базы без лишних данных.
Еще раз про мой рецепт подробнее и с примером.
Суть в том, что бы дампить таблицы содержание которых нам в бэкапе не нужно без данных (только структуру), остальные таблицы бэкапить с данными.
Пример 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.
Если это получается на раз, два три - то это круто...
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot