|
Bog BOS: MySQL: старые материалы
|
Последнее изменение файла: 2015.07.22
Скопировано с www.bog.pp.ru: 2024.11.23
Bog BOS: MySQL: старые материалы
Основной материал по MySQL,
а в этой статье описываются:
- создать директорию для сборки, распаковать в нее mysql-4.1.8.tar.gz (взять на http://download.sourceforge.net/mirrors/mysql/ и проверить md5, GnuPG)
- в версии 4.1.8 в configure вместо shrext написано shrext_cmds, из-за чего
не собираются разделяемые библиотеки
- иметь gcc лучше, чем 2.95.2 (gcc 3.2)
- иметь /usr/local/lib и /usr/local/mysql/lib/mysql в /etc/ld.so.conf (ldconfig)
- создать группу mysql
- создать пользователя mysql (в группе mysql) (зачем ему bash?)
- ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-mysqld-user=mysql --without-debug --with-embedded-server --with-embedded-privilege-control --with-openssl --enable-assembler --with-charset=utf8 --with-extra-charsets=all CFLAGS="-mcpu=pentium4" CXXFLAGS="-mcpu=pentium4 -felide-constructors" (--with-libwrap выдаёт ошибки при компиляции)
- если upgrade, то остановить mysql, сохранить базы данных и my.cfg (не забыть потом удалить!), прочитать главу в руководстве про upgrade
- make (188 MB)
- make install (как root)(44 MB, из них 10 МБ - тест)
- /usr/local/mysql/include/mysql
- /usr/local/mysql/info
- /usr/local/mysql/man
- /usr/local/mysql/lib/mysql (libdbug, libheap, libmerge, libmyisam, libmyisammrg, libmysqlclient (.a и .so.14.0.0), libmysqld, libmystrings, libmysys, libnisam, libvio); эту директорию указывать для libtool, либо занести в /etc/ld.so.conf
- /usr/local/mysql/bin (comp_err, isamchk, isamlog, my_print_defaults, myisamchk, myisamlog, myisampack, myisam_ftdump, mysql, mysqladmin, mysqlbinlog, mysqlcheck, mysqlshow, mysqldump, mysqlimport, mysqltest, mysqlmanagerc, mysqlmanager-pwgen, mysql_waitpid, mysqlbug, pack_isam, perror, replace, resolve_stack_dump, resolveip, client_test, msql2mysql, mysql_config, mysql_convert_table_format, mysql_create_system_tables, mysqld_multi, mysqld_safe, mysqldumpslow, mysql_explain_log, mysql_find_rows, mysql_fix_extensions, mysql_fix_privilege_tables, mysqlhotcopy, mysql_install_db, mysql_secure_installation, mysql_setpermission, mysql_tableinfo, mysql_tzinfo_to_sql, mysql_zap)
- /usr/local/mysql/share/mysql (сообщения об ошибках, таблицы кодировок; mi_test_all; mi_test_all.res)
- /usr/local/mysql/libexec (mysqld)
- /usr/local/mysql/sql-bench
- /usr/local/mysql/mysql-test
- /usr/local/mysql/data (базы данных, конфигурация, журналы, pid-файл)
- в 4.1.7 закомментировать fixpath в /usr/local/mysql/bin/mysql_config
- ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
- cd /usr/local/mysql
- bin/mysql_install_db --user=mysql (при первой установке обязательно,
создание таблиц с правами, пользователя root
(все права!) и анонимного пользователя без паролей, таблицы help;
не портит существующие таблицы прав доступа)
- скопировать share/mysql/my-medium.cnf в data/my.cnf и слегка отредактировать [mysqld]
- socket=имя-файла под Unix-socket (и в раздел [client] тоже)
- skip-locking (не блокировать доступ к данным от ДРУГИХ процессов)
- параметры оптимизации
- skip-networking #если не нужен доступ по TCP/IP (а еще лучше использовать ssh + port forward)
- log-bin #журнал изменений для репликации
- server-id=1 # идентификатор мастер-сервера репликации
- log-slow-queries
- log-update #журнал изменений
- secure
- safe-show-database
- skip-show-database
- set-variable = max_connections=500
- раскомментировать переменные InnoDB
- chown -R root:mysql /usr/local/mysql (как root)
- chown -R mysql /usr/local/mysql/data (mysql не нужны права на запись для my.cnf)
- cp share/mysql/mysql.server /etc/rc.d/init.d/mysql
- chkconfig --add mysql
- service mysql start (ручной запуск для проверки)
- простая проверка работоспособности:
/usr/local/mysql/bin/mysqladmin version
/usr/local/mysql/bin/mysqlshow -u root mysql
- /usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | /usr/local/mysql/bin/mysql -u root mysql -p
- установка интерфейса с Perl
- # perl -MCPAN -e shell
- [install Data::Dumper]
- [install DBI]
- cpan> [force] install DBD::mysql
- установка пароля администратора сервера: mysql -u root
- SELECT Host, User FROM mysql.user;
- SET PASSWORD FOR 'root'@'localhost' = PASSWORD('пароль-администратора');
- SET PASSWORD FOR 'root'@'имя-хоста' = PASSWORD('пароль-администратора');
- тестирование
- зайти в sql-bench
- ./run-all-tests --user=test (нужны права для записи в директорию output,
час времени и 200 МБ на диске)
- можно удалить sql-bench и mysql-test
- настроить права доступа (как минимум, убрать анонимный доступ к test, test_):
mysql -u root
- SELECT Host, User FROM mysql.user;
- DELETE FROM mysql.user WHERE User = '';
- FLUSH PRIVILEGES;
- /usr/local/mysql/bin/mysqladmin -u root -p drop test
- прочитать и выполнить указания по обновлению версии
(обычно требуется выполнить mysql_fix_privilege_tables)
- иметь gcc лучше, чем 2.8.1 (egcc 1.0.2), рекомендуется 2.95.2
- создать директорию для сборки, распаковать в нее mysql-3.23.32.tar.gz/mysql-3.23.37.tar.gz (взять на http://download.sourceforge.net/mirrors/mysql/)
- для версии ранее 3.23.34 распаковать туда db-3.2.3h.tar.gz (это специальная версия bdb для MySQL)
- создать группу mysql
- создать пользователя mysql (в группе mysql) (зачем ему bash?)
- ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-unix-socket-path=путь --with-mysqld-user=mysql --disable-large-files --with-libwrap --without-debug --with-charset=cp1251 --with-extra-charsets=all --with-berkeley-db
- make (70MB/91MB)
- если upgrade, то остановить mysql, сохранить базы данных и my.cfg (не забыть потом удалить!)
- make install (как root)(16 MB, из них 5МБ - тест)
- /usr/local/mysql/include/mysql
- /usr/local/mysql/info
- /usr/local/mysql/man
- /usr/local/mysql/lib/mysql (libdbug, libheap, libmerge, libmyisam, libmyisammrg, libmysqlclient, libmystrings, libmysys, libnisam); эту директорию указывать для libtool, либо занести в /etc/ld.so.conf
- /usr/local/mysql/bin (comp_err, isamchk, isamlog, my_print_defaults, myisamchk, myisamlog, myisampack, mysql, mysqladmin, mysqlbinlog, mysqlshow, mysqldump, mysqlimport, mysqltest, pack_isam, perror, replace, resolve_stack_dump, resolveip, скрипты )
- /usr/local/mysql/share/mysql (сообщения об ошибках - koi8-r, таблицы кодировок - cp1251, koi8-r; mi_test_all; mi_test_all.res)
- /usr/local/mysql/libexec (mysqld)
- /usr/local/mysql/sql-bench
- /usr/local/mysql/mysql-test
- /usr/local/mysql/data (базы данных, конфигурация, журналы, pid-файл)
- при первой установке: scripts/mysql_install_db (как root - создание таблиц с правами доступа, дает все права пользователю root без пароля и позволяет делать все с базами test и test_*, кроме раздачи привилегий)
- chown -R root:mysql /usr/local/mysql (как root)
- chown -R mysql /usr/local/mysql/data (и отдельную директорию для mysql.sockets с правами чтения для всех; mysql не нужны права на запись для my.cnf)
- support-files/mysql.server в /etc/rc.d/init.d для автоматического запуска и дать ему права на исполнение и сделать линк K00mysql из rc0.d и rc6.d на него, S99mysql из rc2.d, rc3.d и rc5.d на него
- скопировать my-medium.cnf в /usr/local/mysql/data/my.cnf и слегка отредактировать [mysqld]
- socket=имя-файла под Unix-socket (и в раздел [client] тоже)
- skip-locking (не блокировать доступ к данным от ДРУГИХ процессов)
- log-bin #журнал изменений для репликации
- log-slow-queries
- log-update #журнал изменений
- #secure - говорит, что нет такой опции
- skip-networking #если не нужен доступ по TCP/IP (а еще лучше использовать ssh + port forward)
- safe-show-database
- skip-show-database
- server-id=1 # что это?
- куча set-variable из исходного файла
- set-variable = max_connections=500
- тестовый запуск: /usr/local/mysql/bin/safe_mysqld --user=mysql (как root)(или сразу /etc/rc.d/rc3.d/S99mysql start)
- /usr/local/mysql/bin/mysqladmin -u root -p password 'пароль' (при запросе пароля нажать Enter)
- /usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain -p password 'пароль' (надо ли?)
- установка интерфейса с Perl
- взять на (было на http://www.mysql.com/Downloads/Contrib/) модули Data-Dumper, DBI и Msql-Mysql-modules
- каждый распаковать в отдельную директорию (Msql-Mysql-modules последним)
- зайти в нее
- perl Makefile.PL (опционально хочет RPC::PlServer, RPC::PlClient, Storable, Net::Daemon).
- make
- make test (mysqld должен работать)
- make install (как root)
- тестирование
- зайти в sql-bench
- ./run-all-tests --user=test (нужны права для записи в директорию output,
час времени и 200 МБ на диске)(connect/disconnect временами грохает mysqld!)
- можно удалить sql-bench и mysql-test
- настроить права доступа (как минимум, убрать анонимный доступ)
5.5.41 MariaDB (RHEL 7.1) относительно 5.5.37
- обещается полная совместимость MariaDB 5.5 с MySQL 5.5 (данные двоичнно совместимы,
имена файлов одинаковы, протоколы и API одинаковы, клиенты mysql работают с сервером MariaDB)
- требуется запуск mysql_upgrade
- проблемы с PHP5
- имена пакетов включают строку mariadb вместо mysql
- секция [mariadb] в my.cnf и т.д.
- другой алгоритм CHECKSUM TABLE
- другой формат slow query log
- другая реализация пула потоков
- MariaDB имеет дополнительные механизмы хранения: Aria (улучшенный MyISAM, ранее назывался Maria, переменные aria_*),
XtraDB (ускоренная версия InnoDB от Percona, по умолчанию, имена переменных совпадают с innodb, ignore_builtin_innodb, plugin-load=ha_xtradb,
форматы хранения: COMPACT, REDUNDANT, COMPRESSED, DYNAMIC),
Cassandra (NoSQL, в 10.0), CONNECT (внешнее хранение, в 10.0), FederatedX (замена Federated), TokuDB (транзакции, сжатие),
Mroonga (полнотекстовый поиск), OQGRAPH (есть в 5.2 и 10.0), ScaleDB (распределённое хранение и обработка),
Sequence (последовательный доступ, в 10.0), SphinxSE (полнотекстовый поиск с использованием Sphinx),
Spider (партиционирование между серверами, в 10.0)
- виртуальные колонки
- работа с GIS
- устарело timed_mutexes
5.5.37 Community Server (RHEL 5.10) относительно 5.5.8
- плагин аутентификации auth_socket (определяется системный пользователь)
- клиентский плагин аутентификации mysql_clear_password
- утилита mysql_plugin для управления плагинами
- устарело mysqld --safe-mode
- устарели SHOW AUTHORS и SHOW CONTRIBUTORS
- переменные Innodb_buffer_pool_bytes_data и Innodb_buffer_pool_bytes_dirty
- переменная innodb_print_all_deadlocks
- переменная audit_log_format
5.5.8 (General Availability) Community Server относительно 5.1.73
- механизм хранения по умолчанию - InnoDB вместо MyISAM (системные таблицы - в MyISAM),
изменились умолчания (innodb_file_format=Barracuda,
innodb_strict_mode=ON, innodb_file_per_table=ON - .ibd файл на каждую таблицу)
- увеличена масштабируемость InnoDB для многоядерных серверов (Innodb_have_atomic_builtins)
- фоновые потоки ввода/вывода в InnoDB (innodb_read_io_threads=4, innodb_write_io_threads=4, innodb_use_native_aio)
- ограничение потока ввода/вывода innodb_io_capacity (по умолчанию - 200 iops)
- Performance Schema - мониторинг производительности (mysqld --performance_schema)
- пул потоков для соединений клиентов (в Enterprise)
- аудит запросов (плагин audit_log, в Enterprise)
- при загрузке плагинов можно указать ON, OFF, FORCE или FORCE_PLUS_PERMANENT
- плагины аутентификации (для коммерческой версии: PAM, родной для MS Windows);
CREATE USER или GRANT ... IDENTIFIED WITH; mysql --default-auth --plugin-dir)
- прокси аутентификации (привилегия PROXY, переменные proxy_user и external_user)
- плагин полусинхронной репликации (достаточно ответа хотя бы от одного исполнителя)
- sync_relay_log - управление синхронизацией на исполнителе репликации (sync_master_info, sync_relay_log_info, relay_log_recovery)
- мониторинг исполнителей репликации: MASTER_HEARTBEAT_PERIOD, Slave_heartbeat_period, Slave_received_heartbeats
- utf16, utf32 и utf8mb4
- mysql и т.п. используют переменные окружения LANG и LC_ALL для установки кодировки по умолчанию
- расширение партиционирования таблиц (списки и интервалы нескольких столбцов, удаление всех строк раздела)
- операторы SIGNAL и RESIGNAL
- блокировка метаданных
- IPv6 (по умолчанию - не ждёт, 'root'@'::1')
- оператор LOAD XML INFILE
- альтернативы malloc(): tcmalloc (libtcmalloc_minimal.so, mysqld_safe --malloc-lib=tcmalloc)
- mysql --init-command=строка (также выполняется при восстановлении соединения)
- mysql --auto-vertical-output (вертикальное форматирование!)
- mysql --bind-address
- mysql_upgrade --upgrade-system-tables (БД пользователей не обновляются)
- libmysqlclient - многопоточный (libmysqlclient_r не нужен)
- привилегия CREATE TABLESPACE
- функция TO_SECONDS() (секунд с отметки 0)
- функция SHA2()
- FLUSH LOGS приобрёл параметр FLUSH [BINARY | ENGINE | ERROR | GENERAL | RELAY | SLOW] LOGS
- innodb_file_format_check расслоилась на innodb_file_format_check и innodb_file_format_max
- CLIENT_MULTI_RESULTS по умолчанию
- mysqldump --dump-slave, --apply-slave-statements, --include-master-host-port
- mysqladmin позволяет задавать параметр команды password интерактивно
- CMake вместо autotools, файлы слегка перетасованы (mysqld в bin вместо libexec и т.п. - а вот и нет)
- удалён mysql_fix_privilege_tables
- устарели: неявная сортировка GROUP BY (используйте явную сортировку ORDER BY), YEAR(2) преобразуется в YEAR(4),
сокращение имён опций, переменная storage_engine (используйте default_storage_engine)
- удалены: переменная language (используйте lc_messages_dir и lc_messages), переменная myisam_max_extra_sort_file_size,
record_buffer (используйте read_buffer_size), sql_log_update, table_lock_wait_timeout, table_type (используйте default_storage_engine),
FRAC_SECOND (используйте MICROSECOND), TYPE в CREATE TABLE и пр. (используйте ENGINE),
LOAD TABLE ... FROM MASTER (используйте mysqldump или mysqlhotcopy),
BACKUP TABLE и RESTORE TABLE (используйте mysqldump или mysqlhotcopy), TIMESTAMP(N) (используйте без N),
--master-xxx (используйте CHANGE MASTER TO),
--default-character-set и --default-collation (используйте --character-set-server и --collation-server),
--enable-locking и --skip-locking (используйте --external-locking и --skip-external-locking),
--skip-symlink и --use-symbolic-links (используйте --skip-symbolic-links и --symbolic-links),
--warnings (используйте --log-warnings), -no-named-commands (--skip-named-commands), --no-pager (-skip-pager),
--no-tee (--skip-tee)
- прощайте NetWare, MS-DOS, VMS, QNX и 32-bit SPARC
5.1.73 Community Server (2013-12-03, RHEL 5.10, RHEL 6.6) относительно 5.1.30
- переменная Queries (количество запросов, выполненных сервером) в дополнение к Questions (запросов, посланных клиентами)
- переменная optimizer_switch позволяет отключить оптимизацию
- при загрузке плагинов можно указать ON, OFF или FORCE
- улучшенный InnoDB в виде плагина ("дозрел" в 5.1.46) в дополнение к встроенному InnoDB
- в плагине innoDB добавлены переменные Innodb_buffer_pool_read_ahead и Innodb_buffer_pool_read_ahead_evicted,
удалены переменные Innodb_buffer_pool_read_ahead_rnd и Innodb_buffer_pool_read_ahead_seq
- переменные управления пулом в InnoDB: innodb_old_blocks_pct и innodb_old_blocks_time
- переменная skip_name_resolve (--skip-name-resolve) позволяет пропускать определение DNS имён при соединениях клиентов
- прощай icc
- FLUSH LOGS больше не переименовывает файл *.err в *.err-old (предлагается переименовывать самостоятельно перед сбросом)
- прощай библиотека pstack
- переменная innodb_stats_method
- переменная innodb_random_read_ahead
- для совместимости с сортировкой MySQL 5.0 введены utf8_general_mysql500_ci и ucs2_general_mysql500_ci
- прощай YEAR(2)
- из поставки удалён mysql.info, предлагается пользоваться сайтом
5.1.30 (2008-11-14, General Availability) Community Server относительно 5.0.96
- утилита mysql_upgrade преобразует все имеющиеся таблицы в формат новой версии
- партиционирование таблиц (разнесение таблиц по нескольким файловым хранилищам с параллельной обработкой, переменная have_partitioning)
- строчная репликация (передача изменений вместо операторов), переменная binlog_format, ключи --binlog-format и --binlog-row-event-max-size
- плагины, включая механизмы хранения (таблица mysql.plugin, каталог задаётся в переменной plugin_dir, переменнная have_dynamic_loading)
- планировщик событий (cron), привилегия EVENT, переменная event_scheduler
- возможность писать журнал в таблицы (vмеханизм хранения CSV или MyISAM) general_log и slow_log БД mysql
(для возврата старого поведения: mysqld --log-output=FILE, откатили к прежнему поведению), general_log_file и slow_query_log_file
- MySQL Cluster реализован как отдельный продукт (механизм хранения NDBCLUSTER)
- расширение INFORMATION_SCHEMA: FILES, EVENTS, PARTITIONS, PROCESSLIST, ENGINES, PLUGINS, REFERENTIAL_CONSTRAINTS
- mysqlslap - эмулятор нагрузки для тестирования
- нет больше механизма хранения BDB
- удалены: innodb_buffer_pool_awe_mem_mb, innodb_log_arch_dir
- устарели: table_type (storage_engine), TYPE в CREATE TABLE и пр. (используйте ENGINE),
LOAD TABLE ... FROM MASTER (используйте mysqldump или mysqlhotcopy),
BACKUP TABLE и RESTORE TABLE (используйте mysqldump или mysqlhotcopy), TIMESTAMP(N) (используйте без N),
--master-xxx (используйте CHANGE MASTER TO)
- mysqldump --replace
- mysqldump --events
- mysqldump --no-tablespaces (без CREATE LOGFILE GROUP и CREATE TABLESPACE), обратный к --all-tablespaces
- mysqldump --dump-date (по умолчанию) и --skip-dump-date
- переменная table_cache переименована в table_open_cache
- mysqlbinlog --server-id
- переменная myisam_use_mmap
- mysqld --bdb-data-direct и --bdb-log-direct
- mysqld --port-open-timeout
- привилегия TRIGGER
- mysqlimport --use-threads=число
- RENAME DATABASE (заменена на ALTER DATABASE имя UPGRADE DATA DIRECTORY NAME)
- после /etc/my.cnf читается /etc/mysql/my.cnf
- mysqladmin --no-beep
- mysql.server --service-startup-timeout
- mysqld --secure-file-priv (ограничивает указанным каталогом действие оператора LOAD DATA и т.п.)
- переменная thread_handling (--thread_handling=one-thread)
- mysqld_safe --syslog (сделали по умолчанию, потом передумали) и --skip-syslog; --syslog-tag=
- переменные long_query_time в микросекундах, min_examined_row_limit
- mysqld --log-slow-slave-statements
- вместо --log и --slow_query_log рекомендуется использовать --general_log (--general_log_file=имя-файла) и
--slow_query_log (--slow_query_log_file=имя-файла), будут удалены в следующей версии
- переменная slave_exec_mode определяет режим обработки ошибок при репликации
- переменная Uptime_since_flush_status
- ретрансляция оттранслированных (prepared) операторов и счётчик Com_stmt_reprepare, несовместимость клиентской библиотеки
5.0.96 Community Server (2012-03-21, RHEL 5.8) относительно 5.0.77
- переменная innodb_use_legacy_cardinality_algorithm
- переменная myisam_mmap_size
- исправленные проблемы безопасности мотивируют на переход как минимум до 5.0.91
5.0.77 Community Server (RHEL 5.7) относительно 5.0.15
- утилита mysql_upgrade преобразует все имеющиеся таблицы в формат новой версии
- mysqlcheck --check-upgrade
- несовместимость предыдущих версий таблиц с ENUM
- концевые пробелы значимы в InnoDB, как и раньше в MyISAM
- переменная character_set_filesystem
- mysqld --sysdate-is-now
- переменные max_prepared_stmt_count, prepared_stmt_count
- переменные (и ключи) ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key
- mysqlbinlog --set-charset
- mysql --ssl-verify-server-cert
- mysqld --innodb_rollback_on_timeout
- операторы SHOW PROFILES и SHOW PROFILE (статистика использования ресурсов)
- mysqld --secure-file-priv
- переменная hostname
- mysqld --keep_files_on_create
- переменная plugin_dir задаёт каталог для пользовательских функций
- mysqldump --dump-date и --skip-dump-date
- переменная innodb_adaptive_hash_index
- переработан порядок чтения конфигурационных файлов
5.0.15 (Production) относительно 4.1.22
- хранимые процедуры и функции в стиле SQL:2003, привязаны к БД
- виды (views)
- курсоры (начальная поддержка на стороне сервера, read only)
- XA транзакции (?)
- начата работа над триггерами (CREATE TRIGGER и DROP TRIGGER)
- тип данных BIT (больше не синоним TINYINT(1))
- схема (INFORMATION_SCHEMA)
- mysqlmanager
- переписана библиотека работы с фиксированной точкой, проверки стали строже
- механизмы хранения ARCHIVE и FEDERATED
- нет больше механизма хранения ISAM
- нет больше MyISAM RAID
- режим соответствия стандарту SQL Strict
- VARCHAR увеличена до 64KB, концевые пробелы не удаляются
- несколько пространств таблиц в InnoDB (возврат с 5 на 4.1.0 невозможен)
- изменился формат журналов binary и relay
- приоритет XOR теперь между OR и AND, приоритет NOT уменьшен
- mysql_shutdown() требует дополнительный аргумент
- --replicate-same-server-id
- sync_binlog=интервал
- --innodb-safe-binlog
- SHOW GLOBAL STATUS для общих переменных и SHOW STATUS для потока
- mysqldump --single-transaction --master-data
- mysqldump --skip-triggers
- mysqldump --routines
- mysqldump --tz-utc
- mysqlbinlog --start-datetime, --stop-datetime, --start-position, --stop-position
- mysqlbinlog теперь умеет брать данные с stdin
- при переполнении диска MyISAM и binlog ждёт освобождения места
- таблица INFORMATION_SCHEMA для метаданных
- режим ALLOW_INVALID_DATES для совместимости со старым поведением
- режимы STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO и TRADITIONAL
- операторы CREATE USER и RENAME USER
- оператор SHOW FULL TABLES (mysqlshow --show-table-type)
- оператор SHOW TRIGGERS
- LOAD DATA позволяет преобразовать данные "на ходу"
- InnoDB по умолчанию в новом формате (ROW_FORMAT=COMPACT, на 20% меньше места, но больше нагрузки на ЦП), старый формат - ROW_FORMAT=REDUNDANT
- mysqld --large-pages
- mysqld --innodb-checksums и --innodb-doublewrite
- mysqld --skip-character-set-client-handshake
- индивидуальные MAX_USER_CONNECTIONS (и --old-style-user-limits)
- новая привилегия CREATE USER
- научился отличать И от Й в utf8
- !include и !includedir
- mysql --show-warnings
- нет больше myisam_max_extra_sort_file_size
- теперь DATETIME+0 выдаёт доли секунды
- функция SLEEP()
- глубина рекурсии ограничена до 200 (InnoDB)
- изменено преобразование, выполняемое CHAR() (двоичная строка, несколько символов)
- заполнитель двоичной колонки вместо пробела 0x0
- размер ключа для InnoDB увеличен с 1024 до 3072 байт
4.1.22 относительно 4.1.19
- mysqlbinlog --set-charset
- переменная lc_time_names позволяет определить язык вывода имён дней и месяцев
- ключ запуска сервера --skip-merge
4.1.19 относительно 4.1.16
- функция sha1_result переименована в mysql_sha1_result
- исправлена ошибка с заполнением таблицы help при установке
- исправлена ошибка безопасности в протоколе
- глобальная переменная max_prepared_stmt_count и переменная prepared_stmt_count
- добавлена команда charset для клиента, позволяющая сменить кодировку без повторного соединения
4.1.17 относительно 4.1.13
- CHAR() USING charset
- переменная myisam_stats_method
- mysqld --skip-character-set-client-handshake
4.1.13 относительно 4.1.11
- таблицы типа MEMORY могут иметь индекс до 500 байт
- очередные изменения правил сортировки выражений
- ключ --log-slow-admin-statements для mysqld
4.1.11 относительно 4.1.8
- глобальная переменная slave_transaction_retries
- переменная сессии SQL_NOTES
- ключ --set-character-set для myisamchk переименован в --set-collation
- ключ --defaut-character-set для mysqladmin
- ключ --with-big-tables для configure
- директивы !include и !includedir в конфигурационных файлах
- изменены правила сортировки выражений, состоящих из элементов с различными
правилами сортировки
4.1.8 относительно 4.0.23 (14 декабря 2004)
- ключ --sigint-ignore
- запрещены выражения типа SELECT a AS b FROM t1
ORDER BY t1.b
- ключи --start-datetime, --stop-datetime, --start-position, --stop-position,
--disable-log-bin для mysqlbinlog
- добавлены типы таблиц (storage-engine) CSV, ARCHIVE и EXAMPLE
- timezone переименована в system_time_zone,
появилась поддержка часового пояса клиента (@@time_zone, CURRENT_TIMESTAMP,
UNIX_TIMESTAMP, тип TIMESTAMP и др. как в
Oracle TIMESTAMP WITH LOCAL TIME ZONE)
- переменная sync_binlog задаёт интервал между сохранением binlog на диск
- ключ --innodb-safe-binlog обеспечивает синхронизцию между InnoDB и
binlog
- сравнение строк приведено в соответствии со
стандартами SQL (вместо усечения завершающих пробелов перед сравнением,
короткая строка дополняется необходимым числом пробелов: 'a' = 'a ',
'a' > 'a\t'); таблицы, имеющие значения
в колонках CHAR и VARCHAR менее ASCII(32), требуют восстановления
- DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP;
явное указание значения умолчания теперь
отменяет автоматическое занесение текущего времени
- функция UNHEX()
- функция UUID()
- до 64 индексов на таблицу
- длина ключа MyISAM - до 1000 байт
- ENGINE вместо TYPE в CREATE TABLE,
--default-storage-engine вместо --default-table-type, переменная
storage_engine вместо table_type и заголовок
колонки Engine вместо Type в SHOW TABLE STATUS
- переменные init_connect и init_slave могут хранить операции,
выполняемые при каждом подключении клиента или репликатора
- CHECKSUM TABLE
- переменные character_set_client, character_set_connection,
character_set_database, character_set_results, character_set_server,
character_set_system, collation_connection, collation_database,
collation_server
- REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_list
- DELETE ... IGNORE ...
- полнотекстовый поиск поддерживает многобайтные кодировки и UTF8
(не UCS2), частично совпавшие слова не попадают в
результат
- репликация через SSL
- команда delimiter для клиента mysql позволяет заменить ограничитель
команд (;)
- длина CHAR, VARCHAR и TEXT теперь измеряется в символах, а не байтах
- --sql-mode=NO_AUTO_VALUE_ON_ZERO
- ключ --secure-auth для mysqld: отказаться принимать пароль
в старом формате
- ключ --secure-auth для клиента mysql: отказаться передавать пароль
в старом формате
- DROP USER
- изменился интерфейс UDF
- функции ADDTIME(), DATE(), DATEDIFF(), LAST_DAY(), MAKEDATE(), MAKETIME(),
MICROSECOND(), SUBTIME(), TIME(), TIMEDIFF(), TIMESTAMP(), UTC_DATE(),
UTC_TIME(), UTC_TIMESTAMP(), WEEKOFYEAR(), CONVERT_TZ()
- DAY_MICROSECOND, HOUR_MICROSECOND, MINUTE_MICROSECOND, SECOND_MICROSECOND,
MICROSECOND для DATE_ADD(), DATE_SUB()
- спецификатор формата %f (микросекунды) для функций DATE_FORMAT() и
TIME_FORMAT()
- таблицу MERGE можно делать из таблиц различных БД
- функции COMPRESS(), UNCOMPRESS(), UNCOMPRESSED_LENGTH()
- PURGE BINARY LOGS
- вложенные запросы (subquery)
- динамически создаваемые таблицы (derived tables, unnamed views)
- INSERT ... ON DUPLICATE KEY UPDATE ...
- функция GROUP_CONCAT()
- UTF8 (в т.ч. имена таблиц и столбцов) и UCS2
- определение кодировки символов для БД, таблиц и столбцов
- кеширование ключей для MyISAM (CACHE INDEX, LOAD INDEX INTO CACHE)
- индекс BTREE для таблиц типа HEAP
- поддержка OpenGIS
- SHOW WARNINGS
- улучшения в C API (предразбор параметров, несколько операция за раз),
mysql_get_server_version(), mysql_sqlstate(), mysql_set_server_option(),
mysql_hex_string(),
mysql_prepare_result() переименована в
mysql_get_metadata(), mysql_execute() в mysql_stmt_execute() и др.
- CREATE [TEMPORARY] TABLE ... LIKE ...
- HELP на стороне сервера
- ключи --reconnect и --skip-reconnect для клиента mysql
- функция VARIANCE()
- функция ROLLUP()
- expr SOUNDS LIKE expr
- ALTER DATABASE
- комментарии для столбцов и SHOW FULL COLUMNS
- преобразование кодировок CONVERT(... USING ...)
- несколько каталогов для временных файлов
- TRUE и FALSE как синонимы для 0 и 1
- операторы DIV и MOD
- несколько операций за раз
- новый более быстрый протокол клиент/сервер
- TIMESTAMP выводится только как YYYY-MM-DD HH:MM:SS
- функция CRC32(), BIT_XOR()
- пароль увеличен до 41 символов (45 в 4.1.0)
- функция IS_USED_LOCK() для определения идентификатора соединения
- функции CHARSET() и COLLATION(), COERCIBILITY()
- ключи --compatible, --order-by-primary, --lock-all-tables, --hex-blob
для mysqldump
- DEFAULT(col_name)
4.0.23 относительно 4.0.22
- переменная innodb_status_file
- mysql_hex_string() C API
- ключ --hex-blob для mysqldump
4.0.22 относительно 4.0.14
- ключ --innodb-table-locks (и переменная), по умолчанию включён;
необходимо отключить, если возникает deadlock
- переменная innodb_max_purge_lag
- ./configure --comment --without-man
- TIMESTAMP(19) выводится как YYYY-MM-DD HH:MM:SS
- ключ --skip-log-warnings позволяет выключить установленный теперь
по умолчанию ключ --log-warnings
- ключ --local-load утилиты mysqlbinlog требует наличия параметра
- утилита myisam_ftdump
- вместо ключевого слова TYPE в CREATE TABLE можно использовать ENGINE
- переменная lower_case_table_names может принимать значение 2
(хранение имен таблиц со смешанным регистром в файловой системе,
не различающей прописные и строчные символы в именах файлов)
- убран ключ --old-rpl-compat для mysqld
- ключ --disable-sync-frm для mysqld позволяет отменить синхронизацию
при создании каждого файла .frm
- вставка отрицательных значений AUTO_INCREMENT обрабатывается нормально
- новые режимы в функции WEEK(..., режим)
- операция UNION DISTINCT
- mysqlbinlog позволяет вводить пароль с консоли
- ключи --libs_r и --include для mysql_config
- переменные range_alloc_block_size, query_alloc_block_size,
query_prealloc_size, transaction_alloc_block_size и
transaction_prealloc_size для управления памятью
- значения в конфигурационных файлах могут быть обрамлены кавычками
4.0.14 относительно 3.23, включая InnoDB
- кеширование результатов запросов
- расширен полнотекстовый поиск (булевы выражения - требуется регенерация
индекса; поиск фраз)
- библиотека libmysqld для встраивания MySQL сервера в другие программы
- GRANT: новые привилегии (CREATE TEMPORARY TABLES, EXECUTE, LOCK TABLES,
REPLICATION CLIENT, REPLICATION SLAVE, SHOW DATABASES, SUPER; требуется
выполнить скрипт mysql_fix_privilege_tables) и управление ресурсами
(MAX_QUERIES_PER_HOUR, MAX_UPDATES_PER_HOUR, MAX_CONNECTIONS_PER_HOUR)
- динамическое изменение значений переменных сервера
- ключ --xml для mysql
- добавлены переменные ft_min_word_len, ft_max_word_len и ft_max_word_len_for_sort для управления полнотекстовым поиском
- SSL
- обмен пакетами более 16 МБ по сети (до 1 GB, max_allowed_packet)
- сравнение строк учитывает текущую кодировку и нечуствительна к регистру
- операция UNION
- операция DELETE работает с несколькми таблицами сразу
- операция INSERT для таблиц типа MERGE
- переменная myisam_bulk_insert_tree_size управляет размером кеша
- обрамляющий скрипт safe_mysqld переименован в mysqld_safe
- функции SQL_CALC_FOUND_ROWS и FOUND_ROWS()
- шестнадцатеричные константы вида X'ff'
- команда system в mysql
- функции DES_ENCRYPT() и DES_DECRYPT()
- ключ --des-key-file для mysqld
- оператор FLUSH DES_KEY_FILE
- функция HEX(string)
- запрещено использовать обратную косую (\) в именах БД
- оператор "^" (XOR)
- функция IS_FREE_LOCK("lock_name")
- экспоненциальная часть в DECIMAL и NUMERIC
- функция SHA1() (160 bit, SHA1 более устойчива, чем MD5)
- функции AES_ENCRYPT() и AES_DECRYPT()
- ключ --single-transaction для mysqldump
- автоматическое увеличение размера файла данных InnoDB
- ключ --ignore-lines=число для mysqlimport
- результат всех битовых функций теперь имеет тип unsigned integer
- функции CAST() и CONVERT()
- скрипт mysql_secure_installation
- функция QUOTE()
- переменные myisam_max_sort_file_size, myisam_max_extra_sort_file_size
теперь задаются в байтах, а не в мегабайтах
- переменые поделены на общесистемные (SET GLOBAL) и относящиеся к
данной сессии (SET SESSION)
- переменая slave_compressed_protocol
- переименованы:
- query_cache_startup_type в query_cache_type
- myisam_bulk_insert_tree_size в bulk_insert_buffer_size
- record_buffer в read_buffer_size
- record_rnd_buffer в record_rnd_buffer_size
- множество других переменных, но их старые имена будут действовать до 5.0
- переменная query_buffer_size удалена
- переменная safe_show_database удалена
- ключ --skip-locking переименован в --skip-external-locking
- расширена функция LOG()
- добавлена функция LOG2()
- добавлена функция LN()
- ключ --use-frm для mysqlcheck (REPAIR)
- изменилось поведение оператора BETWEEN
- не требуется привилегия UPDATE для REPLACE
- функция CURRENT_USER() возвращает строку вида user@host в том виде
как ее поняла система безопасности (GRANT)
- зарезервированы слова CHECK, SIGNED, LOCALTIME, LOCALTIME
- CAST(... as CHAR)
- SELECT ... LIMIT ... OFFSET ...
- HANDLER (курсор) применим к InnoDB
- размер ключа в InnoDB увеличен с 500 до 1024 байт
- READ COMMITTED/READ UNCOMMITTED для InnoDB
- FOREIGN KEY (...) REFERENCES ...(...) для InnoDB теперь понимает
ON UPDATE [ CASCADE | SET NULL | RESTRICT | NO ACTION]
- оператор FORCE INDEX в JOIN (слово FORCE стало резервированным)
- ключ --log-error=имя-файла для mysqld_safe и mysqld
- переменная ft_stopword_file позволяет указывать файл неиндексируемых
(stop) слов для полнотекстового поиска; при изменении требуется пересобрать
все полнотекстовые индексы
- PRIMARY KEY подразумевает NOT NULL
- переменная myisam_repair_threads задает число параллельных процессов
при восстановлении БД
- переменная innodb_max_dirty_pages_pct
- ANALYZE TABLE для InnoDB
- ключ --new меняет интерпретацию двоичных объектов как двоичных строк,
а не целых чисел; данный подход будет по умолчанию в версии 4.1
- переменная delayed_insert_timeout
- переменная max_insert_delayed_threads
- BIT_AND() и BIT_OR() теперь возвращают 64-битовые значения без знака
- ключ --symbolic-links вместо --skip-symlink и --use-symbolic-links
- ключ --delete-master-logs для mysqldump
- ALTER TABLE DROP FOREIGN KEY для InnoDB
- переменная max_seeks_for_key управляет степенью предпочтения использования
ключей над полным просмотром таблицы
- ключ --nice для установки приоритета mysqld_safe
- ключ --read-only для mysqld (права SUPER все же позволяют изменения данных)
- переменная max_relay_log_size
- SAVEPOINT и ROLLBACK TO SAVEPOINT для InnoDB
3.23.57 относительно 3.23.37 (включая InnoDB)
- ключ --skip-stack-trace для mysqld
- новая программа mysqlcheck
- ключ --warnings для mysqld (сообщения типа "Aborted connection")
- ключ --sql-mode для mysqld (управление совместимостью)
- InnoDB: максимальный размер строки увеличен до 4 ГБ;
поддержка "сырых" разделов диска в качестве файлоа данных;
поддержка файлов и разделов более 4 ГБ; параметры: innodb_thread_concurrency,
innodb_fast_shutdown, innodb_force_recovery; программы innodb_monitor,
innodb_lock_monitor, innodb_tablespace_monitor, innodb_table_monitor;
внешние ключи;
длина ключа увеличена до 7000 (потом уменьшена до 500 ;);
SHOW INNODB STATUS
- переменная record_buffer разделилась на record_buffer и record_rnd_buffer
- ключ --safe-user-create для mysqld
- добавлена команда "DO выражение"
- опция slave-skip-errors
- ключ --xml для mysqldump
- переменная Com_show_master_stat переименована в Com_show_master_status,
Com_show_slave_stat - Com_show_slave_status
- BACKUP TABLE запрещено затирать существующий файл
- ключ --delete-master-logs для mysqldump
3.23.37 относительно 3.23.36
- ключ --mysql-version для safe_mysqld
- ключ --skip-safemalloc для mysqld
- INNOBASE переименована в InnoDB
- запрещено делать INSERT DELAYED для таблиц с транзакциями
- добавлены переменные myisam_max_sort_file_size и myisam_max_extra_sort_file_size
3.23.36 относительно 3.23.35
- запрещена "." в именах баз
- SET TRANSACTION ISOLATION LEVEL ...
- SELECT ... FOR UPDATE
3.23.35 относительно 3.23.33
- INNOBASE и DBD включены непосредственно в поставку (транзакции)
- опция max_user_connections в mysqld
3.23.33 относительно 3.23.32
- колонки типа CHAR в таблицах привилегий теперь имеют атрибут BINARY (при создании)
- "TRUNCATE имя-таблицы" теперь надо писать как "TRUNCATE TABLE имя-таблицы"
- введена переменная max_binlog_size; бинарный журнал будет автоматически
свернут при достижении этого размера
- опция --temp-pool для mysqld (позволяет избежать memory leak в linux
при генерации имен временных файлов)
|
Bog BOS: MySQL: старые материалы
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru