Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dockerを使ってMySQL環境を構築しよう!

 Dockerを使ってMySQL環境を構築しよう!

2020年12月19日に開催された「Open Developers Conference 2020 Online」での発表資料です。
オラクル社が提供しているMySQLの公式Dockerイメージを使ってMySQL環境を構築する方法と、Oracle Cloud InfrastructureのAlways Free環境を活用する方法について解説しています。

YoshiakiYamasaki

December 19, 2020
Tweet

More Decks by YoshiakiYamasaki

Other Decks in Technology

Transcript

  1. 1. Dockerとは? 2. Dockerを使ったMySQL環境構築手順 3. Oracle Cloud Infrastructure の Always

    Free とは? 4. Always Free環境を使ったデモ 5. お知らせ アジェンダ Copyright © 2020, Oracle and/or its affiliates 3
  2. Dockerコンテナを使う理由 Copyright © 2020, Oracle and/or its affiliates 6 •

    アプリケーションスタック全体のプロビジョニングを迅速に行える • 初期状態への復帰が容易 • 柔軟なスケーリング
  3. ◼ 入手先 • Docker Hub (MySQL Community Edition) (※) •

    GitHub (MySQL Community Edition) (※) • My Oracle Support (MySQL Enterprise Edition) ※Docker公式イメージと、オラクル社が提供しているMySQL公式イメージは異なるので注意 ◼ 対応バージョン • MySQL 5.6 • MySQL 5.7 • MySQL 8.0 ◼ 対応OS • Linux MySQLのDockerイメージ Copyright © 2020, Oracle and/or its affiliates 7
  4. ◼ Docker Hub https://hub.docker.com/r/mysql/mysql-server ◼ GitHub https://github.com/mysql/mysql-docker ◼ イメージ名:mysql/mysql-server •

    バージョンの指定も可能 (例:mysql/server:8.0) • バージョンを指定しない場合は最新バージョン(本発表時点ではMySQL 8.0)のイメージになる オラクル社が提供しているMySQL公式イメージ Copyright © 2020, Oracle and/or its affiliates 8
  5. 1. Dockerのインストール 2. MySQLのDockerイメージをダウンロード 3. Dockerイメージの確認 4. Dockerイメージをコンテナ化し起動 5. Dockerコンテナを確認

    6. MySQLのrootユーザーの初期パスワードを確認 7. MySQLサーバーにrootユーザーで接続し、パスワードを任意のパスワードに変更 Dockerを使ったMySQL環境構築手順 Copyright © 2020, Oracle and/or its affiliates 10
  6. ◼ Dockerのインストール • 必要なパッケージのインストール • Dockerのリポジトリを追加 • Docker CEのインストール (*)

    • Dockerサービスの有効化 • Dockerサービスの起動 Dockerのインストール (CentOS, Oracle Linux の場合) Copyright © 2020, Oracle and/or its affiliates 11 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo systemctl enable docker sudo systemctl start docker ※後で実施するデモ時は /etc/yum.repos.d/docker-ce.repo 内の docker-ce-stable の baseurl を以下に修正してから実行 https://download.docker.com/linux/centos/7/$basearch/stable
  7. ◼ MySQLのDockerイメージをダウンロード ◼ Dockerイメージの確認 ◼ Dockerイメージをコンテナ化し起動 ◼ Dockerコンテナを確認 ◼ MySQLのrootユーザーの初期パスワードを確認

    ◼ MySQLサーバーにrootユーザーで接続し、パスワードを任意のパスワードに変更 Dockerを使ったMySQL環境構築 Copyright © 2020, Oracle and/or its affiliates 12 sudo docker pull mysql/mysql-server sudo docker images sudo docker run --name=コンテナ名 -d mysql/mysql-server sudo docker ps sudo docker logs コンテナ名 2>&1 | grep GENERATED sudo docker exec -it コンテナ名 mysql -u root -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';
  8. ◼ Dockerコンテナのシェルを使う ◼ Dockerコンテナの停止 ◼ Dockerコンテナの起動 ◼ Dockerコンテナの再起動 ◼ Dockerコンテナの削除

    その他のコマンド例 Copyright © 2020, Oracle and/or its affiliates 13 sudo docker exec -it コンテナ名 bash sudo docker stop コンテナ名 sudo docker start コンテナ名 sudo docker restart コンテナ名 sudo docker rm コンテナ名
  9. ◼ MySQL 8.0 Reference Manual / Deploying MySQL on Linux

    with Docker https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html マニュアルの情報 Copyright © 2020, Oracle and/or its affiliates 14
  10. ◼ 以下ページの”Example Databases”部分からサンプルデータベースをダウンロード可能 • MySQL Documentation: Other MySQL Documentation http://dev.mysql.com/doc/index-other.html

    ◼ 実体はSQLスクリプトファイルであるためテキストエディタで内容を確認可能 ◼ worldデータベース • MySQL研修や認定試験の問題などでも利用されているサンプルデータベース ◼ world_x database • worldデータベースにJSONデータを追加したサンプルデータベース ◼ sakila database • world databaseよりも多くのテーブルが存在 • geometryデータ型も含まれている(addressテーブルのlocation列) サンプルデータベース Copyright © 2020, Oracle and/or its affiliates 15
  11. ◼ Dockerコンテナ側にダウンロードしたファイルをコピー ◼ bashからsqlファイルを実行 ◼ インストールされたことを確認 サンプルデータベースのインストール例(world_x) Copyright © 2020,

    Oracle and/or its affiliates 16 docker cp <ファイルパス> <コンテナID>:<コピー先のファイルパス> 例) docker cp /Downloads/world_x-db/world_x.sql d4075bd36c83:/tmp/ docker exec -it コンテナ名 bash bash-4.2# mysql -u root -p < /tmp/world_x.sql bash-4.2# mysql -u root –p mysql> show databases;
  12. ◼ MySQL Operator • Kubernetes上のMySQL InnoDB Cluster運用を自動化 • 単一コマンドでKubernetes上にMySQL InnoDB

    Clusterを作成/スケール/削除 • MySQL InnoDB Clusterの自動修復(自動障害検出、自動回復) • データのバックアップ、リストア • https://github.com/oracle/mysql-operator MySQL on Kubernetes Copyright © 2020, Oracle and/or its affiliates 17
  13. Copyright © 2020, Oracle and/or its affiliates 18 Oracle Cloud

    Infrastructure の Always Free とは?
  14. ◼ Oracle Cloud Infrastructureを常時無償で使用できるサービス ◼ Always Free用のアカウントを作成すると、30日間有効な300USドルのクレジットも付与され Always Free対象外のサービスも利用できる ⇒

    MySQL Database Service はAlways Freeの対象外であるが、このクレジットで試すことが可能 Always Freeとは? Copyright © 2020, Oracle and/or its affiliates 20
  15. ◼ 以下のイベントに参加すると、特別オファーあり • MySQL関連のWebセミナー https://www.mysql.com/jp/news-and-events/web-seminars/ • Oracle Code Nightのオンラインイベント https://oracle-code-tokyo-dev.connpass.com/

    ◼ 特別オファー • アカウント作成時にクレジットカード情報の登録不要!! (通常であれば、クレジットカード情報の登録が必要です) • 一か月間有効な500USドルのクレジット付き!! (Always Free以外の有償のサービスも1か月間試せます) OCIのトライアルアカウントをお得に作成する方法 Copyright © 2020, Oracle and/or its affiliates 21
  16. ◼ 以下のURLからアカウント作成可能 https://myservices.us.oraclecloud.com/mycloud/signup ◼ 参考情報 • Oracle Cloud 無料トライアル サインアップガイド

    https://faq.oracle.co.jp/app/answers/detail/a_id/6492 • Oracle Cloud 無料トライアルに関するよくある質問(FAQ) https://www.oracle.com/jp/cloud/free/faq.html Always Freeのアカウントを作成する方法 Copyright © 2020, Oracle and/or its affiliates 22
  17. ◼ Oracle Cloud Infrastructure(OCI)上で提供しているMySQLのマネージドサービス • OCIとネイティブに統合されているため、セキュリティやパフォーマンスなど、 OCIの強みも活かせるマネージドサービス ◼ MySQL開発ベンダーであるオラクルにより提供されており、オンプレミスのMySQLと100%互換性がある •

    MySQL部分のサポートも含まれているため、安心して利用可能 ◼ MySQL Enterprise Edition 8.0をベースに構築されているため、MySQL Enterprise Edition限定機能も 使用できるようになる予定 (現時点では使用できないが、ロードマップに有り) • 監査ログ取得 • データマスキング • 怪しいSQLのブロック/検知、など MySQL Database Service とは? Copyright © 2020, Oracle and/or its affiliates 24
  18. フルマネージド データベースサービス Oracle MySQL Database Service Copyright © 2020, Oracle

    and/or its affiliates 25 MySQL On Premise MySQL Database Service Database Scaling (※) Backup Security Patch & Upgrade Provision & Configure OS OS Security Patch & Upgrade OS Installation Server Hardware Purchase & Maintenance Storage Storage Purchase & Maintenance Data Center Rack & Space Power, HVAC, Networking Automated Manual ※Auto Scaling機能はまだ提供されていませんが、今後提供される予定です
  19. ◼ 他社製のMySQLマネージドサービスと比べ、非常に低価格 • 3.1倍~3.7倍低価格 • 構成 • 100 OCPUs, 1

    TB Storage • 備考 • MySQL Database Service: • Standard E2 AMD 8GB/Core • 全リージョンで同一料金 • Amazon RDS: • Intel M5 8GB/Core • AWS US East. • Azure: • General Purpose Intel 10GB/Core • MS Azure US-East. • Google: • N1 Standard Intel 7.5GB/Core • GCP Northern Virginia. MySQL Database Service によるコスト削減 Copyright © 2020, Oracle and/or its affiliates 26 ※出典:https://blogs.oracle.com/mysql/introducing-the-mysql-database-service
  20. 分析処理が1,100倍高速、コスト1/3以下、利用開始まで1/30の時間 31 0 50 100 Data Preparation Time Hours 19.7

    129.7 4時間 30倍 高速 $0 $60,000 $120,000 Annual Cost $129,336 $37,022 1/3以下 のコスト Aurora (db.r5.24xlarge) HeatWave (E3 10ノード) 0 4,000 8,000 GeoMean of Query Run Time Seconds 5日 1100倍 高速 8 秒 2.5時間 インデックス作成 MySQL Database ServiceとAWS Auroraとの比較 (TPC-H, 4TB) *Benchmark queries are derived from TPC-H benchmark, but results are not comparable to published TPC-H benchmark results since they do not comply with TPC-H specification クエリ処理時間の幾何平均 データ準備時間 年間コスト
  21. Redshiftの最速スペックとの比較 4TB Redshift (4 * dc2.8xlarge) HeatWave (E3 10ノード) 0

    10 20 Geo Mean of 19 derived TPCH Queries* クエリ処理時間 (秒) 2.7x 高速 0 60,000 120,000 Annual Cost 1/3 コスト コスト ($) OLTP + 分析処理 19.7 7.3 $110,560 $37,022 分析処理 Copyright © 2020, Oracle and/or its affiliates. All rights reserved. 32 分析処理 OLTP + 分析処理 *Benchmark queries are derived from the TPC-H benchmark, but results are not comparable to published TPC-H benchmark results since they do not comply with the TPC-H specification TPC-Hの19種類のクエリの処理時間の幾何平均 年間コスト
  22. 4TB Redshift (2 * ra3.4xlarge) HeatWave (E3 10ノード) 0 50

    100 150 Geo Mean of 19 derived TPCH Queries* クエリ処理時間 (秒) 17.7x 高速 129.7 7.3 0 20,000 40,000 Annual Cost 3% コスト差 コスト ($) OLTP + 分析処理 $38,286 $37,022 分析処理 Copyright © 2020, Oracle and/or its affiliates. All rights reserved. 33 OLTP + 分析処理 分析処理 Redshiftの最安スペックとの比較 *Benchmark queries are derived from the TPC-H benchmark, but results are not comparable to published TPC-H benchmark results since they do not comply with the TPC-H specification TPC-Hの19種類のクエリの処理時間の幾何平均 年間コスト