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環境を活用する方法について解説しています。

7fb060398b26ed622d34921bd64e4f5d?s=128

YoshiakiYamasaki

December 19, 2020
Tweet

Transcript

  1. Dockerを使ってMySQL環境を構築しよう! 2020/12/19 Open Developer Conference 2020 Online Yoshiaki Yamasaki MySQL

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

    © 2020, Oracle and/or its affiliates 2
  3. 1. Dockerとは? 2. Dockerを使ったMySQL環境構築手順 3. Oracle Cloud Infrastructure の Always

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

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

    Copyright © 2020, Oracle and/or its affiliates 5
  6. Dockerコンテナを使う理由 Copyright © 2020, Oracle and/or its affiliates 6 •

    アプリケーションスタック全体のプロビジョニングを迅速に行える • 初期状態への復帰が容易 • 柔軟なスケーリング
  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
  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
  9. Copyright © 2020, Oracle and/or its affiliates 9 Dockerを使ったMySQL環境構築手順

  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
  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
  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 '新しいパスワード';
  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 コンテナ名
  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
  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
  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;
  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
  18. Copyright © 2020, Oracle and/or its affiliates 18 Oracle Cloud

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

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

    のチュートリアル Copyright © 2020, Oracle and/or its affiliates 23
  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
  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機能はまだ提供されていませんが、今後提供される予定です
  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
  27. Copyright © 2020, Oracle and/or its affiliates 27 Always Free環境を使ったデモ

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

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

  30. ◼ MySQLの更新処理と分析処理を⼀つのデータベースで実現! 新機能「HeatWave」のご紹介 • 日時:12/23(水) 15:00~17:30 • 参加費:無料 • 詳細、申込ページ:

    https://go.oracle.com/LP=103742 セミナー開催予定 Copyright © 2020, Oracle and/or its affiliates 30
  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 クエリ処理時間の幾何平均 データ準備時間 年間コスト
  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種類のクエリの処理時間の幾何平均 年間コスト
  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種類のクエリの処理時間の幾何平均 年間コスト
  34. Copyright © 2020, Oracle and/or its affiliates 34 Q&A

  35. None