Mysqldump нет места на диске что делать

Опубликовано: 28.02.2017

Временами то там, то здесь подымается вопрос, как сделать запасную копию базы данных, либо как выполнить SQL скрипт большого размера.
Если у вас есть доступ к серверу только по FTP и из PHP скриптов запрещен пуск команд оболочки, то другого выхода нет, не считая как находить скрипты выполняющие нужные функции на чистом PHP. Но, на большинстве хостинговых площадок предоставляется SSH доступ к серверу. И на большинстве *nix серверов, даже если они не являются серверами баз данных, уже установлены утилиты командной строчки для работы с БД mysql.

Итак: нам пригодится SSH доступ к серверу, наличие на сервере утилит mysql и mysqldump и доступ к их запуску.
Если на домашнем компьютере стоит Windows, то работать с сервером комфортно через WinSCP в качестве файлового менеджера и PuTTY в качестве SSH клиента. WinSCP и PuTTY могут быть связаны меж собой. Если операции с базой разовые и не будут сохраняться в скриптах, то WinSCP — не нужен, довольно консоли.

Чтоб сделать запасную копию всей базы необходимо выполнить команду;

mysqldump --host=$host --user=$user -p$pass $db > $sqlfile

тут:
$host — Сервер БД
$user — Юзер БД
$pass — Пароль БД
$db — Имя БД
$sqlfile — Название файла, в который будет сохранен дамп.

Для копирования определенных таблиц базы, можно использовать последующий синтаксис:
mysqldump --host=$host --user=$user -p$pass $db $table1 $table2 > $sqlfile

Подробнее — смотрите документацию mysql: http://mysql.ru/docs/man/mysqldump.html

Чтоб залить этот дамп в другую БД, необходимо выполнить команду:
mysql --host=$host2 --user=$user2 -p$pass2 $db2 < $sqlfile

Чтоб заавтоматизировать выполнение этих команд создаем файл copydb.sh (обычно заавтоматизировать нужно только создание запасных копий, а восстановление из базы — по необходимости).
# данные первой базы, из которой копируем:
pass='pass'
user='user'
db='db'
host='mysql1.ru'

# данные 2-ой базы, в которую копируем:
pass2='pass2'
user2='user2'
db2='db2'
host2='mysql2.ru'

# название файла формируем по маске: БД_год_месяц_день.sql
sqlfile=$db'_'`date +%Y_%m_%d`'.sql'

# Создаем файл копии первой базы
mysqldump --host=$host --user=$user -p$pass $db > $sqlfile

# Заливаем файл во вторую базу
mysql --host=$host2 --user=$user2 -p$pass2 $db2 < $sqlfile
Запасные копии базы лучше создавать по расписанию и сходу сжимать. Потому в последующий скрипт включены команды выбора директории и архивирования.

sqldump.sh:
# путь до папки с запасными копиями
home='/home/web/back/dbname'
pass='пароль'
user='юзер'
db='база'
host='сервер'

# избираем подпапку: в 1-ый денек месяца складываем в папку 'm',
# каждое воскресенье - в папку 'w', все другие - в папку 'd'
if [ `date +%d` = "01" ]
then
subf="m"
elif [ `date +%u` = "7" ]
then
subf="w"
else
subf="d"
fi

cd $home

# Задаем имена sql и tar.gz файлов
sqlfile=$db'_'`date +%Y_%m_%d`'.sql'
tgzfile='back/'$subf'/'$sqlfile'.tgz'

# создаем дамп
mysqldump --host=$host --user=$user -p$pass $db > $sqlfile
# архивируем
tar -czf $tgzfile $sqlfile
# удаляем дамп
rm $sqlfile

Если создается копия большой базы данных, с огромным количеством таблиц, то может быть получена ошибка вида:
Got error: 1016: Can’t open file: ‘база/таблица’ (errno: 24) when using LOCK TABLES
тогда в функции mysqldump следует добавить опцию —single-transaction:

mysqldump --single-transaction --host=$host --user=$user -p$pass $db > $sqlfile

Новости

SMM маркетинг от А до Я
Развитие социальных сетей породило новую огромную бизнес отрасль — СММ маркетинг. Это когда мы приходим с нашим продуктом в какую-нибудь соцсеть, находим там нашу целевую аудиторию, и предлагаем ей наш

Социальные сети в России, зима 2015-2016 Цифры, тренды, прогнозы | Блог Brand Analуtics — все о бренд мониторинге и социальной аналитике
Представляем данные регулярного исследования активной аудитории социальных сетей в России, зима 2015-2016. В исследовании представлены данные по аудитории, возрасту, полу и региональному распределению

Полезно знать
20.02.2014 Что такое Pinterest. Визуальный PR и маркетинг Pinterest или ПИНТЕРЕСТ – социальная сеть, использующая вместо текстов картинки и изображения, которые можно добавлять в аккаунт,

Фейсбук Моя страница: ВХОД на свою страницу Facebook
Фейсбук (Facebook) Моя страница — это личная страница каждого зарегистрированного пользователя самой большой в мире социальной сети.  Фейсбук даёт возможность людям с разных уголков Земли общаться между

Анализ социальных сетей
АНАЛИЗ СОЦИАЛЬНЫХ СЕТЕЙ (social network analysis) - новое направление структурного подхода, основными целями которого являются исследование взаимодействий между социальными объектами и выявление условий

Социальные сети для продвижения бизнеса: какие выбрать?
  Привет, друзья! Социальные сети занимают львиную часть времени в нашей жизни. Ежедневный просмотр новостей, любимых групп и переписка с друзьями – это любимое дело большинства молодых людей. Вот и

ВРЕДНОЕ ВЛИЯНИЕ СОЦИАЛЬНЫХ СЕТЕЙ НА ЗДОРОВЬЕ ЧЕЛОВЕКА - VI Студенческий научный форум (15 февраля - 31 марта 2014 года)
ВРЕДНОЕ ВЛИЯНИЕ СОЦИАЛЬНЫХ СЕТЕЙ НА ЗДОРОВЬЕ ЧЕЛОВЕКА Гущина Н. В., Люлина Н.В. С распространением всемирной паутины рост социальных сетей по всему миру стал глобальным явлением. С каждым

Влияние социальных сетей на подростков. Пропаганда суицида в сетях
Почему мы любим интернет? Почему молодым людям, подросткам сказать «Привет» стало проще, познакомившись в интернете, чем просто подойти в реальности? Почему все «сидят» в социальных сетях? Социальные сети

Маркетинг в социальных сетях (SMM) для продвижения компании
Деятельность в социальных сетях, на блогах и форумах по повышению лояльности клиентов получила название SMM — от аббревиатуры английского звучания этого термина – Social Media Marketing. Аудитория

Фейсбук (Facebook) - что это за сеть: как пользоваться ФБ
Фейсбук — это самая популярная и большая социальная сеть в мире. Если Вам интересно узнать больше о Facebook, про то как пользоваться сетью и о некоторых «фишках» ФБ — этот материал именно для вас!


rss