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

MySQL Shellを使ってみよう!

ikomachi
January 17, 2020

MySQL Shellを使ってみよう!

ikomachi

January 17, 2020
Tweet

More Decks by ikomachi

Other Decks in Technology

Transcript

  1. 2 Copyright © 2020 Oracle and/or its a!liates. Safe harbor

    statement ⟃♴ך✲갪כծ䒦爡ך♧菙涸ז醡ㅷך倯ぢ䚍חꟼׅ׷嚊銲׾铡僇ׅ׷׮ךדׅկת׋ծ䞔㜠䲿⣘׾㈓ ♧ך湡涸הׅ׷׮ךד֮׶ծְַז׷㤍秈ח׮穈׫鴥׬ֿהכדֹתׇ׿կ⟃♴ך✲갪כծوذٔ، ٕװ؝٦سծ堣腉׾䲿⣘ׅ׷ֿה׾؝ىحزًٝز然秈ׅ׷׮ךדכזְ׋׭ծ飑顠寸㹀׾遤ֲ ꥷךⴻ倖勞俱חזׁ׵זְד♴ְׁկ ؙٕؔٓ醡ㅷחꟼ׃ג鎸鯹ׁ׸גְ׷堣腉ךꟚ涪ծٔٔ٦أֶ״ן儗劍חאְגכծ䒦爡ך鄩ꆀח״ ׶寸㹀ׁ׸תׅկ 0SBDMFה+BWBכծ0SBDMF$PSQPSBUJPO⿹ן׉ך㶨⠓爡ծꟼ鸬⠓爡ך碛㕂⿹ן׉ך➭ך㕂חֶֽ׷涫 ꐮ㉀垥דׅկ 俑⚥ך爡せծ㉀ㅷせ瘝כぐ爡ך㉀垥ת׋כ涫ꐮ㉀垥ד֮׷㜥さָ֮׶תׅկ
  2. 5 Copyright © 2020 Oracle and/or its a!liates. Innovation Dayアンケートより

    • .Z42-4IFMMך堣腉׾濼׷ֿהָדֹծהג׮葺ַ׏׋ • .Z42-4IFMMכ莆㄂帾ְ • .Z42-4IFMMכ״ֻ׻ַ׏גְתׇ׿ד׃׋ָծׁ׻׏ג⢪ ִ׷״ֲחׅץֹה䙼ְתׅ • .Z42-׾湊鋔ׅ׷ךח.Z42-4IFMM׾⢪ְ׋ְה嗚鎢׃גְ ׋ךד鑫׃ְ铡僇הرָٌ鋅׸ג״ַ׏׋ • .Z42-4IFMMךفؚٓ؎ٝזו濼׵זַ׏׋ֿהָ㢳ֻהג ׮׋׭חז׶ת׃׋ ˘זוזו .Z42-4IFMMפך⿾갟׾׋ֻׁ׿ְ׋׌ֹת׃׋
  3. 8 Copyright © 2020 Oracle and/or its a!liates. 本日のお品書き 18:30

    -18:35 オープニング 18:35 -19:00 MySQL Shellの機能(Innovation Dayおさらい) 19:00 -19:15 休憩 19:15 -20:30 デモ&もくもく&シェア 20:30 -21:30 ネットワーキング 21:30 撤収
  4. 9 Copyright © 2020 Oracle and/or its a!liates. 本日使うもの •

    .Z42-4FSWFS • .Z42-4IFMM • .Z42-3PVUFS • (JU)VCHJU • 1ZUIPO
  5. 11 Copyright © 2020 Oracle and/or its a!liates. MySQL Shell

    Ꟛ涪٥盖椚ך׋׭ך؎ٝةؿؑ٦أ ΍ 㢳鎉铂׾؟ه٦ز ٥+BWB4DSJQU ٥1ZUIPO ٥42- Ύ 㹋遤䕎䒭׾鼅䫛〳腉 ٥غحث ٥؎ٝةؙٓذ؍ـ Ώ .Z42-ِ٦ذ؍ٔذ؍ ٥،حفؚٖ٦سثؑحؕ٦ ٥+40/؎ٝه٦ز ٥넝鸞ر٦ةٗ٦س ΐ 窟さׁ׸׋"1* ٥سًُؗٝزأز،乼⡲ ٥*OOP%#ؙٓأة盖椚
  6. 13 Copyright © 2020 Oracle and/or its a!liates. 実は前から存在していた 5.7.12

    2015/4/8 5.7GA (5.7.9) 2016/4/11 2017/4/11 5.7.18 2017/4/12 1.0.9 MySQL Server MySQL Shell 1.0.3 初版 2016/4/11 2019/10/14 8.0.18 2017/4/18 8.0GA (8.0.11) 2019/10/14 8.0.18 2017/4/18 8.0.11
  7. 14 Copyright © 2020 Oracle and/or its a!liates. インストール・セットアップでおすすめしたいこと h"ps://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-con#guring-options.html

    • 最新のMySQL Shellを使用する • サーバーが5.7であってもMySQL Shell は8.0を使用する • 実行履歴を保存する • shell.options.setPersist • デフォルトのモードをお好みで設定する(JavaScript/Python/SQL) • JavaScript/Pythonのモジュールも実行可能(xxxx.js,xxxx.py) h"ps://insidemysql.com/mysql-shell-8-0-18/
  8. 15 Copyright © 2020 Oracle and/or its a!liates. MySQL Shellのオブジェクト

    dba InnoDB cluster管理 ext MySQL Shellプラグイン mysql 旧プロトコル経由でのMySQL Server操作 mysqlx Xプロトコル経由でのMySQL Server操作 shell MySQL Shell自体のプロパティ sys システム設定 util ユーティリティ(アップグレードチェッカーなど)
  9. 16 Copyright © 2020 Oracle and/or its a!liates. MySQL Shellのオブジェクト

    dba InnoDB cluster管理 ext MySQL Shellプラグイン mysql 旧プロトコル経由でのMySQL Server操作 mysqlx Xプロトコル経由でのMySQL Server操作 shell MySQL Shell自体のプロパティ sys システム設定 util ユーティリティ(アップグレードチェッカーなど)
  10. 17 Copyright © 2020 Oracle and/or its a!liates. プラグインを使うと… h"ps://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-con#guring-options.html

    • MySQL Serverのステータス情報などのレポート形式をカスタマイズ • 独自オブジェクト、拡張プラグインを追加する • 決まって実施するルーティンの簡略化 • 足りない機能を補完
  11. 19 Copyright © 2020 Oracle and/or its a!liates. 拡張機能を触ってみる!3ステップ 1.

    MySQL Shellをインストール! 2. LeFredの公開サンプルをダウンロード! 3. オリジナル拡張機能(プラグイン)を作る!
  12. 20 Copyright © 2020 Oracle and/or its a!liates. 1. MySQL

    Shellのインストール例 macOS 以下からdmgパッケージをダウンロードして実行 h"ps://dev.mysql.com/downloads/shell/ Windows 以下からmsiインストーラをダウンロードして実行 h"ps://dev.mysql.com/downloads/shell/ https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html Linux系 APTレポジトリ、Yumレポジトリをダウンロードして実行 または以下からrpmパッケージをダウンロードして実行 h"ps://dev.mysql.com/downloads/shell/
  13. 21 Copyright © 2020 Oracle and/or its a!liates. 2. LeFredの公開サンプルをダウンロード

    ・URL https://github.com/lefred/mysqlshell-plugins ・ダウンロード方法 もしくはZIP形式ファイルをダウンロードして格納先ファイルパス配下(次ページ参照)にコピーする macOS/Linux $ mkdir -p ~/.mysqlsh/plugins $ git clone h"ps://github.com/lefred/mysqlshell-plugins.git ~/.mysqlsh/plugins/ext Windows $ mkdir %AppData%¥MySQL¥mysqlsh¥plugins $ git clone h"ps://github.com/lefred/mysqlshell-plugins.git %AppData%¥MySQL¥mysqlsh¥plugins¥ext
  14. 22 Copyright © 2020 Oracle and/or its a!liates. 3. オリジナルの拡張機能(プラグイン)を作る

    • デフォルトの格納先ファイルパス • 初期化スクリプト • init.jsファイル or init.pyファイル • デフォルトのオブジェクト • shell, dba, util : グローバルオブジェクト • mysql : ShellAPI • mysqlx : Xプラグイン macOS/Linux ~/.mysqlsh/plugins Windows $ %AppData%¥MySQL¥mysqlsh¥plugins MYSQLSH_USER_CONFIG_HOMEで 変更可能
  15. 23 Copyright © 2020 Oracle and/or its a!liates. Pythonで拡張機能を作成する場合の注意点 •

    Pythonのコーディング規約PEP8に準拠する h"ps://www.python.org/dev/peps/pep-0008/ • サブフォルダごとに__init.py__ファイルを格納しておく • モジュールをインポートする場合、fromはフルパスで指定する 例) from ext.demo.src import sample h"ps://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-plugins-package.html
  16. 24 Copyright © 2020 Oracle and/or its a!liates. プラグイングループ •

    プラグインフォルダ配下にプラグインを分類して格納することが可能 例えば、以下のようなプラグインをまとめて格納する、 特定のテーマに関するレポートを提供する 同じ共通コードを再利用する 同じ拡張オブジェクトに機能を追加する h"ps://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-plugins-groups.html
  17. 25 Copyright © 2020 Oracle and/or its a!liates. 練習:Oracle8ball サンプル

    h"ps://github.com/ikomachi226/tecnologycafe7/tree/master/demo
  18. 26 Copyright © 2020 Oracle and/or its a!liates. Fredのサンプルプラグイン check

    collations connect innodb innodb_cluster maintenance proxysql router schema security support
  19. 27 Copyright © 2020 Oracle and/or its a!liates. LeFredのサンプルプラグイン ext.innodb.

    getFragmentedTablesDisk() • 断片化されている可能性のあるディスクスペースを取得する
  20. 29 Copyright © 2020 Oracle and/or its a!liates. 改めまして… 2020/1/13

    MySQL Server 8.0.19 リリース! MySQL NDB Cluster 8.0.19 リリース!
  21. 30 Copyright © 2020 Oracle and/or its a!liates. InnoDB Replicaset

    New • 非同期レプリケーション • CLONEプラグイン • MySQL Routerを使った手動フェイルオーバー • MySQL Shellによる作成・管理 h"ps://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-replicasets.html h"ps://mysqlserverteam.com/introducing-mysql-innodb-replicaset/
  22. 31 Copyright © 2020 Oracle and/or its a!liates. InnoDB Cluster

    VS InnoDB Replicaset InnoDB Cluster InnoDB Replicaset
  23. 32 Copyright © 2020 Oracle and/or its a!liates. Let’s Replicaset

    ! サンプル h"ps://github.com/ikomachi226/tecnologycafe7/ ReplicaSet-8019-pb-trying.txt
  24. 34 Copyright © 2020 Oracle and/or its a!liates. Share your

    ideas! • Shell使ってみた! • こんなプラグイン作ってみた! • あんなプラグインが欲しい! その思いつきが誰かの救世主!になるかも