2013.06.06

MySQL

MySQL 5.5.32 がリリースされました

オリジナル版:http://dev.mysql.com/doc/refman/5.5/en/news-5-5-32.html

MySQL 5.5.32は世界でもっともポピュラーなオープンソースデータベースの5.5のプロダクトリリースの新しいバージョンです。MySQL 5.5.32はプロダクションシステムでの使用をお勧めします。

 

MySQL 5.5は最新のマルチCPUやマルチコアハードウェアやオペレーティングシステムの利点を生かし、MySQLデータベースのパフォーマンスとスケーラビリ ティを改善するための影響の大きい変更をいくつか含んでいます。現在ではInnoDBがMySQLデータベースのデフォルトのストレージエンジンであり、 ACIDトランザクション、参照整合性、クラッシュリカバリをデフォルトで提供しています。

MySQL 5.5は以下の多くの新しい強化も含んでいます:

   - Windowsにおける特有の機能と改善を利用した著しいパフォーマンス向上
   - 新しい準同期レプリケーションとレプリケーションハートビートによるより高いレベルの可用性
   - 改善されたインデックスとテーブルパーティショニング、SIGNAL/RESIGNALサポート、そして新しいPERFORMANCE_SCHEMAに含まれる強化された診断法による改善されたユーザビリティ

MySQL 5.5の新機能のより完全な概観については、以下のリソースを参照下さい。

MySQL 5.5 GA、Tomas Ulinのインタビュー:

http://dev.mysql.com/tech-resources/interviews/thomas-ulin-mysql-55.html

ドキュメント:

http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html

ホワイトペーパー: MySQL 5.5の新機能

http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html

製品レベルのシステムでMySQLを稼動させているならば、MySQL製品、バックアップ、モニタリング、モデリング、開発、管理ツールの包括的なセット を含むMySQLパフォーマンス、セキュリティ、アップタイムの高いレベルを実現するMySQL Enterprise Editionの製品詳細に注目してください。

http://mysql.com/products/enterprise/

新しいサーバへMySQL 5.5.32をインストールする情報として、以下のMySQLのインストールドキュメントを参照してください。

http://dev.mysql.com/doc/refman/5.5/en/installing.html

前回のMySQLリリースからアップグレードするには、以下のアップグレードについての注意事項を参照してください。

http://dev.mysql.com/doc/refman/5.5/en/upgrading-from-previous-series.html

 

MySQL Server 5.5.32は、http://dev.mysql.com/downloads/とミラーサイトのダウンロード・ページから、ソースコード及び多くのプラットフォームのためのバイナリで現在利用可能です。

 

次の節では、MySQL 5.5の以前のバージョンからのMySQLソースコードの変更を記載しています。これはオンラインでも閲覧できます。
http://dev.mysql.com/doc/refman/5.5/en/news-5-5-29.html

Changes in MySQL 5.5.32 (2013-06-03)

Functionality Added or Changed

* mysql_upgrade now verifies that the server version matches the
version against which it was compiled, and exits if there is a
mismatch. In addiion, a --version-check option permits
specifying whether to enable version checking (the default),
or disable checking if given as --skip-version-checking. (Bug
#16500013)

Bugs Fixed

* Important Change; Replication: When the server was running
with --binlog-ignore-db and SELECT DATABASE() returned NULL
(that is, there was no currently selected database),
statements using fully qualified table names in dbname.tblname
format were not written to the binary log. This was because
the lack of a currently selected database in such cases was
treated as a match for any possible ignore option rather than
for no such option; this meant that these statements were
always ignored.
Now, if there is no current database, a statement using fully
qualified table names is always written to the binary log.
(Bug #11829838, Bug #60188)

* InnoDB: After a clean shutdown, InnoDB does not check .ibd
file headers at startup. As a result, in a crash recovery
scenario, InnoDB could load a corrupted tablespace file. This
fix implements consistency and status checks to avoid loading
corrupted files. (Bug #16720368)

* InnoDB: The page_zip_available function would count some
fields twice. (Bug #16463505)

* InnoDB: In debug builds, an insert would fail with an invalid
assertion: sync_thread_levels_g(array, level - 1, TRUE). (Bug
#16409715)

* InnoDB: Multiple concurrent calls to dict_update_statistics()
would result in unnecessary server load. (Bug #16400412)

* InnoDB: Crash recovery would fail with a !recv_no_log_write
assertion when reading a page. (Bug #16405422)

* InnoDB: When calling the lock_rec_block_validate() function
after releasing the kernel mutex, there is a chance the lock
might be invalid and result in a Valgrind error due to an
invalid read on lock->index. This fix copies the lock->index
when the kernel mutex is being held and passes the lock->index
to lock_rec_block_validate(). (Bug #16268289)

* InnoDB: When a transaction is in READ COMMITTED isolation
level, gap locks are still taken in the secondary index when a
row is inserted. This occurs when the secondary index is
scanned for duplicates. The function
row_ins_scan_sec_index_for_duplicate() always calls the
function row_ins_set_shared_rec_lock() with LOCK_ORDINARY
irrespective of the transaction isolation level. This fix
modifies the row_ins_scan_sec_index_for_duplicate() function
to call row_ins_set_shared_rec_lock() with LOCK_ORDINARY or
LOCK_REC_NOT_GAP, based on the transaction isolation level.
(Bug #16133801)

* InnoDB: Starting mysqld with --innodb_log_buffer_size=50GB
failed to allocate memory and returned NULL. For non-debug
builds there was no check in place and a segmentation fault
occurred. This fix adds a log message stating that memory
failed to be allocated, and adds an assertion. (Bug #16069598)

* InnoDB: When UNIV_DEBUG is enabled in debug builds,
buf_validate() is often called which sometimes results in
false alarms in tests on semaphore wait timeout. This fix
increases counter values to reduce false alarms. (Bug
#16068056)

* InnoDB: The explain_filename function, which provides
information about a partition by parsing the file name, would
return an error when attempting to parse a file name with no
partition information. (Bug #16051728)

* InnoDB: For UPDATE statements in which an error occurred, it
was possible for a temporary file opened during the update not
to be closed. (Bug #15978766)

* InnoDB: An overflow would occur for innodb_row_lock_time_max
and innodb_row_lock_current_waits. This fix modifies code
logic in storage/innobase/srv/srv0srv.c. (Bug #16005310)

* Replication: Point-in-time recovery could fail when trying to
restore a single database from a binary log in row-based
format using mysqlbinlog with the --database option. (Bug
#16698172)

* Replication: When used with the options --dump-slave
--include-master-host-port, mysqldump printed the port number
within quotation marks, as if it were a string value rather
than an integer. (Bug #16615117)

* Replication: Running the server with both the
--log-slave-updates and --replicate-wild-ignore-table options
in some cases caused updates to user variables not to be
logged. (Bug #16541422)

* Replication: Following disconnection from the master, the
slave could under certain conditions report erroneously on
reconnection that it had received a packet that was larger
than slave_max_allowed_packet, causing replication to fail.
(Bug #16438800, Bug #68490)

* Replication: When semisynchronous replication was enabled, the
automatic dropping on the master of an event created using ON
COMPLETION NOT PRESERVE caused the master to fail. (Bug
#15948818, Bug #67276)

* Replication: Setting a SET column to NULL inside a stored
procedure caused replication to fail. (Bug #14593883, Bug
#66637)

* Replication: When replicating to a BLACKHOLE table using the
binary logging format, updates and deletes cannot be applied
and so are skipped. Now a warning is generated for this
whenever it occurs.
Note
binlog_format=STATEMENT is recommended when replicating to
tables that use the BLACKHOLE storage engine.
(Bug #13004581)

* The WKB reader for spatial operations could fail and cause a
server exit. (Bug #16451878)

* EXPORT_SET() or MAKE_SET() with many COUNT(*) arguments could
cause a server exit. (Bug #16359402)

* Several scripts in the sql-bench directory that were supposed
to be executable did not have the executable access bit set.
(Bug #16395606)

* For debug builds, DBUG_EXPLAIN resulted in a buffer overflow
when the debug system variable value was more than 255
characters. (Bug #16402143)

* thread_pool_high_priority_connection could not be set at
server startup. (Bug #16310373)

* Oracle RPM packages were unusable by yum due to issues with
the obsoletes line in the .spec file causing yum to interpret
the package as obsoleting itself. (Bug #16298542)

* A GROUP_CONCAT() invocation containing subquery having an
outer reference caused the server to exit. (Bug #16347343)

* For debug builds, GROUP_CONCAT(... ORDER BY) within an ORDER
BY clause could cause a server exit. (Bug #16347426)

* If loose index scan was used on a query that used MIN(), a
segmentation fault could occur. (Bug #16222245)

* If multiple statements were sent in a single request, the
audit log plugin logged only the last one. Now it logs each
statement separately. (Bug #16169063)

* A prepared statement that used GROUP_CONCAT() and an ORDER BY
clause that named multiple columns could cause the server to
exit. (Bug #16075310)

* ORDER BY MATCH ... AGAINST could cause a server exit. (Bug
#16073689)

* When a partition is missing, code in ha_innodb.cc would retry
10 times and sleep for a microsecond each time while holding
LOCK_open. The retry logic for partitioned tables was
introduced as a fix for Bug#33349 but did not include a test
case to validate it. This fix removes the retry logic for
partitioned tables. If the problem reported in Bug#33349
reappears, a different solution will be explored. (Bug
#15973904)

* The mysql.server script exited with an error if the status
command was executed with multiple servers running. (Bug
#15852074)

* A query with a union and a join could crash the parser. (Bug
#14786792, Bug #16076289)

* Installation using Solaris packages ran mysql_install_db
during upgrade operations (this should occur only for new
installations). (Bug #14747671, Bug #16534721)

* When processing row-based-replication events in the old binary
log format from prior to MySQL 5.1 GA builds, mysqlbinlog
could result in out-of-bounds heap buffer reads and undefined
behaviour. (Bug #14771299)

* The mysql client allocated but did not free a string after
reading each line in interactive mode, resulting in a memory
leak. (Bug #14685362)

* INSERT ... ON DUPLICATE KEY UPDATE on a view could cause a
server exit. (Bug #14261010)

* Grouping by an outer BLOB column in a subquery caused a server
exit. (Bug #13966809, Bug #14700180)

* The server could exit due to improper handling of the error
from an invalid comparison. (Bug #13009341)

* The CMake check for unsigned time_t failed on all platforms.
(Bug #11766815)

* On 64-bit Mac OS X systems, CMake used x86 rather than x86_64
when determining the machine type. (Bug #58462, Bug #11765489)

* The parser rejected legal queries that involved a UNION where
the right hand side query term has a table in parenthese. (Bug
#54382, Bug #11761854)

* The url columns in the mysql datatbase help tables were too
short to hold some of the URLs in the help content. For new
installations, these columns are now created as type TEXT to
accommodate longer URLs.
For upgrades, mysql_upgrade does not update the columns.
Modify them manually using these statements:
ALTER TABLE mysql.help_category MODIFY url TEXT NOT NULL;
ALTER TABLE mysql.help_topic MODIFY url TEXT NOT NULL;
(Bug #61520, Bug #12671635)

* If Loose Index Scan was used to evaluate a query that compared
an integer column to an integer specified as a quoted string
(for example, col_name = '1'), the query could return
incorrect results. (Bug #68473, Bug #16394084)

* IF() function evaluations could produce different results when
executed in a prepared versus nonprepared statement. (Bug
#45370, Bug #11753852)

* It is now possible to suppress installation of the mysql-test
directory after compiling MySQL from source by invoking CMake
with the INSTALL_MYSQLTESTDIR option explicitly set to empty:
cmake . -DINSTALL_MYSQLTESTDIR=
Previously, attempts to do this resulted in an error. (Bug
#58615, Bug #11765629)

* Using range access with an index prefix could produce
incorrect results. (Bug #68750, Bug #16540042)

* MD5() code did not properly initialize one of its data
structures. (Bug #68909, Bug #16626742)

* When specified in an option file, the plugin-dir client option
was ignored. (Bug #68800, Bug #16680313)

* If an UPDATE containing a subquery caused a deadlock inside
InnoDB, the deadlock was not properly handled by the SQL
layer. The SQL layer then tried to unlock the row after InnoDB
rolled back the transaction, raising an assertion inside
InnoDB. (Bug #69127, Bug #16757869)