Резервное копирование одной таблицы

mysqldump -u db_user_name -h db_server_host --password="db_user_password" db_name db_table_name > `date +%Y%m%d-%H%M`.sql

Делаем выгрузку одной таблицы из базы данных MySQL на сервере (который использует стандартный порт MySQL) и сохраняем его как sql-инструкцию.

Резервное копирование всей базы

mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name | gzip>`date +%Y%m%d-%H%M`.sql.gz

Делаем выгрузку из своей базы данных на сервере MySQL, перенаправляем вывод на архиватор gzip и сохраняем архив в файл с именем формата:
[4 цифры года][2 цифры месяца][2 цифры дня]-[2 цифры часа][2 цифры минуты].sql.gz

А теперь по порядку.

Допустим, где-то в сети у нас есть сервер MySQL, на котором лежит нечто важное. Всё, что у нас есть - это данные для доступа к этому серверу и подключения нашей базы данных. А именно:

db_server_host - имя нашего сервера в сети или его IP-адрес
db_server_port - порт, с которого MySQL слушает запросы (кстати, по умолчанию - 3306)
db_name - имя нашей базы данных на сервере
db_user_name - имя пользователя базы данных
db_user_password - пароль пользователя базы данных

Мы не доверяем администраторам сервера, на котором находится наша база и хотим делать резервные копии самостоятельно. Для этого сделана специальная программа: mysqldump.

mysqldump - это клиент mysql, программа для снятия резервных копий, написанная Игорем Романенко. Она может быть использована для выгрузки как одной базы данных, так и набора баз, для резервного копирования или переноса данных на другой SQL сервер (не обязательно MySQL). Выгрузка представляет собой инструкции SQL для создания таблиц, их заполнения или и того, и другого вместе.

Для более подробной информации:

man mysqldump

Разберём команду для резервного копирования.

mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name

Здесь команда выгрузки базы данных в чистом виде. Проблема только в том, что вся выгруженная информация пойдёт на стандартное устройство вывода, а по умолчанию это экран. Можно перенаправить вывод сразу в файл таким образом:

mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name>out.sql

Тогда вся база сохранится в файле out.sql в текущей директории. Это можно стерпеть, если размер базы небольшой, а выгрузка делается нерегулярно и вручную. Но из соображений, что данные выгружаются в виде инструкций SQL (то есть в текстовом виде), а текстовые данные замечательно сжимаются, лучше перенаправить вывод в программу gzip.

Напомню, что перенаправление вывода в приложение осуществляется символом "|" - вертикальная черта, с указанием после неё приложения; перенаправление вывода в файл - символом ">" - знак «больше». Результат будет выглядеть примерно так:

mysqldump -u db_user_name -h db_server_host -P db_server_port --password="db_user_password" db_name | gzip>out.sql.gz

В исходном варианте имя файла для вывода создаётся командой `date +%Y%m%d-%H%M`, мне так удобнее не запутаться в архивах. Но здесь у каждого свои предпочтения.

Кстати, знак «`», который на клавиатуре располагается в английской раскладке под тильдой (~), она же буква «ё» в русской раскладке, называется машинописный обратный апостроф или просто обратный апостроф. В скриптах на bash им ограничивается кусок кода, результат выполнения которого вставится в сам код.


ыыы
2014.05.22 12:14:01
#cid89339

Ответить

прикольная капча. дайте скрипт. =)

2014.05.22 14:03:07
#cid89340

Ответить

Чуть позже вывешу :)

ыыы другой
2016.09.23 11:06:05
#cid91675

Ответить

Что на счет капчи?

2016.09.24 21:14:07
#cid91677

Ответить

#cid91675, ыыы другой

Что на счет капчи?

Запарка, даже актуальные заметки выкладывать не успеваю.