Архив метки: MySQL

Резервное копирование БД

Понадобилось создавать резервную копию базы. Но дамп надо было хранить на другой машине, недоступной из сети. Т.к. база занимает более 80Gb и постоянно растёт каждую таблицу необходимо было поместить в отдельный файл для случаев, если необходимо восстановить данные одной таблицы.

Для этого был написан такой скрипт на sh:

#!/bin/sh

DATE=`date -d "yesterday" +"%Y-%m-%d"`
DIR=%backups path%

HOSTUSER=%ssh user name%
HOSTNAME=%ssh host%

DBBASE=%database name%
DBUSER=%database user%
DBPASS=%database password%

echo "Create dir $DIR$DATE"
mkdir -p $DIR$DATE

for TABLE in $(ssh -p 222 $HOSTUSER@$HOSTNAME -C "mysql -B -s -u$DBUSER -p$DBPASS $DBBASE -e 'show tables'")
do
    echo "Create dump for table $TABLE"
	ssh -p 222 $HOSTUSER@$HOSTNAME -C "mysqldump -u$DBUSER -p$DBPASS $DBBASE $TABLE | gzip -c" > $DIR$DATE/$TABLE.sql.gz
done

echo "Create full archive"
tar -czvf $DIR/$DATE.sql.tar.gz $DIR$DATE

echo "Remove dir $DIR$DATE"
rm -rf $DIR$DATE

echo "Finished"

Также скрипт можно взять на GitHub

MySQL. Неизвестная пунктуация.

На днях столкнулся с непонятной ошибкой MySQL. Сервер сообщал, что в запросе на вставку записи (с другими не пробовал) допущена ошибка «Неизвестная пунктуация«.

Ошибка появлялась в тот момент когда вставлялось 2 и более записи и в какой-либо из строк содержится точка с запятой (;). Дамп заливался через консоль, phpmyadmin и Sypex Dumper Lite 1.0.8.

Причина в func_overload библиотеки mbstring. Для корректной работы оно должно быть отключено.