GA

2020/12/06

今年もConoHa VPSでひたすらMySQLをビルドする

この記事は ConoHa Advent Calendar 2020MySQL Advent Calendar 2020 の6日目の記事です。

どうやら5年目のようです。「今年は気分を変えてCentOS 8.xでやってみようかな」と思ったんですが既に去年やっていた。まあいいか。


というわけで今年もConoHa VPSの1GBプランのVMの上にCnetOS 8.2のインスタンスを新しく立ち上げてMySQLをビルドします。 ちなみに、MySQL公式としてはCentOS 8.xがサポートしているのはMySQL 8.0だけです

とはいえ一応ビルドのターゲットは5.6, 5.7, 8.0。MySQL 5.6は2021/02にEOLになるので、(来年も書くとしても)このシリーズに登場するのはこれが最後でしょう。

去年の自分の記事 を見ながら、必要そうなものを一式入れる。

$ sudo dnf install --enablerepo=PowerTools cmake git make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen

まずは5.6から。

$ wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.50.tar.gz
$ tar xf mysql-5.6.50.tar.gz
$ cd mysql-5.6.50/
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/mysql/5.6.50
$ time make
..
real    23m6.670s
user    20m35.659s
sys     2m7.294s
$ sudo make install

5.7。

$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.32.tar.gz
$ tar xf mysql-boost-5.7.32.tar.gz
$ cd mysql-5.7.32/
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/mysql/5.7.32 -DWITH_BOOST=./boost
$ time make
..
real    61m54.120s
user    46m26.974s
sys     5m7.050s
$ sudo make install

8.0。最近、「mysql-test-runを走らせる機会があるならインソースビルドの方が楽だな」と思ったので -DFORCE_INSOURCE_BUILD=1 でインソースビルド。

$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.22.tar.gz
$ tar xf mysql-boost-8.0.22.tar.gz
$ cd mysql-8.0.22/
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/mysql/8.0.22 -DWITH_BOOST=./boost -DFORCE_INSOURCE_BUILD=1
$ time make
..
real    153m11.756s
user    113m6.386s
sys     11m57.793s
$ sudo make install

インストール済みのバイナリのサイズはこんなもの(datadirの初期化はしていない)

$ du -sh /usr/mysql/*
1.1G    /usr/mysql/5.6.50
2.3G    /usr/mysql/5.7.32
2.4G    /usr/mysql/8.0.22

そういえば、 CMAKE_BUILD_TYPE を Release (指定しなかった場合は RelWithDebInfo` でシンボルが含まれる) にするとバイナリサイズが小さくなるって教えてもらった気がするので試してみる。

$ cmake -DCMAKE_INSTALL_PREFIX=/usr/mysql/8.0.22 -DWITH_BOOST=./boost -DFORCE_INSOURCE_BUILD=1 -DCMAKE_BUILD_TYPE=Release
$ time make
..
real    91m45.861s
user    80m34.327s
sys     6m15.648s
$ sudo make install
$ du -sh /usr/mysql/8.0.22*
810M    /usr/mysql/8.0.22
2.4G    /usr/mysql/8.0.22_RelWithDebInfo

うおお、ビルドも速いしバイナリ小さい!!!
ご活用ください(?)

0 件のコメント :

コメントを投稿