Рейтинг:2

Использование необработанного диска MySQL в Windows?

флаг ru

У меня возникли проблемы с тем, чтобы MySQL 5.7 использовал необработанный диск (блочное устройство в обход файловой системы) для своих данных. Мое понимание документация заключается в том, что при первом запуске mysqld конфигурация должна иметь новый ключевое слово в значении для innodb_data_file_path, и его следует заменить только сырой на 2-е исполнение.

[mysqld]
innodb_data_home_dir =
innodb_data_file_path = //./E::512Gnewraw

часовой пояс по умолчанию = СИСТЕМА
базовый_каталог = C:/MySQLSrv/
tmpdir = F:/MySQLTemp/
каталог данных = F:/MySQLData-raw/
pid-файл = mysql.pid
порт = 3306
сокет = MySQL
включить именованный канал = 1
пропустить внешнюю блокировку
key_buffer_size = 16M
innodb_log_file_size = 26547M
max_allowed_packet = 90M
table_open_cache = 64
sort_buffer_size = 512 КБ
net_buffer_length = 8 КБ
read_buffer_size = 256 КБ
read_rnd_buffer_size = 512 КБ
myisam_sort_buffer_size = 8M
innodb_page_size = 64 КБ

E: и F: - это разделы на большом (~ 35 ТБ) виртуальном диске - разделы GPT, первый раздел установлен как «неформатированный» системой управления дисками Windows, а второй - обычная NTFS на 4 ТБ. (Я установил размер файла данных innodb на 512 ГБ только временно, после того, как не смог заставить это работать с 4 ТБ, что я действительно хочу для теста.) По сути, я запускаю MySQL с нуля, поэтому мое первое выполнение mysqld было с --initialize-небезопасно вариант. Это заняло некоторое время (примерно столько, сколько я ожидал, учитывая размер, настроенный для файла данных, и наблюдаемую скорость передачи данных в диспетчере задач) и в конечном итоге создал обычную файловую структуру в настроенном каталог данных. Это включает в себя mysql каталог с несколькими *.ibd файлы, что, как я не уверен, должно произойти. Тем не менее, в журналах mySQL нет ошибок, а строка прогресса, заканчивающаяся на 524200, предполагает, что табличное пространство было инициализировано.

2021-10-21T09:47:55.686131Z 0 [Предупреждение] TIMESTAMP с неявным значением DEFAULT устарело. Пожалуйста, используйте опцию сервера --explicit_defaults_for_timestamp (подробности см. в документации).
2021-10-21T09:47:55.692239Z 0 [Предупреждение] InnoDB: innodb-page-size был изменен со значения по умолчанию 16384 на 65536.
 100 200 300 400 500 <снип> 523900 524000 524100 524200
 100 200 300 400 500 <срез> 26200 26300 26400 26500
 100 200 300 400 500 <срез> 26200 26300 26400 26500
2021-10-21T09:56:54.318875Z 0 [Предупреждение] InnoDB: созданы новые файлы журнала, LSN = 130881
2021-10-21T09:56:54.471343Z 0 [Предупреждение] InnoDB: создание системных таблиц ограничений внешнего ключа.
2021-10-21T09:56:54.533557Z 0 [Предупреждение] Существующий UUID не найден, поэтому мы предполагаем, что этот сервер был запущен впервые. Создание нового UUID: 389cd84c-3255-11ec-8327-005056971dce.
2021-10-21T09:56:54.536035Z 0 [Предупреждение] Таблица Gtid не готова к использованию. Таблица «mysql.gtid_executed» не может быть открыта.
2021-10-21T09:56:56.339721Z 0 [Предупреждение] Сертификат ЦС ca.pem является самозаверяющим.
2021-10-21T09:56:56.436944Z 1 [Внимание] root@localhost создан с пустым паролем! Пожалуйста, рассмотрите возможность отключения опции --initialize-insecure.

Поэтому я переключаю опцию на сыройи запустите службу (у меня она уже была создана ранее). Служба немедленно прекращает работу, регистрируя, что она хотела создать табличное пространство (снова?), потому что не смогла его найти, и это плохая идея, если журналы повторного выполнения существуют — что они и сделали, --initialize-небезопасно option создал их, как и ожидалось.

2021-10-21T10:08:09.625276Z 0 [Предупреждение] TIMESTAMP с неявным значением DEFAULT устарело. Пожалуйста, используйте опцию сервера --explicit_defaults_for_timestamp (подробности см. в документации).
2021-10-21T10:08:09.625424Z 0 [Примечание] --secure-file-priv имеет значение NULL. Операции, связанные с импортом и экспортом данных, отключены
2021-10-21T10:08:09.625800Z 0 [Примечание] MySQL (mysqld 5.7.29) запускается как процесс 3356 ...
2021-10-21T10:08:09.634217Z 0 [Предупреждение] InnoDB: innodb-page-size был изменен со значения по умолчанию 16384 на 65536.
2021-10-21T10:08:09.634627Z 0 [Примечание] InnoDB: мьютексы и rw_locks используют взаимосвязанные функции Windows
2021-10-21T10:08:09.634873Z 0 [Примечание] InnoDB: использует мьютексы событий
2021-10-21T10:08:09.635033Z 0 [Примечание] InnoDB: _mm_lfence() и _mm_sfence() используются для барьера памяти
2021-10-21T10:08:09.635262Z 0 [Примечание] InnoDB: сжатые таблицы используют zlib 1.2.11
2021-10-21T10:08:09.636051Z 0 [Примечание] InnoDB: Количество пулов: 1
2021-10-21T10:08:09.636460Z 0 [Примечание] InnoDB: инструкции CPU crc32 не используются.
2021-10-21T10:08:09.638441Z 0 [Примечание] InnoDB: инициализация пула буферов, общий размер = 52 ГБ, экземпляров = 16, размер фрагмента = 128 МБ
2021-10-21T10:08:10.597917Z 0 [Примечание] InnoDB: завершена инициализация буферного пула
2021-10-21T10:08:11.118090Z 0 [Примечание] InnoDB: первый файл данных innodb_system '//./E:' не существовал. Новое табличное пространство будет создано!
2021-10-21T10:08:11.118733Z 0 [ОШИБКА] InnoDB: существует файл журнала повторов «.\ib_logfile0». Не рекомендуется создавать системное табличное пространство с существующими файлами журнала повторов. Перед созданием нового системного табличного пространства удалите все файлы журнала повторов.
2021-10-21T10:08:11.119256Z 0 [ОШИБКА] InnoDB: создание базы данных InnoDB было прервано из-за ошибки Общая ошибка. Возможно, вам придется удалить файл ibdata1 перед повторной попыткой запуска.
2021-10-21T10:08:11.336787Z 0 [ОШИБКА] Функция инициализации плагина InnoDB вернула ошибку.
2021-10-21T10:08:11.337058Z 0 [ОШИБКА] Ошибка регистрации плагина InnoDB в качестве STORAGE ENGINE.
2021-10-21T10:08:11.337286Z 0 [ОШИБКА] Не удалось инициализировать встроенные плагины.
2021-10-21T10:08:11.337474Z 0 [ОШИБКА] Прерывание

2021-10-21T10:08:11.337615Z 0 [Примечание] Конец бинлога
2021-10-21T10:08:11.337839Z 0 [Примечание] Отключение плагина CSV
2021-10-21T10:08:11.338806Z 0 [Примечание] MySQL: отключение завершено

Что мне здесь не хватает? Почему MySQL не находит файл необработанных данных на диске после его первой инициализации?

Рейтинг:0
флаг jp

Похоже, вы не следуете этой конкретной детали из указанной документации.

//./ соответствует синтаксису Windows \.\ для доступа к физическим дискам.

Windows имеет другой синтаксис, чем ОС Linux.

флаг ru
Вы неправильно интерпретируете то, что говорит эта деталь - обратная косая черта - это родная нотация Windows, но MySQL ожидает косую черту в файле конфигурации, поскольку она использует обратную косую черту в качестве escape-символа. Попытка использовать обратную косую черту приводит к ошибке: ```2021-10-22T19:29:29.426724Z 0 [ОШИБКА] InnoDB: файл \.\E:: 'open' вернул ошибку ОС 223. Невозможно продолжить операцию```
флаг ru
И просто для полноты я также пробовал использовать обратную косую черту в режиме escape, т.е. ввод `\.\E:` в файле конфигурации. Результат был почти идентичен описанному в вопросе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.