П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180123 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78190 раз(а).

Учебник HTML.
Просмотров 75547 раз(а).

Руководство по PHP5.
Просмотров 46598 раз(а).

Хостинг через призму DNS.
Просмотров 53992 раз(а).

Подборка текстов стандартных документов.
Просмотров 46521 раз(а).

Учебник PHP - Самоучитель
Просмотров 52677 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53275 раз(а).

Внешние атаки...
Просмотров 43076 раз(а).

Учебник PHP.
Просмотров 38654 раз(а).

SSI в примерах.
Просмотров 28589 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 2. Установка MySQL
Пред.    След.

2.5. Апгрейд/даунгрейд MySQL
2.5.2. Модернизация с версии 3.23 до версии 4.0

В общем случае, вот что вам следует сделать для апгрейда к версии 4.0 с более старой:

  • Выполнить скрипт mysql_fix_privilege_tables чтобы добавить новые привилегии и возможности в таблицы привилегий MySQL.

  • Подредактировать скрипты запуска MySQL или конфигурационные файлы, чтобы не использовать устаревшие опции, описанные ниже.

  • Преобразовать ваши старые ISAM-файлы в формат MyISAM следующей командой: mysql_convert_table_format база данных. Обратите внимание, это нужно делать только если все таблицы в базе данных являются таблицами типа ISAM или MyISAM. Если это не тот случай, вам тогда следует выполнить ALTER TABLE имя_таблицы TYPE=MyISAM для всех ISAM-таблиц.

  • Удостоверьтесь, что у вас не используется никакие клиенты MySQL, что используют динамические библиотеки (например, Perl Msql-Mysql-modules). Если у вас есть такие, их следует перекомпилировать, т.к. структуры в libmysqlclient.so изменились.

MySQL 4.0 будет работать, даже если вы не выполните эти шагы, но у вас не будет возможности использовать новые привилегии, которые предоставляет MySQL 4.0, и у вас могут быть проблемы при дальнейшем апгрейде к 4.1 или более новым серверам. Формат ISAM в MySQL 4.0 все еще работает, но он уже морально устарел и будет исключен из версии MySQL 5.0.

Старые клиенты должны работать с версией 4.0 без каких-либо проблем.

И даже если вы выполните эти шаги, вы сможете произвести даунгрейд к MySQL 3.23.52 или более новой, если у вас возникнут проблемы с MySQL 4.0. В этом случае вам потребуется выполнить mysqldump на всех таблицах, использующих полнотекстовые индексы и восстановить dump на версии 3.23. Причина заключается в том, что MySQL 4.0 использует новый формат полнотекстовых индексов.

Вот подробный список того, на что следует обратить внимание при апгрейде к 4.0:

  • В MySQL 4.0 появилось большое количество новых привилегий в таблице mysql.user. See Раздел 4.3.1, «Синтаксис команд GRANT и REVOKE».

    Чтобы заставить эти новые привилегии работать, следует запустить скрипт mysql_fix_privilege_tables. До выполнения данного скрипта у всех пользователей будут привилегии SHOW DATABASES, CREATE TEMPORARY TABLES и LOCK TABLES. Значения для привилегий SUPER и EXECUTE берутся из PROCESS, для REPLICATION SLAVE и REPLICATION CLIENT - из FILE.

    Чтобы скрипты, создающие новых пользователей, могли использовать новые привилегии, их нужно модифицировать. Если в этих скриптах не используется команда GRANT, то сейчас самое время изменить их.

    В версии 4.0.2 опция --safe-show-database устарела и не рекомендуется (и она больше ничего не делает). See Раздел 4.2.3, «Опции запуска mysqld, относящиеся к безопасности».

    Если в версии 4.0.2 для новых пользователей возникают ошибки отказа в доступе, то следует проверить, не требуются ли вам некоторые новые привилегии, которые не были нужны раньше. В частности, для новых репликаций понадобится REPLICATION SLAVE (вместо FILE).

  • Параметры запуска myisam_max_extra_sort_file_size и myisam_max_extra_sort_file_size теперь указываются в байтах (до 4.0.3 указывались в мегабайтах).

    Внешняя блокировка файлов MyISAM/ISAM теперь выключена по умолчанию. Можно включить ее обратно опцией --external-locking. Для большинства пользователей этого никогда не потребуется делать.

  • Следующие переменные/опции были переименованы:

    ИзВ.
    myisam_bulk_insert_tree_sizebulk_insert_buffer_size
    query_cache_startup_typequery_cache_type
    record_bufferread_buffer_size
    record_rnd_bufferread_rnd_buffer_size
    sort_buffersort_buffer_size
    warningslog-warnings
    err-log--log-error (для mysqld_safe)

    Опции запуска record_buffer, sort_buffer и warnings все еще работают в MySQL 4.0, но считаются уже морально устаревшими.

  • Следующие SQL-переменные переименованы.

    ИзВ.
    SQL_BIG_TABLESBIG_TABLES
    SQL_LOW_PRIORITY_UPDATESLOW_PRIORITY_UPDATES
    SQL_MAX_JOIN_SIZEMAX_JOIN_SIZE
    QUERY_CACHE_TYPEQUERY_CACHE_TYPE

    Старые имена в MySQL 4.0 работают, но уже не рекомендованы к использованию.

  • Вы должны использовать SET GLOBAL SQL_SLAVE_SKIP_COUNTER=# вместо SET SQL_SLAVE_SKIP_COUNTER=#.

  • Переименовали опцию запуска mysqld --skip-locking в --skip-external-locking и --enable-locking в --external-locking.

  • SHOW MASTER STATUS теперь возвращает пустой результат если двоичный журнал обновлений не включен.

  • SHOW SLAVE STATUS возвращает пустой результат если подчиненный сервер не инициализирован.

  • mysqld теперь обладает опцией --temp-pool включенной по умолчанию, т.к. это дает лучшую производительность на некоторых ОС (в основном, на Linux).

  • Столбцы DOUBLE и FLOAT теперь учитывают флаг UNSIGNED при хранении (раньше UNSIGNED игнорировался для этих столбцов).

  • ORDER BY столбец DESC теперь сортирует величины NULL в первую очередь; в 3.23 это было не всегда так. Внимание: в MySQL 4.0.11 восстановлено оригинальное поведение.

  • SHOW INDEX имеет на 2 столбца больше (Null и Index_type), чем в версии 3.23.

  • CHECK, SIGNED, LOCALTIME и LOCALTIMESTAMP теперь являются зарезервированными словами.

  • Результат работы всех поразрядных операторов |, &, <<, >> и ~ сейчас является беззнаковым. Это может вызвать проблемы при использовании их в контексте, где желателен результат со знаком. See Раздел 6.3.5, «Функции приведения типов».

  • Замечание: результат операции вычитания между целыми величинами, одна из которых имеет тип UNSIGNED, будет беззнаковым! Другими словами, перед модернизацией до MySQL 4.0 вы должны проверить свои приложения для случаев, где производится вычитание величины из беззнакового объекта и предполагается ответ с отрицательным знаком, или вычитание беззнаковой величины из целочисленного столбца. Данный режим можно заблокировать, используя опцию --sql-mode=NO_UNSIGNED_SUBTRACTION при запуске mysqld. See Раздел 6.3.5, «Функции приведения типов».

  • Для того чтобы использовать MATCH ... AGAINST (... IN BOOLEAN MODE) на таблицах, следует перестроить их заново при помощи REPAIR TABLE table_name USE_FRM.

  • LOCATE() и INSTR() чувствительны к регистру, если один из аргументов является двоичной строкой. В противном случае они не зависят от регистра.

  • STRCMP() при выполнении сравнений сейчас использует текущий набор символов; это означает, что операция сравнения по умолчанию начиная с данной версии является независимой от регистра.

  • HEX(string) сейчас возвращает символы строки, преобразованные в шестнадцатеричные. Если необходимо преобразовать число в шестнадцатеричное представление, убедитесь, что HEX() вызывается с числовым аргументом.

  • В версии 3.23 в команде INSERT INTO ... SELECT параметр IGNORE всегда был разрешен. В версии 4.0.1 MySQL остановится (и, возможно, произойдет откат) в случае ошибки, если IGNORE не задан явно.

  • Скрипт safe_mysqld переименован в mysqld_safe. Некоторое время мы будем включать safe_mysqld в дистрибутив как символическую ссылку на mysqld_safe.

  • Старые функции C API mysql_drop_db, mysql_create_db и mysql_connect больше не будут поддерживаться, если вы не скомпилируете MySQL с CFLAGS=-DUSE_OLD_FUNCTIONS). Вместо перекомпиляции лучше пересобрать клиента для использования нового 4.0 API.

  • В структуре MYSQL_FIELD величины length и max_length изменены с unsigned int на unsigned long. Это не должно вызывать проблем, за исключением того, что при использовании величин с такими типами в качестве аргументов в функциях класса printf() могут генерироваться предупреждающие сообщения.

  • Если необходимо удалить из таблицы все строки, но вам не нужно знать, сколько строк было удалено, следует использовать TRUNCATE TABLE при (поскольку TRUNCATE TABLE значительно быстрее, чем DELETE FROM table_name).

  • При попытке выполнить TRUNCATE TABLE или DROP DATABASE при наличии активной команды LOCK TABLES или транзакции вы получите ошибку.

  • Для хранения величин в столбцах BIGINT необходимо использовать целые числа (вместо строк, как было в MySQL 3.23). Возможность использования строк для данного случая пока еще работает, но применение целых чисел более эффективно.

  • Изменен формат SHOW OPEN TABLE.

  • Многопоточные клиенты должны использовать mysql_thread_init() и mysql_thread_end(). See Раздел 8.4.8, «Как создать клиентскую программу с потоками».

  • При желании перекомпилировать модуль Perl DBD::mysql необходимо получить версию Msql-Mysql-modules 1.2218 или более новую, поскольку в более старых модулях DBD использовался не поддерживаемый вызов функции drop_db().

  • В версии 4.0 RAND(seed) возвращает иные последовательности случайных чисел, чем в 3.23; это сделано для того, чтобы лучше различать RAND(seed) и RAND(seed+1).

  • Тип результата, возвращаемый IFNULL(A,B) теперь по умолчанию устанавливается более "общий" по отношению к типам A и B. Порядок выбора - STRING, REAL или INTEGER.


Назад Начало Главы Начало Раздела Вперед

Пред. Глава След. Глава
Глава 1. Общая информация Начало Книги Глава 3. Учебное пособие по MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru