MySQL-копирование | REG.RU
Несмотря на надёжность современных компьютеров и серверов, время от времени случаются поломки. А значит пользователи постоянно рискуют потерять все свои данные. Чтобы решить проблему потери информации, специалисты рекомендуют делать резервное копирование MySQL.
Резервное копирование, или бэкап ― это создание копии файлов и папок на дополнительном носителе информации. Резервное копирование позволяет восстанавливать повреждённые данные на основном носителе. В этой статье мы расскажем, как сделать бэкап MySQL.
Где можно хранить резервные копии
Бэкап можно хранить на любом внешнем носителе. Желательно, чтобы этот носитель не был подключен к основному устройству постоянно.
- Внешний жёсткий диск. Он представляет собой тот же жёсткий диск, что и в компьютере, но подключается с помощью USB-разъема. Это надёжное устройство для хранения информации, однако его нужно беречь от падений.
- Флешка. Флешка менее надёжна, чем жёсткий диск, так как её легче сломать или потерять. Всё-таки в первую очередь она создана для переноса данных. Однако её большими плюсами являются маленькие размеры и простота использования.
- Облачные хранилища. Это популярный метод хранения информации. Плюсами облачного хранения копий являются:
- Автоматическое копирование. Можно настроить сохранение данных, например, раз в сутки или раз в неделю.
- Экономия. Облачное хранение часто обходится дешевле, чем материальные носители, и не требует обслуживания со стороны пользователя.
- Безопасность. Современные облачные технологии обеспечивают высокую информационную безопасность за счёт шифрования данных.
Способы резервного копирования MySQL
Способов сделать копирование базы данных несколько:
- Можно временно выключить MySQL-сервер и скопировать файлы из папки /var/lib/mysql/db/. Само копирование занимает мало времени, однако восстановление сервера может занять часы. Копировать базу нужно регулярно, а постоянное отключение нехорошо для сервиса.
- Можно использовать снэпшоты. Для них не нужно останавливать MySQL-сервер. Однако создание снимка может повлиять на работоспособность БД.
- Для копирования MySQL можно использовать утилиту mysqldump, которая была создана Игорем Романенко. С её помощью создаётся дамп содержимого базы данных. Дамп ― это файл с копией БД. Файл состоит из SQL-команд.
Плюсы дампа:
- прост в использовании,
- лучше переносятся между версиями MySQL,
- можно копировать как все имеющиеся БД, так и отдельно выделенные таблицы,
- совместим практически с любой СУБД (не только MySQL),
- можно выгружать данные в форматах CSV и XML.
Недостатки использования дампов:
- медленное создание копии БД (особенно для тяжёлых файлов),
- требует много дискового пространства.
Третий вариант имеет много плюсов. Ниже мы расскажем, как сделать резервную копию MySQL с помощью утилиты mysqldump.
Как создать бекап базы данных MySQL
Синтаксис команды для создания резервной копии:
mysqldump [опции] [имя_базы] > [путь_и_имя_файла].sql
В результате выполнения будет создан файл .sql.
Для примера создадим бекап базы данных db_name и сохраним файл db_backup.sql в корневой директории. Для этого используем команду:
mysqldump -u root -p db_name > /db_backup.sql
Даже если команда была выполнена успешно, вывода на экран не будет. Результат сразу запишется в файл:
MySQL backup database
Как создать бэкап отдельной таблицы
При помощи mysqldump можно создать резервную копию отдельной таблицы. Для этого нужно добавить имя таблицы после названия БД:
mysqldump -u root -p db_name table_name > /db_table_backup.sql
В результате резервная копия таблицы table_name базы данных db_test будет сохранена в файле db_table_backup.sql.
Посмотреть список таблиц в БД можно при помощи команды:
mysqlshow -u root -p table_name
Как сохранить копию нескольких баз данных
Чтобы сохранить копию нескольких баз данных, используйте ключ —databases, а после него через пробел введите названия БД. У вас должно получиться подобное:
mysqldump --databases db_1 db_2 > db_backup.sql
Чтобы сделать бэкап всех баз, используйте ключ —all-databases:
mysqldump --all-databases > db_backup.sql
Как создать новую базу данных MySQL
Чтобы развернуть бэкап, нужна существующая БД. Если её нет, можно создать новую. Для этого:
-
1.
Подключитесь к серверу MySQL:
mysql -u root -p
Создайте базу данных:
CREATE DATABASE db_name;
Вместо db_name введите нужное имя.
Готово, вы создали новую БД, теперь вы можете развернуть на ней резервную копию.
Как восстановить базу данных MySQL из резервной копии
Для восстановления резервной копии используется утилита mysql. Синтаксис:
mysql [опции] [имя_базы] < [путь_и_имя_файла].sql
Например, восстановим базу данных db_name из файла резервной копии db_backup.sql
mysql -uroot -p db_name < /db_backup.sql
Если БД с таким названием не существует, вы увидите ошибку:
ERROR 1049 (42000): Unknown database ‘db_name’:
Посмотреть список баз данных можно при помощи команды:
mysqlshow -u root -p
Помогла ли вам статья?
Да
3 раза уже помогла
Бэкап базы данных — документация Staffcop Enterprise 5.1
Для того, чтобы выполнить бэкап базы данных, нужно выполнить следующие действия: Подготовка:
Убедитесь, что:
sudo service postgresql status
Проведение бэкапа
Выполните команду
sudo staffcop backup_db
Ваш бэкап будет размещен в папке
Для переноса на другой компьютер скопируйте эту папку по сети либо на переносной носитель.
Восстановление бэкапа
Для восстановления бэкапа нужно выполнить команду:
sudo staffcop restore_db
В случае, если файл бэкапа находится не в /var/lib/staffcop/staffcop_backup путь к нему нужно указать явно, например:
sudo staffcop restore_db /home/support/backup
Примечание
Путь к папке должен быть указан полностью!
Исходные коды скриптов:
#!/bin/bash -e cd ~ wget -O ~/backup_db http://dist.staffcop.ru/utils/script/backup/backup_db cp ~/backup_db /usr/share/staffcop/bin/ chmod +x /usr/share/staffcop/bin/backup_db wget -O ~/restore_db http://dist.staffcop.ru/utils/script/backup/restore_db \ cp ~/restore_db /usr/share/staffcop/bin/restore_db \ chmod +x /usr/share/staffcop/bin/restore_db
echo "Backup StaffCop" if ! [ -f /bin/tar ]; then echo "No app tar. Please install 'sudo apt-get install tar'" exit 3 fi if ! [ -f /usr/bin/pg_dump ]; then echo "No app pg_dump. Exit" exit 3 fi #--------------------------- bname=${DBNAME}-db. dump sname=${DBNAME}-setting.tar cname=${DBNAME}-sert.tar default_folder="staffcop_backup" default_path="/var/lib/staffcop" #-------------------------- function backup_path_dialog() { echo -e "\e[32mПуть для размещения резервной копии базы: '${default_path}'(Y/N)?:\e[0m" read var1 case $var1 in Y|y) path=${default_path} ;; N|n) request_backup_path ;; *) error backup_path_dialog ;; esac } function request_backup_path() { echo -e "\e[32mЗадайте путь для размещения резервной копии базы:\e[0m" read path } function error() { echo 'не могу распознать ответ' echo 'введите Y или N' } if [ $1 ] ; then path=$1 else backup_path_dialog fi #free space from hdd? TREE_ROOT=$(df --output=avail $path | sed 1d) echo "Свобдоное место в папке '${path}': ${TREE_ROOT}" DBPATH=$(echo $(su - postgres -c "psql -t -U postgres $DBHOST_OPTION $DBPORT_OPTION -d $DBNAME -c \"show data_directory;\"")) SIZE_DB=`du -sk $DBPATH | cut -f1` if [[ "$TREE_ROOT" -gt "$SIZE_DB" ]]; then echo -e "\e[32mСоздаем резервную копию базы...\e[0m" else echo -e "\e[31mНехватает свободного места для создания резервной копии базы\e[0m" exit 1 fi if ! [ -f /usr/bin/realpath ]; then echo "Warning. No app realpath. Please install 'sudo apt-get install realpath'" else path=$(realpath $path) fi path=${path}/${default_folder} echo "Backup path $path" #Create backup path echo "Create backup path" mkdir -p $path chmod 777 -R $path if ! [ -d "$path" ] ; then echo "directory does not exist. exit" exit 1 fi echo "Remove old backup files" rm $path/* || true #File name full_path=${path}/${bname} sfull_path=${path}/${sname} cfull_path=${path}/${cname} echo "Backup path $full_path" echo "Setting path $sfull_path" echo "CA path $cfull_path" echo "------------------------------------------" echo "Backup config" tar --absolute-names --create --verbose --file $sfull_path /etc/staffcop echo "Backup CA" tar --absolute-names --create --verbose --file $cfull_path /var/lib/staffcop/CA echo "Backup DB" sudo -u postgres pg_dump --host=$DBHOST_OPTION $DBPORT_OPTION --verbose --compress=7 --clean --create --blobs --format=c --file=$full_path --dbname=$DBNAME echo "------------------------------------------" echo "Backup path" if ! [ -f $full_path ]; then echo 'No file db. Error' exit 1 else echo "File DB: $(du -h $full_path)" fi if ! [ -f $sfull_path ]; then echo 'No file setting. Error' exit 1 else echo "File seting: $(du -h $sfull_path)" fi if ! [ -f $sfull_path ]; then echo 'No file CA. Error' exit 1 else echo "File CA: $(du -h $sfull_path)" fi echo "-------------------------------------------" echo "Finish Backup StaffCop"
bname=${DBNAME}-db.dump sname=${DBNAME}-setting.tar cname=${DBNAME}-sert.tar def_folder="staffcop_backup" def_path="/var/lib/staffcop/${def_folder}" if [ $1 ] ; then path=$1 else path=${def_path} fi path=$(realpath $path) full_path=${path}/${bname} cfull_path=${path}/${cname} if ! [ -f $full_path ]; then echo "No db backup at $full_path" else echo "Restore DB ${DBNAME} from $full_path" staffcop stop service postgresql restart echo "sudo -u postgres pg_restore --host=$DBHOST_OPTION --port=$DBPORT_OPTION --verbose --clean --create --format=c $full_path -d postgres" sudo -u postgres pg_restore --host=$DBHOST_OPTION --port=$DBPORT_OPTION --verbose --clean --create --format=c $full_path -d postgres staffcop init echo "Done!" fi if ! [ -f $cfull_path ]; then echo "No license backup at $cfull_path" else echo "Restore license" rm /var/lib/staffcop/CA/* tar --absolute-names --extract --verbose --file $cfull_path chown -R staffcop:staffcop /var/lib/staffcop/CA/ chmod 775 -R /var/lib/staffcop/CA/ staffcop restart fi
полных резервных копий базы данных (SQL Server) — SQL Server
Обратная связь Редактировать
Твиттер LinkedIn Фейсбук Эл. адрес
- Статья
- 3 минуты на чтение
Применимо к: SQL Server (все поддерживаемые версии)
Полная резервная копия базы данных создает резервную копию всей базы данных. Сюда входит часть журнала транзакций, чтобы можно было восстановить полную базу данных после восстановления полной резервной копии базы данных. Полные резервные копии базы данных представляют базу данных на момент завершения резервного копирования.
Совет
По мере увеличения размера базы данных полное резервное копирование базы данных занимает больше времени и требует больше места для хранения. Таким образом, для большой базы данных вы можете захотеть дополнить полную резервную копию базы данных серией из дифференциальных резервных копий базы данных . Дополнительные сведения см. в разделе Дифференциальные резервные копии (SQL Server).
Важно
TRUSTWORTHY установлен на OFF в резервной копии базы данных. Сведения о том, как установить для TRUSTWORTHY значение ON, см. в разделе Параметры ALTER DATABASE SET (Transact-SQL).
В этой теме:
Резервные копии баз данных в рамках простой модели восстановления
Резервные копии базы данных в соответствии с моделью полного восстановления
Использование полной резервной копии базы данных для восстановления базы данных
Связанные задачи
Резервные копии базы данных в рамках простой модели восстановления
В рамках простой модели восстановления после каждого резервного копирования база данных подвергается потенциальной потере работы в случае аварии. Риск потери работы увеличивается с каждым обновлением до следующего резервного копирования, когда риск потери работы возвращается к нулю и начинается новый цикл воздействия потери работы. Воздействие потери работы увеличивается с течением времени между резервными копиями. На следующем рисунке показан риск потери работы для стратегии резервного копирования, в которой используются только полные резервные копии базы данных.
Пример (Transact-SQL)
В следующем примере показано, как создать полную резервную копию базы данных, используя WITH FORMAT для перезаписи любых существующих резервных копий и создания нового набора носителей.
-- Резервное копирование базы данных AdventureWorks2012 на новый набор носителей. РЕЗЕРВНАЯ БАЗА ДАННЫХ AdventureWorks2012 НА ДИСК = 'Z:\SQLServerBackups\AdventureWorksSimpleRM.bak' С ФОРМАТОМ; ИДТИ
Резервные копии баз данных в рамках модели полного восстановления
Для баз данных, использующих полное восстановление и восстановление с неполным протоколированием, резервные копии базы данных необходимы, но недостаточны. Также необходимы резервные копии журнала транзакций. На следующем рисунке показана наименее сложная стратегия резервного копирования, возможная в модели полного восстановления.
Сведения о создании резервных копий журналов см. в разделе Резервные копии журналов транзакций (SQL Server).
Пример (Transact-SQL)
В следующем примере показано, как создать полную резервную копию базы данных, используя WITH FORMAT для перезаписи любых существующих резервных копий и создания нового набора носителей. Затем в примере создается резервная копия журнала транзакций. В реальной ситуации вам пришлось бы выполнять серию регулярных резервных копий журналов. В этом примере образец базы данных AdventureWorks2019
настроен на использование модели полного восстановления.
Мастер ЕГЭ; ИЗМЕНИТЬ БАЗА ДАННЫХ AdventureWorks2012 SET RECOVERY FULL; ИДТИ -- Создайте резервную копию базы данных AdventureWorks2012 на новый набор носителей (резервный набор 1). РЕЗЕРВНАЯ БАЗА ДАННЫХ AdventureWorks2012 НА ДИСК = 'Z:\SQLServerBackups\AdventureWorks2012FullRM.bak' С ФОРМАТОМ; ИДТИ -- Создайте стандартную резервную копию журнала (резервный набор 2). КОПИЯ ЖУРНАЛА AdventureWorks2012 НА ДИСК = 'Z:\SQLServerBackups\AdventureWorks2012FullRM.bak'; ИДТИ
Использование полной резервной копии базы данных для восстановления базы данных
Вы можете заново создать всю базу данных за один шаг, восстановив базу данных из полной резервной копии базы данных в любом месте. В резервную копию включается достаточная часть журнала транзакций, чтобы вы могли восстановить базу данных на момент завершения резервного копирования. Восстановленная база данных соответствует состоянию исходной базы данных на момент завершения резервного копирования за вычетом незафиксированных транзакций. В соответствии с моделью полного восстановления вы должны затем восстановить все последующие резервные копии журнала транзакций. Когда база данных восстанавливается, выполняется откат незафиксированных транзакций.
Дополнительные сведения см. в разделах Полное восстановление базы данных (простая модель восстановления) или Полное восстановление базы данных (полная модель восстановления).
Создание полной резервной копии базы данных
Создание полной резервной копии базы данных (SQL Server)
SqlBackup (SMO)
Планирование заданий резервного копирования
Использование мастера плана обслуживания
См. также
Резервное копирование и восстановление баз данных SQL Server
Обзор резервного копирования (SQL Server)
Резервное копирование и восстановление баз данных служб Analysis Services
Обратная связь
Отправить и просмотреть отзыв для
Этот продукт Эта страница
Просмотреть все отзывы о странице
Как выполнять резервное копирование базы данных
Реализация резервного копирования базы данных
Резервное копирование и восстановление файлов и двоичных объектов, таких как программные библиотеки, относительно просты. Вы просто копируете объект в отдельный массив хранения, обычно в другое место. Если вам нужно восстановить его, вы скопируете его обратно. С базами данных не все так просто. Резервное копирование базы данных включает репликацию сложных, взаимозависимых системных элементов вместе с самими данными.
Признание критичности резервных копий баз данных
Мы столько раз слышали о важности данных для бизнеса, что можем забыть, что все эти данные должны храниться в определенном месте. И хотя нереляционные базы данных, озера данных и тому подобное проникают в корпоративные ИТ, реальность сегодня такова, что большинство обычных бизнес-данных находится внутри стандартных систем управления реляционными базами данных (RDBMS). Это серверы Microsoft SQL, IBM DB2, Оракулы и MongoDB мира.
Создание надежных резервных копий баз данных для этих СУБД абсолютно необходимо для бизнеса по целому ряду причин. Во-первых, большинство бизнес-транзакций записываются в СУБД. Финансовые отчеты компании, а также данные о клиентах и другая конфиденциальная бизнес-информация неизменно находятся в строках и столбцах СУБД. Если бизнес потеряет эти данные, он потеряет свою финансовую историю. Бухгалтерский учет и финансовая отчетность были бы невозможны. Любая аналитика данных, которая сегодня считается столь важной для управления, прекратится.
Бизнес также теряет способность работать в будущем, если он не может восстановить базу данных до рабочего состояния. Это связано с тем, что базы данных обычно подключаются к транзакционной системе, такой как система управления заказами на продажу или решение ERP. Если базы данных нет, транзакционная система также выйдет из строя.
Почему резервное копирование базы данных может быть сложной задачей
Резервное копирование базы данных может быть сложным, поскольку это двойной процесс. В дополнение к резервному копированию данных процесс резервного копирования также должен учитывать различные конфигурации, настройки и другие метаданные, которые существуют в приложении, но отделены от самой базы данных. Вся система должна быть безопасно скопирована в отдельный элемент инфраструктуры. Затем возникает проблема с размещением. Сегодня базы данных, особенно в крупных организациях, могут быть разбросаны по нескольким локальным серверам, а также по облачным экземплярам.
Базы данных также всегда интегрированы хотя бы с одной другой системой. Если вы используете Cassandra или No SQL, это не автономные приложения. Они работают на серверах, таких как Linux или Windows Server. Конфигурация базового сервера необходима для правильного функционирования базы данных. Он тоже должен быть полностью и правильно зарезервирован. В противном случае восстановить базу данных будет невозможно. РСУБД также обычно подключается к операционной бизнес-системе, такой как ERP. При резервном копировании базы данных необходимо сделать резервную копию конфигураций этого подключения, иначе оно не будет работать должным образом при восстановлении.
В то же время окна резервного копирования короткие и обычно сокращаются. В зависимости от бизнеса резервное копирование базы данных может происходить каждый час или даже каждые несколько минут. В определенных типах компаний, таких как организации, предоставляющие финансовые услуги, RTO и RPO могут измеряться в секундах.
Передовые методы резервного копирования базы данных
Передовые методы резервного копирования баз данных охватывают, но идут гораздо дальше правила резервного копирования 3-2-1, согласно которому вы храните три копии данных в двух режимах хранения, одна из которых находится в удаленном месте. Также необходимы простота использования, регулярное тестирование, хорошая поддержка поставщиков и т. д. Однако для реализации цели создания надежных резервных копий базы данных — то есть резервного копирования всей системы и ее данных, чтобы она работала, несмотря ни на что, — требуется гораздо более глубокий набор лучших практик. В частности:
Создайте и поддерживайте подробную карту базы данных, в том числе, где она развернута и как она подключается к другим системам. Любое изменение карты должно трансформироваться в изменение процедуры резервного копирования.
Создайте и поддерживайте перечень конфигураций и настроек, которые повлияют на жизнеспособность восстановленной версии базы данных. Малейшая неправильная конфигурация может сделать восстановленную базу данных бесполезной, по крайней мере, до тех пор, пока проблема не будет обнаружена.
Чем может помочь Rubrik
Rubrik обеспечивает резервное копирование баз данных с помощью встроенных коннекторов для всех ведущих в отрасли СУБД. Мы упрощаем защиту базы данных, устраняя утомительные сценарии и планирование заданий. Администраторы резервного копирования баз данных могут просто указать базы данных или даже серверы баз данных, которые необходимо защитить. Rubrik автоматически приспосабливается к любым изменениям в топологии с помощью надежного механизма политик SLA. Они также могут обрабатывать сложную рабочую нагрузку по резервному копированию базы данных через единую панель управления, уменьшая сложность управления физическими, виртуальными и облачными рабочими нагрузками с помощью единого интерфейса на основе пользовательского интерфейса.