Дамп базы данных
Что такое дамп базы данных
Web-сайты состоят из файлов и базы данных. Именно в базе данных хранится вся часто изменяемая информация сайта:
Если нужно перенести информацию сайта на другой хостинг или создать резервную копию, то используются дампы базы данных.
Текстовый файл содержит всю информацию, хранящуюся в исходной базе данных, и может быть импортирован в другую базу данных.
Пример содержимого текстового файла с дампом базы данных. Видно, что файл состоит из отдельных команд языка SQL
Работа с дампом базы данных MySQL
Как индустриальный стандарт MySQL поддерживается у всех провайдеров хостинга. Популярные CMS WordPress, Joomla, Bitrix используют в качестве хранилища информации именно MySQL.
На виртуальном хостинге пользователь не имеет доступа на сервер и не может работать с командной строкой, поэтому для него остается вариант работы с дампами базы данных с использованием web-интерфейса, который либо встроен в панель управления хостинга, либо предоставляется утилитой phpMyAdmin.
Чтобы получить дамп базы данных MySQL на VPS/VDS и выделенном сервере, можно воспользоваться командной строкой сервера или специальным web-интерфейсом.
Использование функций панели управления
На примере провайдера Reg.ru и панели ISPManager разберем, как сделать дамп базы данных.
1. Зайдите в меню “Базы данных”.
2. Нажмите на кнопку “Скачать”, чтобы скачать дамп базы данных на локальный компьютер.
3. Чтобы импортировать дамп базы данных с локального компьютера на сервер, перейдите в раздел “Закачать” и нажмите на кнопку “Выберите файл”. Затем выберите файл с дампом на компьютере и запустите процесс закачки файла на сервер нажатием кнопки “Ok”.
Также имеется пункт меню “Локальный дамп”, который позволяет осуществить процедуру импорта дампа базы данных из предварительного закачанного на сервер файла. Достаточно просто найти и выбрать предварительно загруженный файл с дампом в одном из каталогов сайта:
Функция “Локальный дамп” полезна для тех случаев, когда нужно импортировать большой файл с дампом размером в несколько сотен мегабайт. Процедура импорта с файла на сервере работает намного быстрее, чем импорт файла с локального компьютера.
Использование web-интерфейса PHPMyAdmin
Практически у всех провайдеров виртуального хостинга в панель управления хостингом включена утилита PHPMyAdmin. Она используется в качестве удобного web-интерфейса для работы с базой данных MySQL. Например, у провайдера Beget ссылка на запуск phpMyAdmin располагается в разделе управления базами данных:
В числе прочих функций в PHPMyAdmin встроен механизм получения дампа базы данных. Для этого следует воспользоваться пунктом меню “Экспорт”:
При просмотре этого файла в блокноте видно, что он состоит из отдельных команд SQL
Обратной операцией по отношению к экспорту дампа базы данных является восстановление данных из этого дампа. Для этого в PHPMyAdmin нужно воспользоваться меню “Импорт”:
Кнопкой “Choose file” выбирается нужный файл на локальном компьютере, после нажатия кнопки “Вперед” происходит процедура импорта.
Таким образом, web-интерфейс работы с базой данных PHPMyAdmin можно применять как для создания дампа базы данных, так и для его импорта. PHPMyAdmin возможно установить и на свой виртуальный или выделенный сервер вместе с другим программным обеспечением. Кроме того, такие популярные панели управления хостингом, как VestaCP или ISPManager, также предоставляют этот web-интерфейс.
К недостаткам использования PHPMyadmin можно отнести возможные проблемы при работе с дампами очень больших баз данных размерами в сотни мегабайт. Импорт большого дампа связан с ограничениями web-сервера и PHP на размер загружаемого файла, и может потребовать предварительно разделить его на несколько частей, что представляет собой кропотливую и трудоемкую работу.
phpMyAdmin является специализированным программным обеспечением для работы с базами данных MySQL. Конкретно с дампами SQL работать с помощью phpMyAdmin удобнее для привыкших к его интерфейсу пользователей. К тому же эта утилита предоставляет подробную диагностику ошибок импорта в случае их возникновения. В то же время, если у провайдера есть в панели управления свои специальные средства для импорта и экспорта дампов, то их использование может быть проще для обычного пользователя.
Использование командной строки сервера
Для владельцев виртуальных и выделенных серверов доступна возможность работы с дампами базы данных из командной строки сервера. Этот метод лишен ограничений по размеру файла с дампом, работает быстро и надежно.
Для создания дампа пользователю необходимо знать название базы данных, имя пользователя и пароль. Сохранить данные в дамп можно утилитой mysqldump.
Синтаксис команды для создания дампа:
При запуске описанной команды будет запрошен пароль к базе данных для конкретного пользователя. После его ввода система сохранит все данные в файл с указанным названием.
Пример: после запуска процедуры создания дампа командой mysqldump, с помощью команды “ls” проверили, что в папке сайта появился файл dump.sql с дампом базы данных.
Для импорта дампа базы данных нужно будет воспользоваться командой “mysql” с синтаксисом:
Пример: после использования команды pg_dump дамп базы данных сохранен в файл dump.sql
Для импорта дампа в базу данных используется команда psql с синтаксисом:
Что такое дамп базы данных MySQL и как его сделать?
Следовательно, умение делать dump базы данных немаловажно для любого веб-разработчика. Что это такое? Это файл, содержащий инструкции на языке SQL, за счет которых создается точная копия вашей БД как по содержанию, так и по структуре. Для каких случаев вам стоит сделать дамп базы MySQL:
Dump может понадобиться, если вы запланировали миграцию БД на другой хостинг. С инструмента помощью вы сможете без каких-либо трудностей воссоздать точную копию старой базы данных.
Виртуальный хостинг сайтов, на котором включено ежедневное резервное копирование. Регулярное резервное копирование данных сэкономит вам немало сил и нервов в случае непредвиденных ситуаций. Неудачный эксперимент с сайтом способен привести к потере всей базы, и лишь вовремя сделанный дамп поможет вам в решении этой проблемы. Естественно, при этом его нельзя хранить на одном сервере с основной базой, ведь в противном случае вы потеряете всю информацию без возможности ее восстановления.
Как создать дамп базы без ошибок?
Существуют различные способы создания дампа, и далее мы рассмотрим основные варианты:
В этом случае для создания SQL дампа БД используется командная строка или консоль MySQL. Выполните подключение по SSH и введите команду «mysqldump», запустите утилиту и укажите специальные параметры:
Файл можно открыть в текстовом редакторе, как пример, для поиска записей и строк по части слова или темы. Обратите внимание, что не все редакторы поддерживают файлы больших размеров.
В том же случае, если вы не знаете консольных команд, вам потребуется дополнительное программное обеспечение.
Если вы предпочитаете использовать дополнительное программное обеспечение, то можно создать dump базы данных средствами PHP при помощи, например, phpMyAdmin. Для этого выполните следующие действия:
— Добавить SQL строчку «DROP TABLE/VIEW/PROCEDURE/FUNCTION/EVENT»
Нажать соответствующую кнопку.
Данная опция позволяет вам в дальнейшем без ошибок восстановить базу MySQL из дампа. Все таблицы, имеющие одинаковые имена, сначала будут удалены, то есть исполнится команда DROP, а затем заменятся на аналогичные из вашего дампа. В итоге вы обезопасите себя от создания дублей таблиц и как следствие, неправильной работы базы данных.
Теперь вы знаете, как сделать полный дамп, если вам вдруг потребуется перенос базы на другой сервер или возникнет любая другая ситуация, когда может пригодиться резервная копия БД. Конечно, существует еще достаточно много способов создания дампа, помимо описанных выше. Но даже владение самыми простыми вариантами и регулярное применение их на практике позволит вам более уверенно чувствовать себя в любой непредвиденной ситуации, ведь достаточно будет просто развернуть дамп MySQL и сразу восстановить все базы данных.
Если вы решились купить dedicated server в нашей компании, то Вам выдается 100 ГБ на удаленном хранилище бекапов, куда можно настроить автоматическое резервное копирование информации. В таком случае, у вас всегда будет свежий дамп.
Важная информация: Не храните и не публикуйте файлы с доступом по ссылке. Вся информацию (data) необходимо хранить в надежном месте.
Утилита mysqldump и шпаргалка по параметрам
Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.
Так же mysqldump имеет возможность развертывания баз данных из созданного sql-файла.
Создание дампа
Разберем пример простейшее использования, задампим базу данных «database» при помощи перенаправления потока в файл «database.sql»:
Для того чтобы сделать дамп несколько баз данных, необходимо использовать параметр —databases (или сокращенно -B), пример:
А для того чтобы сделать дамп всех баз данных, необходимо использовать параметр —all-databases (или сокращенно -A), пример:
Развертывание дампа
Перенаправляем поток в обратную сторону и развертываем базу данных:
Или через mysql-console:
Ну, а если у нас gz-архив к примеру, то:
Пример использование некоторых параметров
Например, нам нужны данные с «продакшен версии базы» для «версии разработчика», то есть нам нужна «песочница». Выбираем не более 100 записей:
Или нам нужна только структура, без данных:
Делаем дамп только триггеров, процедур и событий:
Шпаргалка по параметрам
Приведу некоторые параметры, которые могут понадобится при работе с утилитой mysqldump.
—add-drop-database
Добавляет оператор DROP DATABASE перед каждым оператором CREATE DATABASE.
—add-drop-table
Добавляет оператор DROP TABLE перед каждым оператором CREATE TABLE.
—add-locks
Добавляет оператор LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы (для ускорения доступа к MySQL).
—allow-keywords
Разрешить создавать имена столбцов, которые совпадают с ключевыми словами. Отсутствие конфликтов обеспечивается прибавлением имени таблицы в качестве префикса к имени каждого столбца.
—compact
Данный параметр требует от mysqldump создать дамп, используя как можно более компактный формат. Параметр является противоположным —comments.
—compatible=name
Параметр генерирует вывод, который совместим с другими СУБД или более старыми версиями MySQL. Вместо ключевого слова name можно использовать: «ansi», «mysql323», «mysql40», «postgresql», «oracle», «mssql», «db2», «maxdb», «no_key_options», «no_table_options», «no_field_options». Можно использовать несколько значений, разделив их запятыми.
—create-options
Добавляет дополнительную информацию в операторы CREATE TABLE. Это может быть тип таблицы, начальное значение AUTO_INCREMENT и другие параметры.
—delayed
Использовать команду INSERT DELAYED при вставке строк.
—delete-master-logs
На главном сервере репликации автоматически удаляются бинарные логи (logbin) после того, как дамп был успешно создан при помощи mysqldump. Этот параметр автоматически включает параметр «—master-data».
—hex-blob
Параметр позволяет представить бинарные данные в полях типа BINARY, VARBINARY, BLOB и BIT в шестнадцатеричном формате. Так последовательность «abc» будет заменена на 0x616263.
—ignore-table=db_name.tbl_name
Позволяет игнорировать таблицу tbl_name базы данных db_name при создании дампа. Если из дампа необходимо исключить несколько таблиц, необходимо использовать несколько параметров «—ignore-table», указывая по одной таблице в каждом из параметров.
—insert-ignore
Добавляет ключевое слово IGNORE в оператор INSERT.
—no-autocommit
Включает все операторы INSERT, относящиеся к одной таблице, в одну транзакцию, что приводит к увеличению скорости загрузки данных.
—order-by-primary
Указание параметра приводит к тому. что каждая таблица сортируется по первичному ключу или первому уникальному индексу.
—protocol=
Параметр позволяет задать протокол подключения к серверу.
—replace
Добавляет ключевое слово REPLACE в оператор INSERT. Данный параметр впервые появился в MySQL 5.1.3.
—single-transaction
Параметр создает дамп в виде одной транзакции.
—skip-comments
Данный параметр позволяет подавить вывод в дамп дополнительной информации.
—tables
Перекрывает действия параметра —databases (-B). Все аргументы, следующие за этим параметром, трактуются как имена таблиц.
—triggers
Создается дамп триггеров. Этот параметр включен по умолчанию. для его отключения следует использовать параметр —skip-triggers.
—tz-utc
при использовании данного параметра в дамп будет добавлен оператор вида SET TIME_ZONE=’+00:00′, который позволит обмениваться дампа в различных временных зонах.
—help
Вывести справочную информацию и выйти из программы.
Еще пару слов о бекапе в MySQL
mysqlhotcopy для MyISAM
Для быстрого резервирования БД с типом таблиц ISAM и MyISAM можно использовать «mysqlhotcopy», которая скопирует файлы *.frm, *.MYD и *.MYI:
Для InnoDB не подойдет данный способ, потому что при этом типе не обязательно все файлы будут храниться в директории базы данных.
xtrabackup для InnoDB
Бин-лог и репликации
Для репликации «mysqldump» не предназначена, для этого есть бин-лог (—log-bin):
Для полной репликации необходимо вести бин-лог с самого начала работы БД, то есть еще до создания структур и данных.
Резервирование данныс в MySQL 6.x
С версии MySQL 6.x доступен online-backup, вот слайд объясняющий нововведения:
Что такое дамп базы данных и как его создать
Перенос сайта с одного сервера на другой может оказаться непростой задачей для многих пользователей. Это связано с тем, что, помимо обычного перемещения файлов, необходимо также выполнить экспорт и импорт базы данных. В таких случаях используется специальный файл под названием дамп. Поговорим в сегодняшней статье, что это такое и как его сделать.
Что такое дамп базы данных
Копирование базы данных может быть полезно, когда нужно выполнить:
Помимо этого, дамп может заполнить не только пустую базу, но и заменить содержимое ранее созданной. Давайте перейдем к практической части и посмотрим на наглядном примере, как все это можно организовать.
Создаем дамп базы данных MySQL
Существует несколько способов создания дампов: через консольное окно или с помощью phpMyAdmin. Рассмотрим последовательно каждый из методов, а также попробуем восстановить БД из дампа.
Способ 1: Консольное окно MySQL
Удаленное подключение к хостингу по SSH разрешает работать с информационными хранилищами. Выбор данного протокола обусловлен его высокой безопасностью, так как вся информация передается в зашифрованном виде без возможности перехвата трафика.
Для подключения вы можете воспользоваться такими программами, как PuTTY и WinSCP – они распространяются в бесплатном доступе. Остановимся на первой утилите и посмотрим, как с ее помощью можно сделать дамп базы данных MySQL.
Обратите внимание, что если на компьютере функционирует сервер с БД, то соединение через порт 3306 будет некорректно. В таких случаях рекомендуется использовать другие значения, например, 3307, 3308 и так далее.
Теперь мы можем переходить к удаленному администрированию БД: создадим дамп базы данных MySQL. Для этого введем в консоль следующий запрос:
В целях безопасности рекомендуется вообще не использовать логин и пароль. В таком случае команда примет следующий вид:
Для понимания можете взглянуть на пример с использованием пользователя и пароля:
Таким образом будет создан файл WordPressDump.sql, содержащий в себе все нужные данные для точного копирования. Посмотрим, как этот файл импортировать в проект через консоль:
Аналогично подставляем свои данные в команду и в итоге получаем:
Также при импорте мы можем указать кодировку — для этого достаточно добавить ключ default-character-set. В итоге код преобразуется:
Вот такими несложными действиями можно сделать копирование через консольное окно. Теперь давайте «покопаемся» в phpMyAdmin и выполним в нем копирование БД.
Способ 2: Инструмент phpMyAdmin
PhpMyAdmin по умолчанию предустановлен на каждой CMS. Доступ к нему осуществляется через личный кабинет пользователя на хостинге либо через локальный веб-сервер на домашнем ПК.
Подключаемся к phpMyAdmin и экспортируем БД:
После этого нам будет предложен выбор места сохранения файла. В последующем мы сможем его использовать через вкладку «Импорт». Для этого достаточно загрузить файл и указать подходящую для него кодировку:
В заключение стоит сказать, что дамп базы данных – это незаменимый файл, без которого не обходится ни один серверный переезд. Используйте его для переноса базы на хостинге или с локальной машины, а также для создания резервных копий. Удачи!
Используйте утилиту Sqldumper.exe для создания файла сброса в SQL Server
В этой статье содержатся общие рекомендации для Sqldumper.exe, которая включена в SQL Server. Эта утилита используется для создания различных типов файлов сброса.
Оригинальная версия продукта: SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Исходный номер КБ: 917825
Сводка
Утилита Sqldumper.exe включена в Microsoft SQL Server. Он создает сбросы памяти SQL Server связанных процессов для отладки. В этой статье описывается использование Sqldumper.exe для создания файла сброса для отчетов об ошибках Watson или для отладки задач.
В статье также описаны два других метода создания файлов сброса:
Управление утилитой Sqldumper.exe вручную
Запустите Sqldumper.exe в контексте папки, SQL Server изначально установлена утилита. По умолчанию путь установки утилиты Sqldumper.exe следующим образом:
:\Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exe
является местообнамерщиком диска, на котором SQL Server 2005 г.
Чтобы создать файл сброса с помощью Sqldumper.exe, выполните следующие действия:
Откройте следующую папку:
:\Program Files\Microsoft SQL Server\ \Shared
В этом пути папки имеется место для одного из следующих ниже:
Убедитесь, чтоDbghelp.dll файл находится в этой папке.
Выберите > запуск, введите cmd, а затем выберите ОК.
В командной подсказке введите следующую команду и нажмите кнопку Ввод:
В этом пути папки меняется тот же SQL Server, как описано ранее.
Чтобы создать определенный тип файла сброса, введите соответствующую команду в командной подсказке и нажмите кнопку Ввод:
Полный файл сброса
Файл мини-свалки, который включает косвенно ссылаемую память. Это рекомендуемый вариант, который также используется SQL Server по умолчанию при сбросе автоматической генерации памяти
Фильтрованный файл сброса
является местообнамерщиком для идентификатора процесса Windows приложения, для которого необходимо создать файл сброса.
Если Sqldumper.exe успешно выполняется, утилита создает файл сброса в папке, где установлена утилита.
В этом шаблоне увеличивается число, которое определяется на основе других файлов, которые имеют аналогичное имя файла в той же папке. Если у вас уже есть файлы в папке с именами файлов в указанном шаблоне, возможно, вам придется сравнить дату и время создания файла, чтобы определить нужный файл.
Получение идентификатора процесса Windows Майкрософт
Чтобы создать файл сброса с помощью Sqldumper.exe, необходимо иметь идентификатор процесса Windows приложения, для создания файла демпинга. Вот как получить идентификатор процесса:
Кроме того, SQL Server файл журнала ошибок для получения идентификатора процесса SQL Server приложения, запущенного на компьютере. Часть файла журнала ошибок SQL Server похожа на эту:
Номер, который появится после, — это идентификатор процесса Server process ID для Sqlservr.exe процесса.
Путь вывода для свалок памяти
SQLDumper.exe существует в основном для создания сбросов памяти для процесса SQL Server в сценариях, где для решения определенных проблем (исключения, утверждения, неурожайные планиры и т. д.). В таких случаях SQL Server вызывает SQLDumper.exe для создания свалки памяти процесса. Свалка памяти хранится в каталоге SQL msSQL\LOG \ по умолчанию.
Изменение пути по умолчанию
Если в некоторых случаях размер свалки слишком велик, например, вы можете изменить путь, делая следующее:
Когда утилита Sqldumper.exe используется вручную для создания файла сброса для любого приложения Windows, файл сброса может быть таким же большим, как память, Windows приложение в настоящее время использует. Убедитесь, что на диске, на котором Sqldumper.exe утилита записывал файл сброса, доступно достаточное пространство диска.
Укажите настраиваемую папку вывода в команде
Вы можете указать каталог, в котором Sqldumper.exe для записи файла сброса. Каталог должен уже существовать перед запуском Sqldumper.exe утилиты. В противном случае Sqldumper.exe сбой. Не используйте путь UNC в качестве расположения для файла сброса. Ниже приводится пример указания расположения файла сброса в файле мини-свалки:
Выберите > запуск, введите cmd, а затем выберите ОК.
В командной подсказке введите следующую команду и нажмите кнопку Ввод:
Введите следующую команду в командной подсказке и нажмите кнопку Ввод:
является местообладателями каталога, в котором Sqldumper.exe для записи файла сброса. По умолчанию файл пишется в текущую папку.
Если указать полный файл сброса или отфильтрованный файл сброса, который будет создан, Sqldumper.exe может занять несколько минут для создания файла сброса. Время зависит от следующих переменных:
В течение этого времени Sqldumper.exe не обрабатывает команды. Вы заметите, что сервер перестал отвечать. Кроме того, может произойти сбой кластера.
Требования к разрешению
Чтобы запустить Sqldumper.exe, необходимо войти в Windows с помощью одного из следующих методов:
Для успешной Sqldumper.exe удаленного рабочего стола или служб терминалов необходимо запустить службы удаленного рабочего стола или терминала в консольном режиме. Например, чтобы запустить удаленный рабочий стол в консольном режиме, выберите Запуск > запуска, введите mstsc/console, а затем выберите ОК. Если целевой сервер Windows 2000, параметр /console игнорируется. Подключиться к серверу можно с помощью удаленного рабочего стола. Но сеанс консоли не используется.
Если вы заметили, что после запуска утилиты Sqldumper.exe в текущей папке не было сгенерировано никакого файла сброса, просмотрите сведения, созданные утилитой в командной строке, чтобы попытаться определить возможную причину сбоя. Эти сведения также регистрируются в файле Sqldumper_errorlog.log в текущем каталоге. Ниже приводится два возможных сообщения об ошибке и их причины:
Недействительный ID процесса был передан Sqldumper.exe утилите.
Недействительное значение для потока id — ошибка параметра
Недействительный параметр был передан Sqldumper.exe утилите.
Если создается сообщение об ошибке, похожее на одно из следующих сообщений, вы можете смело игнорировать это сообщение:
Неизвестный тип вызова во время minidump 6
Неизвестный тип вызова во время minidump 7
Влияние генерации демпинга
При запросе сброса процесса пользовательского режима (как об этом говорится в этой статье, для сравнения с сбросами ядра операционной системы, которые находятся за пределами нашей области), целевой процесс (здесь SQLServer.exe) замораживается на время, необходимое для сериализации контента свалки до целевого файла.
Замораживание означает, что процесс не сможет выполнить любой запрос пользователя или любую внутреннюю операцию, включая любой механизм опроса ресурсов, например реализацию isAlive и Looks Alive в Windows clustering (см. раздел «Свалки памяти на сбойных действиях кластера» для подробных сведений об обработке этой ситуации). В результате заморозки также может быть нарушено любое время от времени работы с настенными часами.
Как можно извлечь из предыдущего утверждения, длительность замораживания здесь является критическим фактором и определяется следующим образом:
Кроме того, следует запланить размер файла сброса на диске, особенно если существует возможность нескольких свалок и если выбраны крупные, не по умолчанию типы свалок. Убедитесь, что вы просматривали типы dump, чтобы узнать, чего ожидать. По умолчанию некоторые методы сброса создадут свалку в папке SQL Server \Log, которая в простой конфигурации по умолчанию также будет системным диском и диском data+log для SQL Server. Приведение этого диска к насыщению будет иметь серьезные последствия для SQL Server и/или доступности системы.
Управление влиянием на кластерные системы
Во время создания сброса процесс временно приостановлен. Это может повлиять на доступность SQL Server и вызвать сбой ресурсов в контекстах Always On (как экземпляр кластера failover, так и группа доступности). Генерация демпов различных процессов влияет на ресурсы по-разному. Внимательно ознакомьтесь с разделами Impact of dump generation and Dump types.
При захвате файла сброса SQL Server процесса (особенно фильтрованного файла сброса или полного файла сброса) в кластерном SQL Server или экземпляре SQL Server с экземпляром Always On availability group (AG) кластеризация SQL Server или AG может привести к сбой в другом узле, если файл сброса занимает слишком много времени. Чтобы предотвратить сбой, перед захватом файла сброса используйте следующие параметры. Изменение можно отменить после того, как будет взят файл сброса:
Улучшения продукта, чтобы уменьшить влияние на SQL Server
К последним версиям SQL Server добавлены три основных улучшения, которые уменьшают размер файла сброса и/или время создания свалки памяти:
Механизм фильтрации Bitmap.
Устранение повторных свалок по одной и той же проблеме.
Сокращение выходных данных в журнале ошибок.
Механизм фильтрации bitmap: SQL Server немного карты, которая отслеживает страницы памяти, которые будут исключены из фильтрованной свалки. Sqldumper.exe считывая bitmap и отфильтровывая страницы без необходимости чтения метаданных другого диспетчера памяти. Вы увидите следующие сообщения в журнале ошибок SQL Server, если bitmap включена или отключена соответственно:
Page exclusion bitmap is enabled. и Page exclusion bitmap is disabled.
Начиная с SQL Server 2016 ГОДА SP2 CU13 фильтрация bitmap включена по умолчанию.
Это включено по умолчанию в SQL Server RTM 2019. Его можно отключить с помощью T8095.
Устранение повторных свалок по одной и той же проблеме: Повторяемая свалка памяти по одной и той же проблеме устраняется. Используя подпись стека, SQL отслеживает, если исключение уже произошло, и не будет производить новую свалку памяти, если она уже существует. Это относится к нарушениям доступа, переполнению стеков, утверждений и исключений коррупции индекса. Это значительно уменьшает количество дискового пространства, используемого сбросами памяти, и не замораживает процесс, временно для создания свалки. Это было добавлено в SQL Server 2019 г.
Сокращенный выход в журнале Error: Контент, созданный в журнале SQL Server ошибки из одной свалки памяти, не может быть не только подавляющим, но и замедлял процесс создания свалки памяти из-за того, что вся эта информация должна быть сериализирована в текстовый формат в журнале Error. В SQL Server 2019 г. контент, хранимый в журнале Error при генерации сброса, значительно сократился, и он может выглядеть так:
Ранее SQL Server печатали сведения для каждого сеанса/потока, когда пользователь запускал ручную свалку.
Факторы, которые препятствуют или задерживают создание свалок памяти
На основе опыта поддержки Microsoft CSS известно, что несколько факторов вызывают задержки или препятствуют созданию свалок памяти.
Типы сброса
Описанные методы способны создавать три различных типа свалок: мини-свалки, полные свалки и фильтруемые свалки.
Мини-свалки со ссылкой на память
Этот тип сброса памяти — это снимок всех активных потоков процесса («потоковые стеки»), а также ограниченный экстракт памяти, ссылаясь на стеки потоков и некоторые другие данные процесса/потока. Обычно они имеют несколько мегабайт и быстро генерируются (от секунды до нескольких секунд). Даже более крупные серверные системы (с сотнями ЦП косвенного вождения огромного количества потоков в SQL Server процессе) редко превышает 20-30 МБ: размер мини-свалки не растет с размером SQL Server процесса. Этот тип сброса — тип по умолчанию, используемый SQL Server при автоматическом создании свалок памяти на исключениях, проблемах планировщика, проблемах с защелкой и т. д.
SQL Server в рамках встроенного приборного оборудования в определенных ситуациях будет создаваться автоматические «диагностические мини-свалки». Поэтому эта операция считается достаточно безопасной, SQL Server при необходимости она может запускаться автоматически.
Полные сбросы
Полная свалка памяти — это полная копия активного целевого пространства процесса. Таким образом, это включает все состояние потока, всю выделенную память процесса и все загруженные модули. Таким образом, у полных свалок будет размер, примерно такой же SQL Server процесса, который, в свою очередь, может быть почти таким же большим, как общая оперативная память системы. На больших серверах, посвященных одному экземпляру SQL Server, это может означать файл, который составляет несколько сотен гигабайт или более. Нет необходимости говорить, что создание такого файла займет много времени и, следовательно, будет вызывать длительное замораживание. Производительность диска для целевого файла сброса будет основным драйвером для замораживания времени. Этот вид сброса редко используется для SQL Server**, как объясняется в следующем описании типа.
Фильтруемая свалка
По мере того как размер оперативной памяти типичных серверов, работающих SQL Server, постоянно увеличивался, полные сбросы становились все более громоздкими. Поэтому были реализованы фильтруемые свалки: они являются подмножество полных свалок, где большие области структур памяти, относящиеся к SQL Server, намеренно игнорируются и не сериализируются на диск, так как они не приносят дополнительных значений устранения неполадок (как правило, страницы данных и индексов, некоторые внутренние кэши, такие как страницы данных Hekaton и память пула журналов). Это приводит к файлу, который меньше полной свалки, сохраняя при этом практически всю свою полезность, и это заменило полные сбросы в качестве предпочтительного варианта в подавляющем большинстве ситуаций, когда мини-свалок было недостаточно. Уменьшение размера по сравнению с полным сбросом может сильно отличаться, но это все равно довольно большой файл, который часто составляет 30-60% от SQL Server процесса, поэтому лучше планировать возможный размер, такой же большой, как полная свалка, как худший вариант, который должен оставить хороший запас прочности. Фильтруемая свалка может быть не обязательно быстрее, чем полная свалка в каждом случае: вопрос в том, будут ли доходы, привязанные к количеству избегаемого IO, превышать время, необходимое для реализации логики фильтра (так что скорость диска и скорость ЦП/оперативной памяти будут влиять на это).
Вы можете использовать Sqldumper.exe для создания файла сброса по запросу для любого приложения Windows Microsoft. Например, вы можете создать файл сброса для отладки проблемы приложения, если компьютер с Microsoft SQL Server не отвечает на запросы пользователей. Файл сброса может быть мини-файлом или полным файлом сброса. Фильтрованный файл сброса применим и осмыслен только в контексте SQL Server.
Процесс SQL Server вызывает утилиту Sqldumper.exe внутренне для создания файла сброса, когда процесс испытывает любые исключения. SQL Server передает флаги в Sqldumper.exe утилиту. Флаги трассировки можно использовать для изменения флагов, которые SQL Server в утилиту в контексте исключения или в контексте утверждения. Эти флаги трассировки находятся в диапазоне от 2540 до 2559. Эти флаги трассировки можно использовать для создания определенных типов файлов сброса. Например:
Если активны два или несколько флагов трассировки, параметр, указывающий на самую большую свалку памяти, будет соблюдаться. Например, если используются флаги трассировки 2551 и 2544, SQL Server создаст полную свалку памяти.
Создание свалки памяти для сбойов кластера
В сценариях сбой кластера SQL Server DLL может получить файл сброса перед сбойом, чтобы помочь в устранении неполадок. Если SQL Server DLL определяет, что ресурс SQL Server не работает, SQL Server DLL использует утилиту Sqldumper.exe для получения файла сброса SQL Server процесса. Чтобы убедиться, что Sqldumper.exe успешно создает файл сброса, необходимо задать в качестве необходимых условий следующие три свойства:
Если одно из свойств не установлено, Sqldumper.exe не может создать файл сброса. Предупреждение будет входить как в журнал событий, так и в журнал кластера всякий раз, когда ресурс будет доставлен в Сеть.
Конфигурация кластера для SQLDumper в SQL Server 2012 г. и более поздних версиях
Для изменения этих свойств можно использовать команду ALTER SERVER CONFIGURATION T-SQL. Например:
Кроме того, можно использовать скрипты PowerShell. Например, для имени экземпляра SQL2017AG:
Чтобы проверить примененные параметры, можно выполнить команду PowerShell:
Конфигурация кластера для SQLDumper SQL Server 2008/2008 R2 или Windows 2012 и более ранних версий
Чтобы установить свойства Sqldumper.exe для сбойной передачи кластера, выполните следующие действия:
Свойство Для набора свойства для определенного типа файла сброса введите соответствующую команду в командной подсказке и нажмите SqlDumperDumpFlags SqlDumperDumpFlags кнопку Ввод:
Весь файл сброса полного потока
Экземпляр по умолчанию
Экземпляр с именем
Весь файл мини-свалки потоков
Экземпляр по умолчанию
Экземпляр с именем
Фильтрация всего файла сброса потоков
Экземпляр по умолчанию
Экземпляр с именем
DirectoryPath является местообладателями каталога, в котором будет создан файл сброса, и он должен быть указан в кавычках («»).
является держателем времени в миллисекунд (ms).
Время создания файла сброса SQL Server зависит от конфигурации компьютера. Для компьютера с большим количеством воспоминаний время может быть значительным. Чтобы получить оценку времени, которое занимает процесс, используйте Sqldumper.exe, чтобы вручную создать файл сброса. Допустимые значения для SqlDumperDumpTimeOut свойства : от 10 000 мс до MAXDWORD. MAXDWORD представляет самое высокое значение в диапазоне типа данных DWORD (4294967295).
Чтобы убедиться, что параметры включены, можно выполнить следующую команду:
Удаление Sqldumper.exe свойств для сбойной передачи кластера
Чтобы удалить свойства Sqldumper.exe для неудачной остановки кластера, выполните следующие действия:
Экземпляр по умолчанию
Экземпляр с именем
Экземпляр по умолчанию
Экземпляр с именем
Экземпляр по умолчанию
Экземпляр с именем
Использование DBCC STACKDUMP
Команда может помочь вам создать свалку памяти в каталоге ЖУРНАЛА установки DBCC STACKDUMP SQL Server экземпляра. Команда по умолчанию создаст мини-команду со всеми потоками, которая имеет ограниченный размер и является адекватной для отражения состояния SQL Server процесса. Просто выполните следующую команду в SQL Server клиенте:
Расширенные функциональные возможности SQL Server 2019 г. см. в расширенных функциональных возможностях DBCC STACKDUMP DBCC STACKDUMP, внедренных в SQL Server 2019 г.
Чтобы этот метод создал фильтрованную свалку, включим флаги трассировки 2551 со следующей командой:
Чтобы создать полную свалку, используйте флаг трассировки 2544.
После получения файла сброса необходимо отключить флаг трассировки, используя следующую команду, чтобы не допустить случайного обновления всех дополнительных SQL Server минимиз до более крупных свалок:
Где TraceNumber флаг трассировки, который вы ранее включили, например 2551 или 2544.
В случае, если вы не уверены, какой флаг трассировки остается активным, можно выполнить:
Пустой набор результатов указывает, что флаг трассировки не активен. И наоборот, если 2551 по-прежнему активен, вы увидите:
| TraceFlag | Статус | Глобальные | Session |
|---|---|---|---|
| 2551 | 1 | 1 | 0 |
Включенное traceflag устройство DBCC TRACEON сбрасывается (удаляется) после перезапуска службы.
Расширенные функциональные возможности DBCC STACKDUMP, SQL Server 2019 г.
Начиная с SQL Server 2019 cu2, команда была расширена для поддержки создания свалок различных типов: мини, фильтруются, полные сбросы, что устраняет необходимость использования флагов DBCC STACKDUMP трассировки. Это также позволяет ограничить выход текста в дополнительном текстовом файле, который создается с помощью свалки памяти. Это может обеспечить видимый прирост производительности за SQLDumper.exe создания свалки памяти.
Это TEXT_DUMP = LIMITED параметр по умолчанию. Если вы хотите получить подробный вывод в файле SQLDump000X.txt, который можно TEXT_DUMP = DETAILED использовать.
Использование сценария PowerShell для создания файла сброса с помощью SQLDumper
Сохраните следующий код в качестве файла ps1, например SQLDumpHelper.ps1:
Запустите его из командной подсказки в качестве администратора с помощью следующей команды:
Или запустите его Windows PowerShell консоли и запустите в качестве администратора с помощью следующей команды:
Если вы никогда не выполняли сценарии PowerShell в вашей системе, вы можете получить сообщение об ошибке:
Вы должны включить возможность запускать их следующими шагами:
Начните Windows PowerShell консоли с параметром Run as Administrator. Изменить политику выполнения могут только члены группы администраторов на компьютере.
Включить запуск неподписаных скриптов по следующей команде:
Это позволит запускать неподписаные скрипты, которые вы создаете на локальном компьютере и подписанные скрипты из Интернета.

















