目次

MySQL 5.7 に関するあれこれ

VerUP

既存の5.6から5.7へのアップデートは以下の手順で可能。
https://dev.mysql.com/doc/refman/5.7/en/upgrading.html#upgrade-procedure-inplace

# /usr/bin/mysql -V
/usr/bin/mysql  Ver 14.14 Distrib 5.6.29, for Linux (x86_64) using  EditLine wrapper

WALの内容をシャットダウン時にテーブルスペースに反映させる
# /usr/bin/mysql -u root -p -e "show global variables like 'innodb_fast_shutdown';"
Enter password: 
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_fast_shutdown | 1     |
+----------------------+-------+

# /usr/bin/mysql -u root -p -e "set global innodb_fast_shutdown=0"
Enter password:

シャットダウン
# /usr/bin/mysqladmin -u root -p shutdown
Enter password:

(必要であれば)5.6のリポジトリ情報削除
# yum remove mysql-community-release

# yum install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
# yum clean all
# yum update mysql-server
~省略~
==========================================================================================
 パッケージ                      アーキテクチャ
                                            バージョン        リポジトリー           容量
==========================================================================================
更新:
 mysql-community-server          x86_64     5.7.11-1.el6      mysql57-community     135 M
依存性関連での更新をします。:
 mysql-community-client          x86_64     5.7.11-1.el6      mysql57-community      23 M
 mysql-community-common          x86_64     5.7.11-1.el6      mysql57-community     326 k
 mysql-community-devel           x86_64     5.7.11-1.el6      mysql57-community     3.7 M
 mysql-community-libs            x86_64     5.7.11-1.el6      mysql57-community     2.1 M
 mysql-community-libs-compat     x86_64     5.7.11-1.el6      mysql57-community     1.6 M

トランザクションの要約
==========================================================================================
アップグレード       6 パッケージ
~省略~
warning: /etc/my.cnf created as /etc/my.cnf.rpmnew
~省略~

# mysql -V
mysql  Ver 14.14 Distrib 5.7.11, for Linux (x86_64) using  EditLine wrapper

# cp /etc/my.cnf /etc/my.cnf.56
# vi /etc/my.cnf
28,39c28
< ##----------------- 5.6 compatible -----------------##
<
< sql_mode= NO_ENGINE_SUBSTITUTION
< secure_file_priv= ""
< binlog_format= STATEMENT
< innodb_buffer_pool_dump_at_shutdown= 0
< innodb_buffer_pool_load_at_startup= 0
< innodb_buffer_pool_dump_pct= 100
< default_password_lifetime= 0
< ### Remove log_warnings!!
< log_error_verbosity= 3
< log_timestamps= SYSTEM
< internal_tmp_disk_storage_engine= MyISAM
< show_compatibility_56= ON
---
> sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
40a30
> [mysqld_safe]
43,45d32
< 
< validate-password=OFF
< 

# /etc/init.d/mysqld start 

# mysql_upgrade -u root -p
Enter password:

# /etc/init.d/mysqld restart 

5.6をMasterとしたReplication

可能。

https://dev.mysql.com/doc/refman/5.7/en/replication-compatibility.html

MySQL supports replication from one release series to the next higher release series. For example, you can replicate from a master running MySQL 5.5 to a slave running MySQL 5.6, from a master running MySQL 5.6 to a slave running MySQL 5.7, and so on.

Percona XtraBackup

2.4から対応している。

https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

yumでインストールする時には、Verを指定する必要がある。

# yum install percona-xtrabackup-24

Percona XtraBackup からのリストア

5.7のバックアップを5.7なら可能。
5.6など以前のVerへは不可能。

memo

オリジナルのデータディレクトリを置き換えたあとMySQLが起動しない場合は、SELINUXを疑う。

# /etc/init.d/mysqld start                                                                                                                                                                                                    
MySQL Daemon failed to start.
mysqld を起動中:                                           [失敗]

# tail /var/log/mysqld.log
160407 04:09:28 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2016-04-07 04:09:29 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-04-07 04:09:29 0 [Note] /usr/sbin/mysqld (mysqld 5.6.29-log) starting as process 14762 ...
2016-04-07 04:09:29 14762 [Warning] Can't create test file /var/lib/mysql/my03.lower-test
2016-04-07 04:09:29 14762 [Warning] Can't create test file /var/lib/mysql/my03.lower-test
/usr/sbin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13 - Permission denied)
2016-04-07 04:09:29 14762 [ERROR] Aborting

2016-04-07 04:09:29 14762 [Note] Binlog end
2016-04-07 04:09:29 14762 [Note] /usr/sbin/mysqld: Shutdown complete

160407 04:09:29 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

# getenforce                                                                                                                                                                                                                  
Enforcing
# setenforce 0                                                                                                                                                                                                                
# getenforce 
Permissive