Django、Amazon RDS(MariaDB)に接続する

Twitterでシェア FaceBookでシェア はてなブックマークでシェア

Python - Django
2018年11月22日21:14に更新(約21日前)
2018年10月16日4:40に作成(約58日前)

旧ブログ移行記事です。

概要

CentOS7でDjangoを動かすシリーズシリーズの一つです。

Amazon RDSでMariaDBを利用し、Djangoアプリケーションから接続していきます。 バックアップ機能や、自動でのバージョンアップ、スペックの変更、等が簡単に行なうことができ、運用・管理が楽になります。

Amazon RDS側の操作

RDSのトップページに移動すると、まだインスタンスがなければ以下のように表示されます。「今すぐ始める」を押します。 RDSのトップページ

MariaDBを選択します。無料枠で使うならば、下にある「RDS無料枠の対象オプションのみ有効化」をチェックしておきましょう。 データベースの選択

無料枠チェックを入れていると、有料になる設定はできなくなります。便利ですね。 有料設定が隠れる

DBインスタンスの識別子、マスターユーザー名、パスワードを入力します。このユーザーとパスワードを後で使うことにします。 各種情報の入力

ここはこのままで... 詳細設定画面はそのまま

データベースの名前を入れます。そして、下にある「DBインスタンスの作成」を押します。 データベースの名前を入れる

少し時間がかかります。 インスタンス作成中という画面

インスタンスが作成されると、RDSトップ→インスタンスに一覧が表示されるようになります。DBインスタンスのリンク(画像だとmyblog)をクリックします。 インスタンス一覧の表示

中断にある詳細に移動します。「エンドポイント」が、今作ったMariaDBインスタンスに接続するためのホスト名になります。控えておきましょう。 ホスト名の確認

「セキュリティグループ」がリンクになってるので、押すとこのページに移動されます、

移動されたこの画面の下、「インバウンド」タブを押し、「編集」ボタンを押します。

「ソース」が、どこからの接続を許可するかの指定です。0.0.0.0は全て許可ですが、ここを自分のサーバーのIPアドレスに変えたり、「カスタム」をマイIPに変えると自動でそのPCのIPアドレスが入力され、一部の接続だけ許可できるようになります。「ルールの追加」で、許可する接続先を増やせます。

データベースの移行

現在使っているMariaDBから、Amazon RDSに移行したい場合です。 まず、mysqldumpコマンドで現在使っているデータベース(mydjango)から取り出します。

ローカル環境(手元のPC)から、他のサーバーのMariaDBに接続する例

sudo mysqldump -h 接続先 --port ポート番号 -u ユーザー名 mydjango -p > dump

MariaDBがあるサーバー内で操作する例。-hなどが不要

sudo mysqldump -u ユーザー名 mydjango -p > dump

mysqldumpコマンドですが、全てのデータベースを指定するなど、色々と引数で指定ができます。

RDSへの移行方法ですが、既にMariaDBに接続できるので、直接流し込みましょう。 上のコマンドと合わせて覚えておくと、DB(MariaDB、MySQL同士)の以降も簡単になります。

sudo mysql -h さっき確認したエンドポイント -u マスターユーザー mydjango -p< dump

Django側の操作

今回は「PyMySQL」を使う例です。

pip install PyMySQL

settings.pyを、以下のようにしましょう。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydjango',
        'USER': 'マスターユーザー',
        'PASSWORD': 'マスターユーザーパスワード',
        'HOST': '詳細で確認したエンドポイント',
        'PORT': '3306',
    }
}
Twitterでシェア FaceBookでシェア はてなブックマークでシェア

記事にコメントする