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. Dockerを使ってMySQL環境を構築しよう!
    2020/12/19 Open Developer Conference 2020 Online
    Yoshiaki Yamasaki
    MySQL Principal Solution Engineer
    MySQL Global Business Unit

    View Slide

  2. Safe harbor statement
    以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
    また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。
    以下の事項は、マテリアルやコード、機能を提供することをコミットメントするものではない為、
    購買決定を行う際の判断材料になさらないで下さい。
    オラクル製品に関して記載されている機能の開発、リリースおよび時期については、
    弊社の裁量により決定されます。
    Copyright © 2020, Oracle and/or its affiliates
    2

    View Slide

  3. 1. Dockerとは?
    2. Dockerを使ったMySQL環境構築手順
    3. Oracle Cloud Infrastructure の Always Free とは?
    4. Always Free環境を使ったデモ
    5. お知らせ
    アジェンダ
    Copyright © 2020, Oracle and/or its affiliates
    3

    View Slide

  4. Copyright © 2020, Oracle and/or its affiliates
    4
    Dockerとは?

    View Slide

  5. ◼ コンテナ型の仮想化サービスを提供できるオープンソースソフトウェア
    ◼ 各コンテナはホストマシンのカーネルを利用するため、
    ハイパーバイザー型の仮想化サービスと比べて軽量に動作する
    ◼ 多くのDockerイメージがDocker Hubで公開されている
    https://hub.docker.com/
    Dockerとは?
    Copyright © 2020, Oracle and/or its affiliates
    5

    View Slide

  6. Dockerコンテナを使う理由
    Copyright © 2020, Oracle and/or its affiliates
    6
    • アプリケーションスタック全体のプロビジョニングを迅速に行える
    • 初期状態への復帰が容易
    • 柔軟なスケーリング

    View Slide

  7. ◼ 入手先
    • 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

    View Slide

  8. ◼ 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

    View Slide

  9. Copyright © 2020, Oracle and/or its affiliates
    9
    Dockerを使ったMySQL環境構築手順

    View Slide

  10. 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

    View Slide

  11. ◼ 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

    View Slide

  12. ◼ 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 '新しいパスワード';

    View Slide

  13. ◼ 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 コンテナ名

    View Slide

  14. ◼ 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

    View Slide

  15. ◼ 以下ページの”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

    View Slide

  16. ◼ 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;

    View Slide

  17. ◼ 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

    View Slide

  18. Copyright © 2020, Oracle and/or its affiliates
    18
    Oracle Cloud Infrastructure の Always Free とは?

    View Slide

  19. ◼ コストパフォーマンスの高いパブリッククラウド環境
    ◼ Zoomがユーザー数の急増に対応するために採用したことでも注目を集めている
    https://www.oracle.com/jp/corporate/pressrelease/jp20200428.html
    Oracle Cloud Infrastructure(OCI)とは?
    Copyright © 2020, Oracle and/or its affiliates
    19

    View Slide

  20. ◼ Oracle Cloud Infrastructureを常時無償で使用できるサービス
    ◼ Always Free用のアカウントを作成すると、30日間有効な300USドルのクレジットも付与され
    Always Free対象外のサービスも利用できる
    ⇒ MySQL Database Service はAlways Freeの対象外であるが、このクレジットで試すことが可能
    Always Freeとは?
    Copyright © 2020, Oracle and/or its affiliates
    20

    View Slide

  21. ◼ 以下のイベントに参加すると、特別オファーあり
    • 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

    View Slide

  22. ◼ 以下の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

    View Slide

  23. ◼ 手順を画面キャプチャー付きで詳細に解説したチュートリアルを用意していますので、ご活用ください!
    https://oracle-japan.github.io/ocitutorials/
    ◼ MySQL Database Serviceのチュートリアルも今後掲載される予定!!
    Oracle Cloud Infrastructure のチュートリアル
    Copyright © 2020, Oracle and/or its affiliates
    23

    View Slide

  24. ◼ 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

    View Slide

  25. フルマネージド データベースサービス
    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機能はまだ提供されていませんが、今後提供される予定です

    View Slide

  26. ◼ 他社製の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

    View Slide

  27. Copyright © 2020, Oracle and/or its affiliates
    27
    Always Free環境を使ったデモ

    View Slide

  28. Copyright © 2020, Oracle and/or its affiliates
    28
    デモを実施

    View Slide

  29. Copyright © 2020, Oracle and/or its affiliates
    29
    お知らせ

    View Slide

  30. ◼ MySQLの更新処理と分析処理を⼀つのデータベースで実現!
    新機能「HeatWave」のご紹介
    • 日時:12/23(水) 15:00~17:30
    • 参加費:無料
    • 詳細、申込ページ: https://go.oracle.com/LP=103742
    セミナー開催予定
    Copyright © 2020, Oracle and/or its affiliates
    30

    View Slide

  31. 分析処理が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
    クエリ処理時間の幾何平均
    データ準備時間 年間コスト

    View Slide

  32. 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種類のクエリの処理時間の幾何平均 年間コスト

    View Slide

  33. 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種類のクエリの処理時間の幾何平均 年間コスト

    View Slide

  34. Copyright © 2020, Oracle and/or its affiliates
    34
    Q&A

    View Slide

  35. View Slide