2017年1月6日金曜日

AWS上でMySQL5.7動作環境を最速で作る方法(MySQL::Sandbox使用)

@sakaik さんの連載(?)を読んでいたらやたら楽しそうで俺もなんかビルドしたくなってたまらなくなったので。

MySQLをビルドする on AWS Red Hat 7.3 - sakaikの日々雑感~(T)編
ふたつのバージョンのMySQLを同時に動かす on AWS Red Hat 7.3 - sakaikの日々雑感~(T)編
MySQL 5.7 のビルドにトライ ~ 5.6とは大違い - sakaikの日々雑感~(T)編
MySQL 5.7 を t2.micro でもビルドできた! - sakaikの日々雑感~(T)編
AWS上でMySQL5.7動作環境を最速で作る方法(Generic binaries使用) - sakaikの日々雑感~(T)編

タイトルからわかるように、最後のエントリーに対抗してみました。

先に書いておくと、MySQL::Sandboxのインストールまで終わっていれば 15秒くらい でMySQL 5.7.17の起動までたどり着けます(あとで書きますがこれはMySQL::Sandboxの **中の人** が上手くやってる)


TL;DR

$ sudo su -i
# yum install -y perl-ExtUtils-MakeMaker perl-Data-Dumper
# curl -L cpanmin.us | perl - App::cpanminus
# /usr/local/bin/cpanm MySQL::Sandbox
# useradd mysql
# su - mysql
$ make_sandbox_from_url 5.7.17
$ msb 5717


みんなだいすき MySQL::Sandbox ですが、make_sandbox と make_replication_sandbox だけで満足していませんか?

MySQL::Sandbox 3.1.10から(2017年1月6日現在、最新版は3.2.05)は make_sandbox_from_url というコマンドを備えています。
引数なしで叩くとusage吐いてくれるので取り敢えず叩く。


$ make_sandbox_from_url
    The MySQL Sandbox,  version 3.2.05
    (C) 2006-2016 Giuseppe Maxia
### version needed

This script tries to create a sandbox using binaries downloaded from the web.
The success of this scripts depends on good connectivity
and availability of downloading tools.
##########################
# IT ONLY WORKS ON LINUX
##########################
The repository of available binaries is at https://github.com/datacharmer/mysql-docker-minimal/blob/master/dbdata .
Supported:
# 5.0 -> [ 5.0.96 ]
# 5.1 -> [ 5.1.72 ]
# 5.5 -> [ 5.5.51 5.5.52 ]
# 5.6 -> [ 5.6.32 5.6.33 ]
# 5.7 -> [ 5.7.14 5.7.15 ]
# 8.0 -> [ 8.0.0 ]
The binaries are imported into /usr/mysql .

  make_sandbox_from_url X.X.XX [options]

    where X.X.XX is the version number.
    You can then pass any options accepted by make_sandbox.

make_sandbox_from_urlという名前ながら、引数はURLではなくてバージョン番号(make_sandboxと同じ)
これもともとは本当にURLだったけど、途中で変わったんじゃないかって気がする。確証はないし調べてもいない。


$ make_sandbox_from_url 5.7.17
2017-01-06 07:56:30 URL:https://raw.githubusercontent.com/datacharmer/mysql-docker-minimal/master/dbdata/available.txt [98/98] -> "/tmp/available.txt" [1]
wget -nv -O 5.7.17.tar.gz 'https://github.com/datacharmer/mysql-docker-minimal/blob/master/dbdata/5.7.17.tar.gz?raw=true'
2017-01-06 07:56:33 URL:https://raw.githubusercontent.com/datacharmer/mysql-docker-minimal/master/dbdata/5.7.17.tar.gz [40959490/40959490] -> "5.7.17.tar.gz" [1]
Executing low_level_make_sandbox --basedir=/home/mysql/opt/mysql/5.7.17 \
        --sandbox_directory=msb_5_7_17 \
        --install_version=5.7 \
        --sandbox_port=5717 \
        --no_ver_after_name \
        --my_clause=log-error=msandbox.err
..

do you agree? ([Y],n) Y
# Starting server
.. sandbox server started
# Loading grants
Your sandbox server was installed in $HOME/sandboxes/msb_5_7_17

$ msb 5717
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.17 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, 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 [localhost] {msandbox} ((none)) > 

…しかし…数百MBあるバイナリーを落としてるにしては…? と思ったら、公式バイナリーではなく、MySQL::Sandbox作者のGitHubから取ってきてる。
軽量版MySQLバイナリー.tar.gzは このスクリプト で作っている様子。

というわけでこれを使えば、5.0でも5.1でも5.5でも5.6でも5.7でも8.0でも好きなリリースシリーズが入れられますよ! ;)

ちなみにダウンロードされたバイナリー.tar.gzと展開後のファイルは$HOME/opt/mysql に置かれる。40MB………どんだけいろんなもん積んでるんだよ公式バイナリー。。


$ ll opt/mysql/
total 79712
drwxrwxr-x 7 mysql mysql     4096 Dec 14 18:46 5.7.17
-rw-rw-r-- 1 mysql mysql 40959490 Jan  6 07:56 5.7.17.tar.gz
drwxrwxr-x 7 mysql mysql     4096 Sep 12 15:22 8.0.0
-rw-rw-r-- 1 mysql mysql 40654528 Jan  6 07:57 8.0.0.tar.gz

0 件のコメント :

コメントを投稿