はじめに
以下の実装を目標にする。
・AmazonLinux2にmysql8をインストール
※インフラAWS化を目指している初学者
使用PC:Mac
mysqlパッケージに関する注意点
EC2
のAMI
でAmazonLinux2を選択した場合
CentOS7系がベースとなっているため
mysql8で選択すべきパッケージ
は
**mysql80-community-release-el7-3.noarch.rpm
(2021/8/18時点)**となる。
MySQL公式ページから自分がインストールする時に適切なパッケージを確認する。
手順
1、MySQL公式ページから対象パッケージをダウンロード
2、ローカルにダウンロードしたファイルを、リモート(AWS ES2)にscpコマンドでコピー
3、ファイルからMySQLをインストールする
恐らく、遠回りな実装例だが個人的にイメージがつきやすかったのでこの方法で進める。
(mysql公式ページのURLを読み取ってインストールした方が早道)
→ 圧倒的にURL読み取りの方が楽なので、4.にまとめた
1、対象パッケージをダウンロード
下記の公式ページからパッケージをダウンロードする。
(今回はEC2のAMIにAmazonLinux2
を選択しているため7系
を選択する。)
すると自分のローカル(MacならFinder内)にダウンロードされるので
ちゃんと出来ているか確認しておく。
2、ローカルからリモートへコピー
下記コマンドでリモートのホームディレクトリ配下に
ファイルを置いておく。
(Macユーザーのため.sshディレクトリにEC2の秘密鍵を入れている。
)
# scp <秘密鍵の認証> <コピー元ファイル> <コピー先>
% scp -i ~/.ssh/秘密鍵名.pem ~/Downloads/mysql80-community-release-el7-3.noarch.rpm ec2-user@リモートIPアドレス:~/
3、mysqlインストール
まずは、EC2にログインします。
# ssh接続でEC2にログイン
% ssh -i ~/.ssh/秘密鍵名.pem ec2-user@リモートIPアドレス
### SSH情報を登録する場合
% vi ~/.ssh/config
##### EC2アクセス というコメント
Host ホスト名
HostName IPアドレス
User ec2-user
IdentityFile ~/.ssh/秘密鍵
### コマンドを省略してEC2にログイン
% ssh ホスト名
あとは公式ページのコマンドに従って入力していく。
# デフォルトでインストール済みのMariaDBパッケージ一式を削除する
% sudo yum remove mariadb*
# yumのリポジトリにセット
% sudo yum install mysql80-community-release-el7-3.noarch.rpm
# セットできたかを確認
% yum repolist enabled | grep "mysql.*-community.*"
# mysqlをインストール
% sudo yum install mysql-community-server
# mysqlを起動
% sudo service mysqld start
# 起動確認
% sudo systemctl status mysqld.service
4.(楽)MySQLのURLを参照してyumにインストールさせる
わざわざファイルをダウンロードするのは手間なので
直接URLからインストールする方法をまとめる。(2021/01/04時点)
% sudo yum remove mariadb*
% sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm
% sudo yum install --enablerepo=mysql80-community mysql-community-server
% sudo yum install --enablerepo=mysql80-community mysql-community-devel
% sudo service mysqld start
% sudo systemctl status mysqld.service
自分がハマった部分
冒頭で説明している
EC2のAMI(AmazonLinux2)とMySQLバージョン相性
を
しっかり理解しないまま、実装すると以下のドツボにハマった。
・AMIがAmazonLinux2なのにmysql8.0(8系)をダウンロード/インストールしてしまう
・間違いだと気づき、ダウンロードファイルとyumにセットされたパッケージを削除
・正しいmysql8.0(7系)シリーズをダウンロードする
・再びインストールするも依存関係のエラーが発生
・しばらく解決策の情報収集して、色々試すも解決せず
・ふとエラー文を見ると、なぜかmysqlをインストールするコマンド入力時に
mysql8.0(8系)に変換されてしまっていることが発覚。
・ただし、どこに過去のファイルが残っていて影響しているのか特定できず
(ネットで同じ状況の人を探すもヒットしない…)
% sudo yum install mysql-community-server
~ 結果 ~
インストール中 : mysql-community-client-plugins-8.0.26-1.el8.x86_64
↑el7じゃない…
ここから解決策が上手く探し出せずに、泣く泣く下記方法で解決した。
・EC2を削除して一から立て直しする
意外と同じ状態にハマる人もいるかもしれないので、記録に残す。
番外:mysqlシリーズを変更する
インストール前に
MySQL8.0ではなく、5.7や5.6に変更したい場合は
現状どのシリーズが有効になっているかを確認
% yum repolist all | grep mysql
デフォルトではシリーズはMySQL8.0が有効となっているので
8.0を無効に、対象シリーズを有効に変更する。
% sudo yum-config-manager --disable mysql80-community
% sudo yum-config-manager --enable mysql57-community
同様にmysqlをインストールする。
% sudo yum install mysql-community-server
終わりに
AWSのビジネスサポートに月100$で加入できるらしいので
どのタイミングで加入しようか検討中。
いま、加入したら序盤も序盤すぎて
質問の仕方も曖昧になってしまって、無駄遣いになりそう。
まずは、基本のrailsアプリをEC2上に
デプロイする所までは自力で頑張ろう。