Spec-Zone.ru › MySQL 9.2

3.6 Подготовка вашей установки к обновлению

Перед обновлением до последней версии MySQL 9.2 убедитесь в готовности к обновлению вашего текущего сервера MySQL 9.1 или MySQL 8.4, выполнив предварительные проверки, описанные ниже. В противном случае процесс обновления может завершиться ошибкой.

Подсказка

Рассмотрите возможность использования , которая позволяет проверить, готовы ли серверные экземпляры MySQL к обновлению. Вы можете выбрать целевую версию сервера MySQL, для которой планируется обновление, от MySQL Server 8.0.11 до версии MySQL Server, соответствующей текущей версии MySQL Shell. Утилита проверки обновления выполняет автоматические проверки, относящиеся к указанной целевой версии, и сообщает вам о дополнительных проверках, которые необходимо выполнить вручную. Утилита проверки обновления работает со всеми выпусками MySQL (Bugfix, Innovation и LTS). Инструкции по установке MySQL Shell можно найти .

Предварительные проверки:

  1. Не должно быть следующих проблем:

    • Не должно быть таблиц, использующих устаревшие типы данных или функции.

    • Не должно быть файлов-сирот .frm.

    • Триггеры не должны иметь отсутствующего или пустого определяющего контекста или некорректного контекста создания (указанного атрибутами character_set_client, collation_connection, Database Collation, отображаемыми в SHOW TRIGGERS или таблицей INFORMATION_SCHEMA TRIGGERS). Любые такие триггеры необходимо выгрузить и восстановить для исправления проблемы.

    Для проверки этих проблем выполните следующую команду:

    mysqlcheck -u root -p --all-databases --check-upgrade
    

    Если mysqlcheck сообщит об ошибках, исправьте их.

  2. Не должно быть разнесенных таблиц, использующих движок хранения, который не поддерживает разнесение. Чтобы определить такие таблицы, выполните этот запрос:

    SELECT TABLE_SCHEMA, TABLE_NAME
        FROM INFORMATION_SCHEMA.TABLES
        WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
            AND CREATE_OPTIONS LIKE '%partitioned%';
    

    Любая таблица, указанная запросом, должна быть изменена для использования InnoDB или сделана неразнесенной. Чтобы изменить движок хранения таблицы на InnoDB, выполните это оператор:

    ALTER TABLE table_name ENGINE = INNODB;
    

    Сведения об преобразовании таблиц MyISAM в InnoDB см. в разделе Раздел 17.6.1.5, «Преобразование таблиц из MyISAM в InnoDB».

    Чтобы сделать разнесенную таблицу неразнесенной, выполните эту команду:

    ALTER TABLE table_name REMOVE PARTITIONING;
    
  3. Некоторые ключевые слова могут быть зарезервированы в MySQL 9.2, если ранее они не были зарезервированы. См. Раздел 11.3, «Ключевые слова и зарезервированные слова». Это может привести к тому, что слова, ранее использовавшиеся в качестве идентификаторов, станут недопустимыми. Для исправления затронутых операторов используйте цитирование идентификаторов. См. Раздел 11.2, «Имена объектов схемы».

  4. Не должно быть таблиц в базе данных системы MySQL 9.1 mysql, которые имеют то же имя, что и таблица, используемая словарем данных MySQL 9.2. Для определения таблиц с такими именами выполните этот запрос:

    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE
        LOWER(TABLE_SCHEMA) = 'mysql'
        AND
        LOWER(TABLE_NAME) IN
        (
        'catalogs',
        'character_sets',
        'check_constraints',
        'collations',
        'column_statistics',
        'column_type_elements',
        'columns',
        'dd_properties',
        'events',
        'foreign_key_column_usage',
        'foreign_keys',
        'index_column_usage',
        'index_partitions',
        'index_stats',
        'indexes',
        'parameter_type_elements',
        'parameters',
        'resource_groups',
        'routines',
        'schemata',
        'st_spatial_reference_systems',
        'table_partition_values',
        'table_partitions',
        'table_stats',
        'tables',
        'tablespace_files',
        'tablespaces',
        'triggers',
        'view_routine_usage',
        'view_table_usage'
        );
    

    Любые таблицы, указанные запросом, должны быть удалены или переименованы (используйте RENAME TABLE). Это также может потребовать изменений в приложениях, использующих затронутые таблицы.

  5. Не должно быть таблиц, у которых имена ограничений внешнего ключа длиннее 64 символов. Используйте этот запрос для определения таблиц с именами ограничений, которые слишком длинные:

    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME IN
      (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),
                   INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1)
       FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN
       WHERE LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);
    

    Для таблицы с именем ограничения, превышающим 64 символа, удалите ограничение и добавьте его обратно с именем ограничения, не превышающим 64 символа (используйте ALTER TABLE).

  6. Не должно быть определений устаревших режимов SQL, заданных переменной системы sql_mode. Попытка использования устаревшего режима SQL предотвращает запуск MySQL 9.2. Приложения, использующие устаревшие режимы SQL, должны быть пересмотрены, чтобы избежать их использования. Сведения об удаленных в MySQL 9.2 режимах SQL см. .

  7. Обновляйте только серверный экземпляр MySQL, который был должным образом остановлен. Если экземпляр неожиданно завершил работу, перезапустите экземпляр и остановите его с помощью innodb_fast_shutdown=0 перед обновлением.

  8. Не должно быть представлений с явно определенными именами столбцов, превышающими 64 символа (представления со столбцами до 255 символов разрешались в MySQL 5.7). Чтобы избежать ошибок обновления, такие представления необходимо изменить перед обновлением. В настоящее время единственный способ определения представлений со столбцами, длина имени которых превышает 64 символа, — это проверить определение представления с помощью SHOW CREATE VIEW. Вы также можете проверить определения представлений, обращаясь к таблице схемы информации VIEWS.

  9. Не должно быть таблиц или хранимых процедур с отдельными ENUM или SET элементами столбцов, длина которых превышает 255 символов или 1020 байт. В MySQL 9.2 максимальная длина символа отдельного ENUM или SET элемента столбца составляет 255 символов, а максимальная длина в байтах — 1020 байт. (Предел в 1020 байт поддерживает многобайтовые наборы символов). Перед обновлением до MySQL 8.0 измените любые ENUM или SET элементы столбцов, которые превышают новые ограничения. В противном случае обновление завершится ошибкой.

  10. Ваша установка MySQL 9.1 не должна использовать функции, которые не поддерживаются MySQL 9.2. Любые изменения здесь обязательно зависят от установки, но следующий пример иллюстрирует, что нужно искать:

    Некоторые параметры запуска сервера и системные переменные были удалены в MySQL 9.2. См. Удаленные функции в MySQL 9.2 и Раздел 1.5, «Добавленные, устаревшие или удаленные параметры, переменные состояния и параметры сервера в MySQL 9.2». Если вы используете какие-либо из них, для обновления требуются изменения конфигурации.

  11. Если вы хотите изменить значение lower_case_table_names на 1 во время обновления, убедитесь, что имена схем и таблиц являются строчными перед обновлением. В противном случае может произойти сбой из-за несовпадения регистра имен схемы или таблицы. Вы можете использовать следующие запросы для проверки имен схем и таблиц, содержащих заглавные буквы:

    mysql> select TABLE_NAME, if(sha(TABLE_NAME) !=sha(lower(TABLE_NAME)),'Yes','No') as UpperCase from information_schema.tables;
            

    Если lower_case_table_names=1, имена таблиц и схем проверяются в процессе обновления, чтобы убедиться, что все символы являются строчными. Если имена таблиц или схем содержат заглавные буквы, процесс обновления завершится ошибкой.

    Примечание

    Изменение значения lower_case_table_names во время обновления не рекомендуется.

Если обновление до MySQL 9.2 завершается сбоем из-за каких-либо проблем, описанных выше, сервер отменяет все изменения в каталоге данных. В этом случае удалите все файлы журнала повторных операций и перезапустите сервер MySQL 9.1 в существующем каталоге данных, чтобы устранить ошибки. Файлы журнала повторных операций (ib_logfile*) по умолчанию находятся в каталоге данных MySQL. После исправления ошибок выполните медленную остановку (установив innodb_fast_shutdown=0), прежде чем пытаться выполнить обновление снова.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/upgrade-prerequisites.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API