Sql gz чем открыть
Обновлено: 21.11.2024
Как и все, что содержит ценные данные, базы данных PostgreSQL следует регулярно создавать резервные копии. Хотя процедура по существу проста, важно иметь общее представление о лежащих в ее основе методах и предположениях.
Существует три принципиально разных подхода к резервному копированию данных PostgreSQL:
Резервное копирование на уровне файловой системы
У каждого есть свои сильные и слабые стороны.
Идея метода SQL-dump заключается в создании текстового файла с командами SQL, которые при отправке обратно на сервер воссоздают базу данных в том же состоянии, в каком она была во время создания дампа. PostgreSQL предоставляет для этой цели служебную программу pg_dump. Основное использование этой команды:
Как видите, pg_dump записывает результаты в стандартный вывод. Ниже мы увидим, как это может быть полезно.
pg_dump — это обычное клиентское приложение PostgreSQL (хотя и очень умное). Это означает, что вы можете выполнить эту процедуру резервного копирования с любого удаленного хоста, имеющего доступ к базе данных. Но помните, что pg_dump не работает со специальными разрешениями. В частности, у него должен быть доступ для чтения ко всем таблицам, резервные копии которых вы хотите создать, поэтому на практике вам почти всегда приходится запускать его от имени суперпользователя базы данных.
Чтобы указать, к какому серверу базы данных должен обращаться pg_dump, используйте параметры командной строки -h хост и -p порт тт>. Хост по умолчанию — это локальный хост или любой другой, указанный в переменной среды PGHOST. Точно так же порт по умолчанию указывается переменной среды PGPORT или, в противном случае, скомпилированным значением по умолчанию. (Для удобства сервер обычно будет иметь такое же скомпилированное значение по умолчанию.)
Как и любое другое клиентское приложение PostgreSQL, pg_dump по умолчанию подключается к базе данных с именем пользователя, совпадающим с текущим именем пользователя операционной системы. Чтобы переопределить это, либо укажите параметр -U, либо задайте переменную среды PGUSER. Помните, что на соединения pg_dump распространяются обычные механизмы аутентификации клиента (описанные в главе 20).
Дампы, созданные pg_dump, внутренне непротиворечивы, то есть обновления базы данных во время работы pg_dump не будут в дампе. pg_dump не блокирует другие операции с базой данных во время работы. (Исключениями являются операции, требующие монопольной блокировки, такие как VACUUM FULL.)
Важно: если схема вашей базы данных зависит от OID (например, от внешних ключей), вы должны указать pg_dump, чтобы он также сбрасывал OID. Для этого используйте параметр командной строки -o.
23.1.1. Восстановление дампа
Текстовые файлы, созданные pg_dump, предназначены для чтения программой psql. Общая форма команды для восстановления дампа:
где infile — это то, что вы использовали в качестве outfile для команды pg_dump. База данных dbname не будет создана этой командой, вы должны создать ее самостоятельно из template0 перед выполнением psql (например, с помощью createdb -T template0 dbname ). psql поддерживает параметры, аналогичные pg_dump, для управления расположением сервера базы данных и именем пользователя. Дополнительную информацию см. на справочной странице psql.
Перед запуском восстановления должна уже существовать не только целевая база данных, но и все пользователи, которым принадлежат объекты в созданной базе данных или которым предоставлены разрешения на доступ к этим объектам. В противном случае при восстановлении не удастся воссоздать объекты с первоначальным владельцем и/или разрешениями. (Иногда это то, что вам нужно, но обычно это не так.)
После восстановления целесообразно запустить ANALYZE для каждой базы данных, чтобы оптимизатор получил полезную статистику. Простой способ сделать это — запустить vacuumdb -a -z для VACUUM ANALYZE всех баз данных; это эквивалентно запуску VACUUM ANALYZE вручную.
Способность pg_dump и psql записывать в каналы или читать из них позволяет создавать дамп базы данных непосредственно с одного сервера на другой; например:
Важно: Дампы, создаваемые pg_dump, относятся к template0. Это означает, что любые языки, процедуры и т. д., добавленные в template1, также будут выгружены pg_dump. В результате при восстановлении, если вы используете настроенный template1, вы должны создать пустую базу данных из template0, как в примере выше.
цитата>Чтобы узнать, как эффективно загружать большие объемы данных в PostgreSQL, обратитесь к Разделу 13.4.
23.1.2. Использование pg_dumpall
Описанный выше механизм громоздкий и неуместный при резервном копировании всего кластера базы данных. По этой причине предусмотрена программа pg_dumpall. pg_dumpall создает резервную копию каждой базы данных в данном кластере, а также сохраняет данные всего кластера, такие как пользователи и группы. Основное использование этой команды:
Полученный дамп можно восстановить с помощью psql :
(На самом деле вы можете указать имя любой существующей базы данных для начала, но если вы перезагружаетесь в пустой кластер, то обычно следует использовать postgres.) Всегда необходимо иметь доступ суперпользователя к базе данных при восстановлении дампа pg_dumpall, так как это необходимо для восстановления информации о пользователе и группе.
23.1.3. Работа с большими базами данных
Поскольку PostgreSQL позволяет использовать таблицы большего размера, чем максимальный размер файла в вашей системе, может быть проблематично записать дамп такой таблицы в файл, поскольку результирующий файл, скорее всего, будет больше, чем максимальный размер, разрешенный вашей системой. Поскольку pg_dump может записывать в стандартный вывод, вы можете просто использовать стандартные инструменты Unix, чтобы обойти эту возможную проблему.
Используйте сжатые дампы. Вы можете использовать свою любимую программу сжатия, например gzip .
Используйте разделить. Команда split позволяет разделить вывод на части, размер которых приемлем для базовой файловой системы. Например, чтобы сделать куски по 1 мегабайту:
Используйте пользовательский формат дампа. Если PostgreSQL был собран в системе с установленной библиотекой сжатия zlib, пользовательский формат дампа будет сжимать данные при их записи в выходной файл. Это создаст размер файла дампа, аналогичный использованию gzip, но имеет дополнительное преимущество, заключающееся в том, что таблицы можно восстанавливать выборочно. Следующая команда создает дамп базы данных, используя пользовательский формат дампа:
Дамп пользовательского формата не является сценарием для psql , вместо этого его необходимо восстановить с помощью pg_restore . Дополнительные сведения см. на справочных страницах pg_dump и pg_restore.
Я пытаюсь напрямую импортировать сжатый файл SQL в mysql. Это правильный путь?
12 ответов 12
> запишет вывод команды mysql на стандартный вывод в файл myfile.sql.gz, что, скорее всего, не то, что вам нужно. Кроме того, эта команда запросит у вас пароль пользователя MySQL «root».
В целях безопасности я бы указал свой пароль в командной строке и позволил бы mysql запросить его.
Как @Prof. Мориарти объясняет, что вы можете изменить команду, чтобы не использовать пароль через zcat /path/to/file.sql.gz | mysql -u 'root' -p ваша_база данных. Он будет знать, что последний параметр — это база данных, которую вы хотите использовать, а не ваш пароль.
Чтобы немного исправить комментарий @Prof.Moriarty, хорошей практикой безопасности было бы не указывать мой пароль в командной строке (где он будет сохранен в истории или виден через плечо), и пусть MySQL запросит это. Один только флаг -p заставит MySQL запрашивать пароль при запросе.
Чтобы отобразить индикатор выполнения при импорте файла sql.gz, загрузите pv и используйте следующее:
В CentOS/RHEL вы можете установить pv с помощью yum install pv .
В Debian/Ubuntu apt-get install pv .
В MAC заварить установить pv
Похоже, что pv есть и в репозиториях Ubuntu (по крайней мере, в 12.04 LTS), но опять же вам нужно выполнить sudo apt-get install pv, чтобы получить его. Спасибо Banjer, это идеально подходит для импорта больших баз данных!
Мне пришлось запустить pv mydump.sql.gz | оружейный | mysql -u корень my_database_name. Это было потому, что я импортировал таблицы, и у меня не был установлен пароль для моего пользователя root
Самый простой способ — разархивировать файл базы данных перед импортом. Также, как упоминал @Prof. Мориарти, вы не должны указывать пароль в команде (вам будет предложено ввести пароль). Эта команда, взятая из webcheatsheet, разархивирует и импортирует базу данных за один раз:
Я обнаружил, что мой конвейер gunzip в сжатом файле размером 10 ГБ привел к зависанию импорта. не уверен, связано ли это с нехваткой памяти или чем-то еще, но я бы ошибся, если в будущем буду делать по одному шагу за раз.
В macOS я использовал это:
Введите пароль и вуаля!
Также проверьте, есть ли в файле SQL какой-либо USE-оператор. Указание базы данных в командной строке не гарантирует, что данные окажутся там, если в файле SQL указано другое место назначения.
Вам просто нужно расширить команду следующим образом: pv mydump.sql.gz | оружейный | mysql -u корень -p ваша_база данных. Принятый ответ использует этот подход.
Вы можете использовать опции -c, --stdout, --to-stdout команды gunzip
В MacOS я использовал следующий однострочный интерфейс без необходимости установки дополнительных программ, кроме самого клиента MySQL.
Первая команда, cat , печатает файл. Его выходные данные, содержимое файла, отправляются в качестве входных данных для следующей команды, gzip.gzip с опцией -d распаковывает переданные ему входные данные и выводит результат, который в конечном итоге используется в качестве входных данных для клиента MySQL, программы mysql. Отправка вывода -> ввода осуществляется с помощью | (pipe) оператор в bash и других оболочках.
Этот сценарий также можно использовать в некоторых популярных дистрибутивах Linux, таких как Ubuntu. Я не уверен, всегда ли доступен gzip. Но его можно легко установить, если нет, с помощью:
Проверьте нашу контактную страницу, чтобы связаться с нами в отделе продаж или поддержки!
Создание резервных копий MySQL и их импорт через командную строку
Оглавление
Импорт и сброс резервных копий из командной строки более эффективны, чем использование графического интерфейса, такого как phpMyAdmin. Запросы командной строки для MySQL не подчиняются никаким ограничениям PHP, поэтому импортировать или экспортировать резервные копии MySQL проще, и очень маловероятно, что вы столкнетесь с какими-либо ошибками, которые может вызвать phpMyAdmin.
Объяснение создания дампа базы данных MySQL
Команда mysqldump записывает версию ваших баз данных в виде обычного текста, включая команды CREATE DATABASE и USE, по существу распечатывая моментальный снимок вашей текущей базы данных. Запуск только этой команды распечатает всю базу данных со всеми операторами, но больше ничего, поэтому вам нужно будет передать вывод другой команде или крокодилом в файл.
Создание резервных копий MySQL
В дальнейшем мы будем предполагать, что вы вошли в систему как пользователь root. Если это не так, вам необходимо убедиться, что за командой следуют имя пользователя и пароль пользователя MySQL, имеющего права на базу данных, вот так:
mysqldump -uaccount_testuser -pthisismypassword …
При создании резервной копии чаще всего ее сжимают при создании дампа. Сжатие дампа MySQL уменьшает размер полезной нагрузки — также рекомендуется при передаче (или загрузке резервной копии) сжимать ее для сохранения целостности.
Для этого вы можете использовать команду gzip, которая должна быть установлена на всех наших серверах:
Вы можете указать более одной базы данных:
Вы даже можете указать одну или несколько таблиц базы данных:
Если вы хотите создать дамп нескольких таблиц из разных баз данных в одну резервную копию, вы также можете сделать это, но для этого потребуется несколько команд. Вот пример:
Наконец, если вы просто хотите создать дамп всех баз данных, вы можете сделать это с помощью следующей команды:
Импорт базы данных резервных копий MySQL
Если возможно и позволяет место, всегда делайте резервную копию базы данных, с которой вы работаете, перед импортом поверх нее, на всякий случай!
Импорт баз данных MySQL так же прост, как и их резервное копирование. Если база данных уже содержит данные, они будут перезаписаны в процессе! Если база данных сжата, для ее импорта можно использовать одну из следующих команд:
И если база данных не сжата, вы можете импортировать ее двумя разными способами. Самый простой способ:
Иногда файлы дампа резервных копий MySQL из других источников выгружаются конкретно в базу данных с именем, указанным в файле дампа. Поначалу это может сбивать с толку, поэтому рекомендуется привыкнуть к безопасному импорту баз данных MySQL, получая их через командную строку MySQL. Вот как:
Использование описанного выше метода требует, чтобы база данных была распакована перед ее импортом. Убедитесь, что вы распаковали ее перед попыткой импорта.
Импорт определенной базы данных из большого дампа
Иногда вам нужно импортировать только одну базу данных из созданных вами резервных копий файла дампа MySQL. Это довольно просто сделать:
В других случаях вам может понадобиться импортировать в базу данных одну таблицу из полной резервной копии базы данных. Это по-прежнему перезаписывает рассматриваемую таблицу (если она существует), но оставляет остальную часть базы данных нетронутой. Для этого требуется несколько команд, чтобы сначала извлечь таблицу из файла дампа, а затем импортировать таблицу:
Импорт всех баз данных из дампа
Вы можете импортировать все базы данных в файл дампа.
ЭТО ПЕРЕЗАПИСЫВАЕТ ЛЮБУЮ ТЕКУЩУЮ ИНФОРМАЦИЮ, ОТЛИЧНУЮ ОТ ИМПОРТИРОВАННОЙ. НЕ ДЕЛАЙТЕ ЭТОГО, ЕСЛИ ВЫ НЕ УВЕРЕНЫ В ИЗМЕНЕНИЯХ!
Обычно файлы, сжатые с помощью gzip, можно восстановить в исходную форму с помощью команд gzip -d или gunzip. Что делать, если вы хотите просмотреть содержимое сжатого файла, не распаковывая его? Для этого вам понадобится командная утилита zcat.
Zcat – это утилита командной строки для просмотра содержимого сжатого файла без его буквального распаковывания. Он расширяет сжатый файл до стандартного вывода, позволяя вам взглянуть на его содержимое. Кроме того, zcat идентичен запуску команды gunzip -c. В этом руководстве мы объясним примеры команд zcat для начинающих.
<р>1.В первом примере показано, как просмотреть содержимое обычного файла с помощью команды cat, сжать его с помощью команды gzip и просмотреть содержимое заархивированного файла с помощью zcat, как показано.<р>2. Чтобы просмотреть несколько сжатых файлов, используйте следующую команду с именами файлов, как показано.
<р>3. Для просмотра содержимого обычных файлов используйте флаг -f, аналогичный, например, команде cat.
<р>4. Чтобы включить нумерацию страниц, вы можете использовать команды more и less, как показано на рисунке (также читайте: Почему команда «less» работает быстрее, чем команда «more» в Linux).
<р>5. Чтобы получить свойства (сжатый размер, несжатый размер, ratio – степень сжатия (0,0%, если неизвестно), uncompressed_name (имя несжатого файла) сжатого файла, используйте флаг -l.<р>6. Чтобы подавить все предупреждения, используйте флаг -q, как показано.
Для получения дополнительной информации см. справочную страницу zcat.
Вам также могут быть интересны следующие статьи по теме.
Вот и все! В этой короткой статье мы объяснили примеры команд zcat для начинающих. Поделитесь с нами своими мыслями в разделе комментариев ниже.
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:
TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.
Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.
Мы благодарны за вашу бесконечную поддержку.
Похожие записи
Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Читайте также: