MySQL5.7.6DMRが今月リリースされて、色々な機能追加や改善が施されているので、
DMRのうちに少しずつ検証してRCとGAに備えたいと思います。
とりあえず、本日は初期設定まで。

2015年3月現在
DRM

MySQL 5.7 Release Notes
http://dev.mysql.com/doc/relnotes/mysql/5.7/en/index.html

ダウンロードサイトからDMRをダウンロードしてきてあります。
mysql-5.7.6-m16-linux-glibc2.5-x86_64.tar.gz

[root@misc01 admin]# cd /usr/local/
[root@misc01 local]# ls -l
合計 545048
drwxr-xr-x. 2 root  root          6  6月 10  2014 bin
drwxr-xr-x. 2 root  root          6  6月 10  2014 etc
drwxr-xr-x. 2 root  root          6  6月 10  2014 games
drwxr-xr-x. 2 root  root          6  6月 10  2014 include
drwxr-xr-x. 2 root  root          6  6月 10  2014 lib
drwxr-xr-x. 2 root  root          6  6月 10  2014 lib64
drwxr-xr-x. 2 root  root          6  6月 10  2014 libexec
-rw-rw-r--. 1 admin admin 558127440  3月 28 06:49 mysql-5.7.6-m16-linux-glibc2.5-x86_64.tar.gz
drwxr-xr-x. 2 root  root          6  6月 10  2014 sbin
drwxr-xr-x. 5 root  root         46  3月 28 07:02 share
drwxr-xr-x. 2 root  root          6  6月 10  2014 src
[root@misc01 local]# 
[root@misc01 local]# tar xzvf mysql-5.7.6-m16-linux-glibc2.5-x86_64.tar.gz
[root@misc01 local]# groupadd mysql
[root@misc01 local]# useradd -r -g mysql mysql
[root@misc01 local]# ls -l
合計 545052
drwxr-xr-x.  2 root  root          6  6月 10  2014 bin
drwxr-xr-x.  2 root  root          6  6月 10  2014 etc
drwxr-xr-x.  2 root  root          6  6月 10  2014 games
drwxr-xr-x.  2 root  root          6  6月 10  2014 include
drwxr-xr-x.  2 root  root          6  6月 10  2014 lib
drwxr-xr-x.  2 root  root          6  6月 10  2014 lib64
drwxr-xr-x.  2 root  root          6  6月 10  2014 libexec
drwxr-xr-x. 11 root  root       4096  3月 28 08:30 mysql-5.7.6-m16-linux-glibc2.5-x86_64
-rw-rw-r--.  1 admin admin 558127440  3月 28 06:49 mysql-5.7.6-m16-linux-glibc2.5-x86_64.tar.gz
drwxr-xr-x.  2 root  root          6  6月 10  2014 sbin
drwxr-xr-x.  5 root  root         46  3月 28 07:02 share
drwxr-xr-x.  2 root  root          6  6月 10  2014 src
[root@misc01 local]# ln -s mysql-5.7.6-m16-linux-glibc2.5-x86_64 mysql
[root@misc01 local]# ls -l
合計 545052
drwxr-xr-x.  2 root  root          6  6月 10  2014 bin
drwxr-xr-x.  2 root  root          6  6月 10  2014 etc
drwxr-xr-x.  2 root  root          6  6月 10  2014 games
drwxr-xr-x.  2 root  root          6  6月 10  2014 include
drwxr-xr-x.  2 root  root          6  6月 10  2014 lib
drwxr-xr-x.  2 root  root          6  6月 10  2014 lib64
drwxr-xr-x.  2 root  root          6  6月 10  2014 libexec
lrwxrwxrwx.  1 root  root         37  3月 28 08:32 mysql -> mysql-5.7.6-m16-linux-glibc2.5-x86_64
drwxr-xr-x. 11 root  root       4096  3月 28 08:30 mysql-5.7.6-m16-linux-glibc2.5-x86_64
-rw-rw-r--.  1 admin admin 558127440  3月 28 06:49 mysql-5.7.6-m16-linux-glibc2.5-x86_64.tar.gz
drwxr-xr-x.  2 root  root          6  6月 10  2014 sbin
drwxr-xr-x.  5 root  root         46  3月 28 07:02 share
drwxr-xr-x.  2 root  root          6  6月 10  2014 src
[root@misc01 local]# 

展開して初期DBを設定します
5.7以降で設定方法が変わっていたのを忘れていました… 詳細は此方をご確認ください。
2.9.1.1 Initializing the Data Directory Using mysqld
http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
4.4.2 mysql_install_db — Initialize MySQL Data Directory
http://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html

初期root用のpasswordもこちらでランダムに作成されています。
初回ログイン時に変更してしまいましょう。

[root@misc01 local]# cd mysql
[root@misc01 mysql]# chown -R mysql .
[root@misc01 mysql]# chgrp -R mysql .
[root@misc01 mysql]# scripts/mysql_install_db --user=mysql
bash: scripts/mysql_install_db: そのようなファイルやディレクトリはありません
[root@misc01 mysql]# bin/mysqld --initialize --user=mysql
2015-03-27T23:40:52.379590Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-03-27T23:40:53.301410Z 0 [Warning] InnoDB: New log files created, LSN=45790
2015-03-27T23:40:53.421318Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2015-03-27T23:40:53.487611Z 0 [Warning] Failed to setup SSL
2015-03-27T23:40:53.487667Z 0 [Warning] SSL error: SSL context is not usable without certificate and private key
2015-03-27T23:40:53.490120Z 1 [Warning] A temporary password is generated for root@localhost: Bfd,psIvR4*e
[root@misc01 mysql]# chown -R root .
[root@misc01 mysql]# chown -R mysql data

初期設定が終わったので、起動してログインしてみます。

[root@misc01 mysql]# bin/mysqld_safe --user=mysql &
[1] 4910
[root@misc01 mysql]# 150328 08:51:25 mysqld_safe Logging to '/usr/local/mysql/data/misc01.err'.
150328 08:51:25 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

[root@misc01 mysql]#

[root@misc01 mysql]# ./bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.6-m16

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 5.7.6-m16 |
+-----------+
1 row in set (0.01 sec)

mysql> 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[root@misc01 mysql]# 

[root@misc01 mysql]# ps -ef | grep mysql
root      4910  1883  0 08:51 pts/0    00:00:00 /bin/sh bin/mysqld_safe --user=mysql
mysql     4992  4910  0 08:51 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/misc01.err --pid-file=/usr/local/mysql/data/misc01.pid
root      5024  1883  0 08:56 pts/0    00:00:00 grep --color=auto mysql
[root@misc01 mysql]# kill 4992
[root@misc01 mysql]# 150328 08:56:32 mysqld_safe mysqld from pid file /usr/local/mysql/data/misc01.pid ended

[1]+  終了                  bin/mysqld_safe --user=mysql
[root@misc01 mysql]# ps -ef | grep mysql
root      5030  1883  0 08:56 pts/0    00:00:00 grep --color=auto mysql
[root@misc01 mysql]# 

起動ファイルのBASE, DATAディレクトリーを記入してファイルをコピー

[root@misc01 support-files]# pwd
/usr/local/mysql/support-files
[root@misc01 support-files]# vi mysql.server 
[root@misc01 support-files]# cp -p mysql.server /etc/init.d/
[root@misc01 support-files]# /etc/init.d/mysql.server start
Starting MySQL. SUCCESS! 
[root@misc01 support-files]#

MySQLにroot以外の追加の管理者アカウントを追加してみます。
GRANTでアカウントを作成するのはやめて、CREATE USERで作成した方が良いですね。

[root@misc01 support-files]# /usr/local/mysql/bin/mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.6-m16 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> GRANT ALL PRIVILEGES  ON *.* TO admin@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                                            |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

5.7からは、mysql.userテーブルからpasswordという列が無くなってますね。

mysql> select user,host,password from mysql.user;
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> select user,host,authentication_string from mysql.user;
+-------+-----------+-------------------------------------------+
| user  | host      | authentication_string                     |
+-------+-----------+-------------------------------------------+
| root  | localhost | *A41ECFBE1191DDE4713F2B6F5A6CD5D0D0D5DC35 |
| admin | %         | *A41ECFBE1191DDE4713F2B6F5A6CD5D0D0D5DC35 |
+-------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

その他、アカウントのパスワード期限など、コンプライアンス対応に使えそうなフィールドが増えています。
update

※ CentOSなどでは,MariaDBさんの/etc/my.cnfがあるので初期設定時にエラーになったりするので初期設定時に削除しています。
  ここら辺、名前が被らない方がユーザー的には有難いです。


FLUSH TABLES WITH READ LOCKをバックグラウンドで実行する処理がある場合に、
長時間実行しているバッチなどの処理があると、後から実行されるQueryが待たされるケースがある。
そんな、話を多からず、少なからず質問頂くので一応メモとして動作を記録。

通常は、データベース側の処理はDurationは短いので問題無いですが。。。
長時間バッチが実行されるような処理がある場合を避けて、FLUSH TABLES WITH READ LOCKを含む処理を実行するのが良さそうです。
MyISAMが全て無くなればまた、少しだけ選択肢が増えそうです。

http://dev.mysql.com/doc/mysql-enterprise-backup/3.9/en/backup-capacity-options.html#option_meb_no-locking

http://dev.mysql.com/doc/mysql-enterprise-backup/3.7/en/backup-partial-options.html#option_meb_only-innodb

処理1

select * from actor where (select sleep(30));

処理2

mysql> FLUSH TABLES WITH READ LOCK;

処理3

mysql> insert into sakila.city(city,contry_id) values('Tokyo',00);

処理1が終わるまで全てGlobalロックによって待たされる。
処理1をKillすると処理2が瞬時に完了するので。以下のコマンドでUnlockしてあげると待たされていた処理が全て完了する。

処理4

UNLOCK TABLES

WorkbenchとShow Processlistで確認
wait

waitquery

以下sysスキーマで待機時間の長いQueryを確認
sys_schema

参考: 13.3.5 LOCK TABLES and UNLOCK TABLES Syntax


■ Windwosのパフォーマンスモニタで確認する項目

・SQLSERVERで使用しているドライブの下記の項目
\PhysicalDisk()\Avg. Disk Queue Length
\PhysicalDisk()\Disk Reads/sec
\PhysicalDisk()\Disk Writes/sec

・CPU
\Processor(_Total)\% Processor Time

・SQLのキャッシュヒット率
\SQLServer:Buffer Manager\Buffer cache hit ratio

SQL Statistics
・Batch Requests/sec
  →秒間のコマンド数(問合せのクエリ以外のコマンドもカウントされるので、
   実際のクエリ発行数ではありませんが、利用状況を把握できます)

Buffer Manager
 ・Page life expectancy
  →DB上にデータを保持している時間 300秒を下回っているとメモリが足りていない可能性

Locks
 ・Lock Requests/sec
 ・Lock Waits/sec
  →ロック待ち

Access Methods
 ・Index Searches/sec
 ・Probe Scans/sec
 ・Range Scans/sec
 ・Full Scans/sec
  →Full Scan(テーブルスキャン)が多いと適切なインデックスが無い可能性

■ディスクのパフォーマンス測定ツールとして
 CrystalDiskMark
 可能であれば、ファイルサイズ 1000MBで
 どれくらいのパフォーマンスが出るストレージか確認。

その他参考サイト
http://msdn.microsoft.com/ja-jp/magazine/cc135978.aspx

・不足インデックスのコスト
・I/O に関してコストのかかるクエリ
・CPU に関してコストのかかるクエリ

その他、DBのオブジェクト確認用スクリプト

select
SU.NAME,
(SELECT
 CASE SP.action
          WHEN '26' THEN 'REFERENCES'
          WHEN '178' THEN 'CREATE FUNCTION'
          WHEN '193' THEN 'SELECT'
          WHEN '195' THEN 'INSERT'
          WHEN '196' THEN 'DELETE'
          WHEN '197' THEN 'UPDATE'
          WHEN '198' THEN 'CREATE TABLE'
          WHEN '203' THEN 'CREATE DATABASE'
          WHEN '207' THEN 'CREATE VIEW'
          WHEN '222' THEN 'CREATE PROCEDURE'
          WHEN '224' THEN 'EXECUTE'
          WHEN '228' THEN 'BACKUP DATABASE'
          WHEN '233' THEN 'CREATE DEFAULT'
          WHEN '235' THEN 'BACKUP LOG'
          WHEN '236' THEN 'CREATE RULE'
          ELSE '判別不能'
   END )AS '権限',
SO.NAME,
(select
CASE SO.XTYPE
  WHEN 'U' THEN 'テーブル'
  WHEN 'P' THEN 'ストアドプロシジャー'
  ELSE 'それ以外'
  END ) AS '種類',
SO.CRDATE
from sysusers SU,sysprotects SP, sysobjects SO
where SU.UID = SP.UID AND SO.ID = SP.ID AND SO.XTYPE IN('U','P')
order by SU.NAME,SO.CRDATE desc
--order by SO.CRDATE desc,SU.NAME

Changes in MySQL 5.6.12 (2013-06-03)

MYSQL5.6ですが、まだまだReplication関連のバグが多いですね。
レプリケーション以外のBugも少ない訳では無いので、Production環境で利用するにはもう少し枯れてからでも良いかもしれませんね。

InnoDB: Under certain circumstances, LRU flushing would take a long time possibly
affecting all flushing activity and causing a shutdown timeout. (Bug #16500209)

InnoDB: Concurrently inserting into a full-text table would cause some inserts to fail.
Duplicate values would be generated for full-text search document IDs when performing
inserts into a hidden full-text search document ID column. (Bug #16469399)

InnoDB: FLUSH TABLES FOR EXPORT would sleep too often while flushing pages from buffer pools. (Bug #16471701)

InnoDB: RENAME TABLE would result in a hang due to a MySQL mutex acquisition deadlock. (Bug #16305265)

InnoDB: DROP DATABASE failed if the database contained an InnoDB table that had a data
file in an external data directory. The external data file had an “InnoDB Symbolic Link”
file type (.isl) that was not recognized by MySQL. This fix adds .isl as a known InnoDB file type. (Bug #16338667)

InnoDB: After disabling foreign key checks with SET foreign_key_checks=0 and performing a DROP INDEX,
the table was no longer accessible after restarting the server. This fix allows the table with missing
foreign key indexes to be accessed when SET foreign_key_checks=0. When the table is accessible,
the user must recreate the missing indexes to fulfill the foreign key constraints. (Bug #16208542)

InnoDB: While processing read-write workloads, InnoDB would scan more pages than are required for flushing,
unnecessarily consuming CPU resource. (Bug #16037180)

InnoDB: A multi-row INSERT … ON DUPLICATE KEY UPDATE insert failure, caused by a duplicate key error,
would result in duplicate auto-increment values. (Bug #14483484)

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)

Removing a server RPM package did not shut down the existing server if it was running. (Bug #16798868)

Some INFORMATION_SCHEMA queries that used ORDER BY did not use a filesort optimization as they did in MySQL 5.5. (Bug #16423536)


とりあえず、アップグレード作業。
本番環境はバックアップしてから実行。
mysql-5.6.12-linux-glibc2.5-i686.tar.gzをダウンロードしてきたので、
先ずはMYSQLを停止して、ファイルの展開と移動。

[root@HOME002 src]# /etc/init.d/mysql stop
Shutting down MySQL...                                     [  OK  ]
[root@HOME002 src]#
[root@HOME002 src]# tar zxvf mysql-5.6.12-linux-glibc2.5-i686.tar.gz
mysql-5.6.12-linux-glibc2.5-i686/COPYING
mysql-5.6.12-linux-glibc2.5-i686/bin/mysqlaccess.conf
mysql-5.6.12-linux-glibc2.5-i686/bin/resolveip
mysql-5.6.12-linux-glibc2.5-i686/bin/mysqld_multi
mysql-5.6.12-linux-glibc2.5-i686/bin/mysqlshow
mysql-5.6.12-linux-glibc2.5-i686/bin/mysqlaccess
mysql-5.6.12-linux-glibc2.5-i686/bin/resolve_stack_dump

.... 

mysql-5.6.12-linux-glibc2.5-i686/mysql-test/lib/My/Memcache.pm
mysql-5.6.12-linux-glibc2.5-i686/mysql-test/lib/My/File/Path.pm
mysql-5.6.12-linux-glibc2.5-i686/mysql-test/lib/My/Exec.pm
mysql-5.6.12-linux-glibc2.5-i686/mysql-test/lib/My/ConfigFactory.pm
mysql-5.6.12-linux-glibc2.5-i686/mysql-test/lib/My/CoreDump.pm
[root@HOME002 src]#
[root@HOME002 src]# ls -l
合計 581804
-rw-r--r--  1 root root 296649804  4月  8 21:54 mysql-5.6.11-linux-glibc2.5-i686.tar.gz
drwxr-xr-x 13 root root      4096  6月 22 10:09 mysql-5.6.12-linux-glibc2.5-i686
-rw-r--r--  1 root root 298502256  6月 22 09:51 mysql-5.6.12-linux-glibc2.5-i686.tar.gz
[root@HOME002 src]# mv mysql-5.6.12-linux-glibc2.5-i686 /usr/local/
[root@HOME002 src]# cd /usr/local/
[root@HOME002 local]# ls -l
合計 116
drwxr-xr-x  2 root  root  4096  1月  8 14:59 bin
drwxr-xr-x  2 root  root  4096  3月 30  2007 etc
drwxr-xr-x  2 root  root  4096  3月 30  2007 games
drwxr-xr-x  2 root  root  4096  1月  7 19:58 include
drwxr-xr-x  3 root  root  4096  1月  7 19:58 lib
drwxr-xr-x  2 root  root  4096  3月 30  2007 libexec
drwxr-xr-x  3 root  root  4096  1月  7 19:58 man
lrwxrwxrwx  1 root  root    32  4月 28 16:15 mysql -> mysql-5.6.11-linux-glibc2.5-i686
drwxrwxr-x 13 mysql mysql 4096  1月 25 15:14 mysql-5.5.29-linux2.6-i686
drwxrwxr-x 13 mysql mysql 4096  2月 16 15:51 mysql-5.6.10-linux-glibc2.5-i686
drwxr-xr-x 13 mysql mysql 4096  4月 28 16:11 mysql-5.6.11-linux-glibc2.5-i686
drwxr-xr-x 13 root  root  4096  6月 22 10:09 mysql-5.6.12-linux-glibc2.5-i686
drwxr-xr-x  2 root  root  4096  3月 30  2007 sbin
drwxr-xr-x  5 root  root  4096  1月  7 19:58 share
drwxr-xr-x  2 root  root  4096  6月 22 10:16 src
[root@HOME002 local]#

シンボリック張り直し、データコピーとパーミッション変更してMYSQLを起動させる。

[root@HOME002 local]# rm mysql
rm: remove シンボリックリンク `mysql'? y
[root@HOME002 local]# ln -s mysql-5.6.12-linux-glibc2.5-i686/ mysql
[root@HOME002 local]# ls -l
合計 116
drwxr-xr-x  2 root  root  4096  1月  8 14:59 bin
drwxr-xr-x  2 root  root  4096  3月 30  2007 etc
drwxr-xr-x  2 root  root  4096  3月 30  2007 games
drwxr-xr-x  2 root  root  4096  1月  7 19:58 include
drwxr-xr-x  3 root  root  4096  1月  7 19:58 lib
drwxr-xr-x  2 root  root  4096  3月 30  2007 libexec
drwxr-xr-x  3 root  root  4096  1月  7 19:58 man
lrwxrwxrwx  1 root  root    33  6月 22 10:18 mysql -> mysql-5.6.12-linux-glibc2.5-i686/
drwxrwxr-x 13 mysql mysql 4096  1月 25 15:14 mysql-5.5.29-linux2.6-i686
drwxrwxr-x 13 mysql mysql 4096  2月 16 15:51 mysql-5.6.10-linux-glibc2.5-i686
drwxr-xr-x 13 mysql mysql 4096  4月 28 16:11 mysql-5.6.11-linux-glibc2.5-i686
drwxr-xr-x 13 root  root  4096  6月 22 10:09 mysql-5.6.12-linux-glibc2.5-i686
drwxr-xr-x  2 root  root  4096  3月 30  2007 sbin
drwxr-xr-x  5 root  root  4096  1月  7 19:58 share
drwxr-xr-x  2 root  root  4096  6月 22 10:16 src
[root@HOME002 local]#

[root@HOME002 local]# cp -rp /usr/local/mysql-5.6.11-linux-glibc2.5-i686/data/* /usr/local/mysql/data/
[root@HOME002 local]# chown -R mysql:mysql mysql-5.6.12-linux-glibc2.5-i686/
[root@HOME002 local]# chmod -R 755 mysql-5.6.12-linux-glibc2.5-i686/
[root@HOME002 local]# ls -l
合計 116
drwxr-xr-x  2 root  root  4096  1月  8 14:59 bin
drwxr-xr-x  2 root  root  4096  3月 30  2007 etc
drwxr-xr-x  2 root  root  4096  3月 30  2007 games
drwxr-xr-x  2 root  root  4096  1月  7 19:58 include
drwxr-xr-x  3 root  root  4096  1月  7 19:58 lib
drwxr-xr-x  2 root  root  4096  3月 30  2007 libexec
drwxr-xr-x  3 root  root  4096  1月  7 19:58 man
lrwxrwxrwx  1 root  root    33  6月 22 10:18 mysql -> mysql-5.6.12-linux-glibc2.5-i686/
drwxrwxr-x 13 mysql mysql 4096  1月 25 15:14 mysql-5.5.29-linux2.6-i686
drwxrwxr-x 13 mysql mysql 4096  2月 16 15:51 mysql-5.6.10-linux-glibc2.5-i686
drwxr-xr-x 13 mysql mysql 4096  4月 28 16:11 mysql-5.6.11-linux-glibc2.5-i686
drwxr-xr-x 13 mysql mysql 4096  6月 22 10:09 mysql-5.6.12-linux-glibc2.5-i686
drwxr-xr-x  2 root  root  4096  3月 30  2007 sbin
drwxr-xr-x  5 root  root  4096  1月  7 19:58 share
drwxr-xr-x  2 root  root  4096  6月 22 10:16 src
[root@HOME002 local]# cd

[root@HOME002 bin]# /etc/init.d/mysql start
Starting MySQL.......                                      [  OK  ]
[root@HOME002 bin]#

最後にシステムテーブルを更新して終了
[MYSQL]
[root@HOME002 mysql]# pwd
/usr/local/mysql
[root@HOME002 mysql]# ./bin/mysql_upgrade -u root -p
Enter password:
Looking for ‘mysql’ as: ./bin/mysql
Looking for ‘mysqlcheck’ as: ./bin/mysqlcheck
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
Warning: Using a password on the command line interface can be insecure.
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
Warning: Using a password on the command line interface can be insecure.
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Running ‘mysql_fix_privilege_tables’…
Warning: Using a password on the command line interface can be insecure.
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
Warning: Using a password on the command line interface can be insecure.
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
Warning: Using a password on the command line interface can be insecure.
test.TABLE001 OK
test.timestamp_chk OK
test.timestamp_chk2 OK
OK
[root@HOME002 mysql]#
[/MYSQL]
※ このパスワードをコマンドで利用するのはセキュリティ的に良くないというコメントは次回対応。

起動ログの確認
ログにもとくには問題無く、レプリケーションも問題ない様なので、
あとはセキュリティ対策して完了。

2013-06-22 10:03:39 2598 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

130622 10:03:39 mysqld_safe mysqld from pid file /usr/local/mysql/data/HOME002.localdomain.pid ended
130622 10:24:03 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
2013-06-22 10:24:06 12718 [Note] Plugin 'FEDERATED' is disabled.
2013-06-22 10:24:06 12718 [Note] InnoDB: The InnoDB memory heap is disabled
2013-06-22 10:24:06 12718 [Note] InnoDB: Mutexes and rw_locks use InnoDB's own implementation
2013-06-22 10:24:06 12718 [Note] InnoDB: Compressed tables use zlib 1.2.3
2013-06-22 10:24:06 12718 [Note] InnoDB: Using Linux native AIO
2013-06-22 10:24:06 12718 [Note] InnoDB: Not using CPU crc32 instructions
2013-06-22 10:24:06 12718 [Note] InnoDB: Initializing buffer pool, size = 32.0M
2013-06-22 10:24:06 12718 [Note] InnoDB: Completed initialization of buffer pool
2013-06-22 10:24:07 12718 [Note] InnoDB: Highest supported file format is Barracuda.
2013-06-22 10:24:08 12718 [Note] InnoDB: 128 rollback segment(s) are active.
2013-06-22 10:24:08 12718 [Note] InnoDB: Waiting for purge to start
2013-06-22 10:24:08 12718 [Note] Server hostname (bind-address): '*'; port: 3306
2013-06-22 10:24:08 12718 [Note] IPv6 is available.
2013-06-22 10:24:08 12718 [Note]   - '::' resolves to '::';
2013-06-22 10:24:08 12718 [Note] Server socket created on IP: '::'.
2013-06-22 10:24:09 12718 [Note] Slave I/O thread: Start semi-sync replication to master 'slave_user@home001:3306' in log 'mysql-bin.000032' at position 435
2013-06-22 10:24:09 12718 [Warning] Storing MySQL user name or password information in the master.info repository is not secure and is therefore not recommended. Please see the MySQL Manual for more about this issue and possible alternatives.
2013-06-22 10:24:09 12718 [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0
2013-06-22 10:24:09 12718 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000032' at position 435, relay log '/usr/local/mysql/data/relay-bin.000006' position: 283
2013-06-22 10:24:10 12718 [Note] Slave I/O thread: connected to master 'slave_user@home001:3306',replication started in log 'mysql-bin.000032' at position 435
2013-06-22 10:24:10 12718 [Note] Event Scheduler: Loaded 0 events
2013-06-22 10:24:10 12718 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.6.12-log'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
[root@HOME002 data]#

upgradedone5612


db tech showcase 2012
に参加してきました。DBエンジニアとしては、非常に有意義で楽しいセミナーでした。

DB Tech Showcase

前職ではDBのコンサルやDB Teamのマネージャーしていましたが、
現職ではマネージメントに専念していてここ2~3年程きちんと触れていませんでしたが、
久々にDB技術の変化と触れ合ってきました。
DBのパフォーマンスは、CPU、メモリー、ディスク、ネットワークがメインですが、
最近はCPU、64bit化によるメモリー効率改善、SSDなどの影響でI/Oパフォーマンス向上して、
ネットワークに影響が出ているようで、InfinibandがMS SQL,MYSQL,Oracleでも盛り上がっている感じでした。

DB Tech Showcaseメモ

SQL Server

○AlwaysON
━Availability Group
データベース単位
  共有ディスク無し
  複数DBフェイルオーバー
  複数のセカンダリーサーバー(Max:4台―但しACKが遅いのでレスポンス注意)
CheckPoint単位で同期(1分デフォルト) Primary & Secondary同時
   ①ログ→②メモリー→③Checkpoint→④データファイル
   MSベンチマークでは代替63M/秒
━FailOver Cluster
 インスタンス単位
  共有ディスク
  Windows2008R2+SQL 2012 複数サイト(サブネットを跨いだクラスタリング2012から可能)
Windows Server FailOver Cluster

━FailOver Cluster+Availability Groupの構成もあり。
 ━Availability Group  (同期レプリカ、自動フェールオーバー、リーダブルセカンダリー)
━Availability Group DR (複数レプリカー同期(SYNC)は2台まで。
  非同期(A-SYNC)レプリカ (A-SYNCなのでコミットを待たない)
━マルチサブネット対応
 DBCC TRACEON(3499, -1) Availability Groupの書き込みパフォーマンス調整。

 ━パフォーマンス確認(SQL Server: SQL Statistics オブジェクト)
http://msdn.microsoft.com/ja-jp/library/ms190911.aspx
http://msdn.microsoft.com/ja-jp/library/ms190732%28v=sql.90%29.aspx
http://www.confio.com/db-resources/sql-wait-types/writelog/

Batch Requests/sec
Log write waits
Logical Disk Read Bytes/sec (バッファーメモリー、ディスクI/O)

注意: 同期レプリカの場合、2台のDBログに書き込んでからACKをサーバーに返す為パフォーマンス要確認。

○InfiniBand and SSD
 ━Windows2012 SQL2012からSMB3.0に対応
  SMB3.0対応
  SMB Direct (RDMAを持つNetwork Adapterをサポート)→Infinibandディフォルト対応。
  今まで ①L1:NIC→L2→L3:CPU→L7 これから L1->L7へダイレクト(高速)
SMB Multi Channel対応(Auto Failover,Auto Detect)
http://www.atmarkit.co.jp/fnetwork/tokusyuu/61ib02/01.html
http://msdn.microsoft.com/en-us/library/dd425070%28v=sql.100%29.aspx
http://www.mellanox.co.jp/
http://www.atmarkit.co.jp/fnetwork/tokusyuu/61ib02/01.html

デモ検証実測値)
Windows2012 6.5GB/Sec
SQL2012 4.2GB/Sec
IB Switch 3.8GB/Sec
SSD 2.5GB/Sec
  注:PCI Busの制限は要確認。(PCI-E: 4GB/Sec)
○SQL ServerとIndexの進化
 Column Store Index
特定行のカラムだけを取る。→ DistinctやGroup byが高速化
テーブルに対して1つだけ付与する事が出来る。(全ての列を含む1つインデックスを作成する事も可能)
 全てのデータをintに変換してHASHにして圧縮をかける(blobで保存)
 対応しているデータ型は特定されているので要確認。(int, real,datetime,money等) varcharは不可
CREATE COLUMNSTORE INDEX (Transact-SQL)
 http://msdn.microsoft.com/en-us/library/gg492153.aspx

 検証)
  Column Store Indexを利用しない場合
  41秒(Clustered Indexで処理)
(MAXDOP =0)
Column Store Indexを利用した場合
37秒 (MAXDOP =1)
Column Store Indexを利用した場合
7秒 (MAXDOP =0)
 注:ReadOnlyなので必要な場合はバッチで処理する。(tableはReadになる)
   パーティショニングに対応しているので、パーティション毎に作成して直近のデータのみバッチ作成等

○SQL Server Tuning Point
━SQL2012 Lock変更
SQL2012までは…….
(A) select * from T SCH-S
(B) alter table T SCH-M
(C) select * from T with(NOLOCK) SCH-S
(A) -> (C) -> (B) の順になりAとCの処理をBが待ち続ける。(DDL Starvation)
SQL2012以降は ……
FIFOアルゴリズム採用してSCH-SはSCH-Mをスキップしない。
  但しTraceFlag 617を設定する事でNOLOCKの処理を優先する事が出来る。(再起動不要)
━統計情報変更
自動更新の為の閾値
  テーブル基数(データ量)<=500件 500回のデータ変更で統計を更新   テーブル基数(データ量)> 500件 500回のデータ変更+20%の変更で統計更新
  (例) 10億件のデータがある場合
     10億X0.2+500= 200,000,500件の変更発生で統計情報更新
  Changes to automatic update statistics in SQL Server ? traceflag 2371 -> SQRT(データ件数 * 1000)
  http://blogs.msdn.com/b/saponsqlserver/archive/2011/09/07/changes-to-automatic-update-statistics-in-sql-server-traceflag-2371.aspx
  http://sqlserverpedia.com/blog/sql-server-bloggers/new-sql-2008-r2-sp1-trace-flag-adjusts-autostats-threshold/
  (例) 1,000,000,000件データがある場合は、SQRT(1,000,000,000X1000) = 1,000,000の変更で統計更新
  注:SQL2012, SQL2008R2 SP1から対応
  sys.dm_db_stats_properties を利用してサンプル数、更新日時、更新回数などを確認可能。(次回の統計更新タイミングが予測可能)
  http://msdn.microsoft.com/en-us/library/jj553546%28v=sql.105%29.aspx
DBCC SHOW_STATISTICSでも確認出来たが利便性向上の為に動的VIEWに変更された。
  http://sasuke.main.jp/sqrt.html

━FORCESEEK
  オプティマイザーをオーバーライト
  データへのアクセス パスとしてインデックスのシーク操作のみを使用するようにクエリ オプティマイザを設定可能。
  クラスター化、非クラスター化インデックスに有効。
  http://msdn.microsoft.com/ja-jp/library/bb510478%28v=sql.105%29.aspx
forceseekにインデックスの指定は出来無かったが、2008R2からは指定出来るようになった。
 select * from table with (forceseek) -> select * from table with (forceseek(ix(c1,c2))

━クエリープラン拡張
クエリープラン収集機能拡張
  ~SQL2008 R2 Profiler, SQL Trace, SET STATISTICS PROFILE
条件:収集する or 収集しない
  収集負荷が高い、収集出来ない事が多い
SQL2008 R2 ~
  拡張イベントとして設定可能(条件設定可能:実行時間、CPUtime 2秒以上のクエリーなどのみを取る事が出来る)
  絞り込み可能

 ━ページ割り当て確認
  SQL Server 2012では、DBCC INDやDBCC EXTENTINFOといったアンドキュメンテッドのコマンドにとって代わる
  sys.dm_db_database_page_allocationsという名前の新しい動的管理関数が導入されました。
  基本8K
~ SQL2008 R2までは DBCC EXTENTINFO
SQL2012 ~
  sys.dm_db_database_page_allocation
  http://enterprisezine.jp/dbonline/detail/3950?p=2

 ━Cardinality Estimation
  Estimate Framework
クエリー実行に時間がかかる場合
  → カージナリティ見積もり不正、統計不正、インデックス不正
  推定実行プラン(estimate)は、実際の実行プランと違う場合があるので何が実歳に違うか確認する事が出来る。(1回実行後)
統計情報の不正を確認出来るが、FALSE POSITIVEも拾ってしまうので注意
  実行中は負荷が上る、過剰見積もり、並列クエリーのノイズ(スレッド)などに注意しておく。
  Troubleshooting Poor Query Performance: Cardinality Estimation
  http://msdn.microsoft.com/en-us/library/ms181034%28v=sql.105%29.aspx

━高パフォーマンスの負荷で実行されている SQL Server 2005 および SQL Server 2008 のチューニング オプション
トレース フラグ 834: バッファ プールに対する Microsoft Windows large-page allocations の使用 
http://support.microsoft.com/kb/920093/ja
トレース フラグ 2301: 詳細な意思決定サポートの最適化を有効にする
http://support.microsoft.com/kb/920093/ja

━sys.dm_os_wait_stats (Transact-SQL)
  http://msdn.microsoft.com/ja-jp/library/ms179984.aspx
order by wait_time_ms descで思い処理を調査出来る。
○SQL ServerとNUMA

━MAXDOPは物理コア数に合わせる。(AMDだけ注意 16->8 8->4で設定)
 最近のHYPER-THREADは改善されていて、ONにしておくとOLTPでのパフォーマンスが10%程度上がる。
 OLTPとNUMA
 8Socket + Hyper Thread ON 2400ユーザー/秒
 4Socket + Hyper Thread ON 1400ユーザー/秒
ディスク構成例:Data (SSD),Index(SSD),T-Log(Disk), tempDB(DISK)
 NUMA設定で0~3はNetworksにCPUが利用される。
 sys.dm_os_memory_node_access_stats
* Cross NUMA node memory access statistics
* Trace Flag 842 is needed
 Page life Expectancyは30分程度はあった方が望ましい。(無い場合はメモリー不足を確認)
 http://www.atmarkit.co.jp/fdb/rensai/10_drk/03/drk02.html
 How to Identify Microsoft SQL Server Memory Bottlenecks
 http://www.mssqltips.com/sqlservertip/2304/how-to-identify-microsoft-sql-server-memory-bottlenecks/
 Finding Implicit Column Conversions in the Plan Cache
 http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/01/08/finding-implicit-column-conversions-in-the-plan-cache.aspx
 Coreinfo v3.1(mapping between logical processors and the physical processor)
 http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx

その他、Always On
https://skydrive.live.com/?cid=DEC1C75BCA0DCEB2&id=DEC1C75BCA0DCEB2!11496

MYSQL

○MariaDB
http://mariadb.org/
http://enterprisezine.jp/dbonline/detail/4220
 better than MYSQL
Full Compatible with MYSQL
Bug-Free? (MYSQLのバグを見てFixしてからリリース)
 GPLv2
XtraDB = InnoDB
MYSQLと比較するとCheckpointの頻度が少ない。(DiskへのFlashが少ない)
OptimizerはMYSQL5.68より優れている。
 MariaDB5.3 GIS support
MyISAMを利用しているユーザーにはKey Cacheが1~64セグメント設定出来るのでお勧め。
 基本的には1つのメジャーバージョンは5年サポートする。
About XtraDB
https://kb.askmonty.org/en/about-xtradb/

○MYSQL5.6新機能
セミナー資料by 奥野さん
━レプリケーション
 GTIDを保持してどのスレーブが最新か確認し自動昇格可能
 change master to master_host=’~~~’, master_auto_position =1;
 mysqlfailoverツール(workbenchに付属→マスターの自動フェイルオーバー実行)
 http://b.l0g.jp/mysql/mysql565-gtid/
 http://dev.mysql.com/doc/workbench/en/mysqlfailover.html
 http://yoku0825.blogspot.jp/2012/10/mysqlfailovermysql-utilitieslinux.html

 クラッシュセーフスレーブ(ファイル→InnoDBにレプリケーション情報を持つ事が可能)
 mysqlbinlogコマンドによるバイナリーログバックアップ
 スレーブ利用するNIC指定
 マルチスレッドスレーブ

━InnoDB
 インデックス追加・削除がオンライン可能(Clustered Indexは別)
 *.idbファイルのImport/Export可能
 http://dev.mysql.com/doc/refman/5.6/en/flush.html
インデックス統計改善
 memcached Interface追加
 ログMAXサイズが512GBまで拡張可能
 FULLTEXTインデックスサポート
 ページサイズ指定(4KB,8KB,16KB)
バッファープールの内容を保存、再起動時の暖機運転不要
http://nippondanji.blogspot.jp/2012/10/mysql-56.html

━Optimizer
 Semi-Joinの最適化
 Explainの改善(select以外のDMLも確認可能)

 Order by ~ Limit句の改善
 オプティマイザートレース
 MRR (RowIDをバッファーに入れてソート処理)

━パーティショニング
 パーティション間でのJOIN可能
 パーティション作成可能数1024→8192へ。
 ロック改善(テーブルロックの対象がパーティション単位へ)

━その他
 セキュリティ (slaveのスタートにパスワード入力可能=パラメーターへの書き込み不要)
 OpenGIS
パフォーマンス確認、小数点以下へ対応
スケーラビリティ(R/W: MYSQL5.5比 → 151%改善 Read: NYSQL5.5比で234%改善)
Kernel_Mutexによる処理の分散
Flush改善(リソース状況により詳細調整可能)
http://www.mysqlperformanceblog.com/2011/03/31/innodb-flushing-a-lot-of-memory-and-slow-disk/