Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MySQL Shellを使ってみよう!
Search
mikoma
January 17, 2020
Technology
0
1.8k
MySQL Shellを使ってみよう!
mikoma
January 17, 2020
Tweet
Share
More Decks by mikoma
See All by mikoma
MySQL 最新情報 MySQL9.4
ikomachi226
0
43
アプリ開発者のためのMySQLお役立ち機能マップ
ikomachi226
0
43
MySQL最新情報 MySQL9.2
ikomachi226
0
290
MySQL最新情報といま知っておきたいバージョンアップの基礎知識
ikomachi226
0
3.8k
MySQLのリリースモデルの変更点と最新アップデート
ikomachi226
0
400
MySQLで実践する機械学習 -HeatWave AutoML-
ikomachi226
0
490
Other Decks in Technology
See All in Technology
仕様は“書く”より“語る” - 分断を超えたチーム開発の実践 / 20251115 Naoki Takahashi
shift_evolve
PRO
1
670
明日から真似してOk!NOT A HOTELで実践している入社手続きの自動化
nkajihara
1
500
ソフトウェア開発現代史: 55%が変化に備えていない現実 ─ AI支援型開発時代のReboot Japan #agilejapan
takabow
4
3.2k
仕様駆動 x Codex で 超効率開発
ismk
2
1.4k
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
7
4.1k
Redux → Recoil → Zustand → useSyncExternalStore: 状態管理の10年とReact本来の姿
zozotech
PRO
14
7.2k
AI時代におけるドメイン駆動設計 入門 / Introduction to Domain-Driven Design in the AI Era
fendo181
0
680
Moto: Latent Motion Token as the Bridging Language for Learning Robot Manipulation from Videos
peisuke
0
110
Dart and Flutter MCP serverで実現する AI駆動E2Eテスト整備と自動操作
yukisakai1225
0
440
隙間ツール開発のすすめ / PHP Conference Fukuoka 2025
meihei3
0
440
Javaコミュニティの歩き方 ~参加から貢献まで、すべて教えます~
tabatad
0
110
CodexでもAgent Skillsを使いたい
gotalab555
9
4.6k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Docker and Python
trallard
46
3.6k
Why Our Code Smells
bkeepers
PRO
340
57k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How STYLIGHT went responsive
nonsquared
100
5.9k
What's in a price? How to price your products and services
michaelherold
246
12k
Bash Introduction
62gerente
615
210k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
A Modern Web Designer's Workflow
chriscoyier
697
190k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A Tale of Four Properties
chriscoyier
162
23k
Transcript
MySQL GBU January 17, 2020 生駒 眞知子/Machiko Ikoma MySQL Technology
Café #7 MySQL Shell を使ってみよう!
2 Copyright © 2020 Oracle and/or its a!liates. Safe harbor
statement ⟃♴ך✲갪כծ䒦爡ך♧菙涸ז醡ㅷך倯ぢ䚍חꟼׅ嚊銲铡僇ׅךדׅկתծ䞔㜠䲿⣘㈓ ♧ך湡涸הׅךד֮ծְַז㤍秈ח穈鴥ֿהכדֹתׇկ⟃♴ך✲갪כծوذٔ، ٕװ؝٦سծ堣腉䲿⣘ֿׅה؝ىحزًٝز然秈ׅךדכזְծ飑顠寸㹀遤ֲ ꥷךⴻ倖勞俱חזׁזְד♴ְׁկ ؙٕؔٓ醡ㅷחꟼ׃ג鎸鯹ׁגְ堣腉ך涪ծٔٔ٦أֶ״ן儗劍חאְגכծ䒦爡ך鄩ꆀח״ 寸㹀ׁתׅկ 0SBDMFה+BWBכծ0SBDMF$PSQPSBUJPO⿹ןך㶨⠓爡ծꟼ鸬⠓爡ך碛㕂⿹ןך➭ך㕂חֶֽ涫 ꐮ㉀垥דׅկ 俑⚥ך爡せծ㉀ㅷせ瘝כぐ爡ך㉀垥תכ涫ꐮ㉀垥ד֮㜥さָ֮תׅկ
3 Copyright © 2020 Oracle and/or its a!liates. Innovation Dayご参加ありがとうございました!
4 Copyright © 2020 Oracle and/or its a!liates. أؾ٦ؕ٦傈劤弫㋪׃ת׃˘
5 Copyright © 2020 Oracle and/or its a!liates. Innovation Dayアンケートより
• .Z42-4IFMMך堣腉濼ֿהָדֹծהג葺ַ • .Z42-4IFMMכ莆帾ְ • .Z42-4IFMMכ״ַֻגְתׇד׃ָծׁג⢪ ִ״ֲחׅץֹה䙼ְתׅ • .Z42-湊鋔ׅךח.Z42-4IFMM⢪ְְה嗚鎢׃גְ ךד鑫׃ְ铡僇הرָٌ鋅ג״ַ • .Z42-4IFMMךفؚٓ؎ٝזו濼זַֿהָ㢳ֻהג חזת׃ ˘זוזו .Z42-4IFMMפך갟ְֹֻׁת׃
6 Copyright © 2020 Oracle and/or its a!liates. 本日のテーマは MySQL
Shellです
7 Copyright © 2020 Oracle and/or its a!liates. MySQL 8.0.19、MySQL
Cluster8.0.19リリース!
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 撤収
9 Copyright © 2020 Oracle and/or its a!liates. 本日使うもの •
.Z42-4FSWFS • .Z42-4IFMM • .Z42-3PVUFS • (JU)VCHJU • 1ZUIPO
ざっくり解説 MySQL Shell –Innovation Dayのおさらい
11 Copyright © 2020 Oracle and/or its a!liates. MySQL Shell
涪٥盖椚ךך؎ٝةؿؑ٦أ 㢳鎉铂؟ه٦ز ٥+BWB4DSJQU ٥1ZUIPO ٥42- Ύ 㹋遤䕎䒭鼅䫛〳腉 ٥غحث ٥؎ٝةؙٓذ؍ـ Ώ .Z42-ِ٦ذ؍ٔذ؍ ٥،حفؚٖ٦سثؑحؕ٦ ٥+40/؎ٝه٦ز ٥넝鸞ر٦ةٗ٦س ΐ 窟さׁ"1* ٥سًُؗٝزأز،乼⡲ ٥*OOP%#ؙٓأة盖椚
12 Copyright © 2020 Oracle and/or its a!liates. 㔳חׅה˘
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
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/
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 ユーティリティ(アップグレードチェッカーなど)
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 ユーティリティ(アップグレードチェッカーなど)
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のステータス情報などのレポート形式をカスタマイズ • 独自オブジェクト、拡張プラグインを追加する • 決まって実施するルーティンの簡略化 • 足りない機能を補完
18 Copyright © 2020 Oracle and/or its a!liates. プラグインを拡張するには… https://dev.mysql.com/doc/dev/mysqlsh-api-python/8.0/
• MySQL Shellのメソッドを使う
19 Copyright © 2020 Oracle and/or its a!liates. 拡張機能を触ってみる!3ステップ 1.
MySQL Shellをインストール! 2. LeFredの公開サンプルをダウンロード! 3. オリジナル拡張機能(プラグイン)を作る!
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/
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
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で 変更可能
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
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
25 Copyright © 2020 Oracle and/or its a!liates. 練習:Oracle8ball サンプル
h"ps://github.com/ikomachi226/tecnologycafe7/tree/master/demo
26 Copyright © 2020 Oracle and/or its a!liates. Fredのサンプルプラグイン check
collations connect innodb innodb_cluster maintenance proxysql router schema security support
27 Copyright © 2020 Oracle and/or its a!liates. LeFredのサンプルプラグイン ext.innodb.
getFragmentedTablesDisk() • 断片化されている可能性のあるディスクスペースを取得する
28 Copyright © 2020 Oracle and/or its a!liates. LeFredのサンプルプラグイン ext.innodb.getAlterProgress()
• ALTER TABLEの進捗を取得する
29 Copyright © 2020 Oracle and/or its a!liates. 改めまして… 2020/1/13
MySQL Server 8.0.19 リリース! MySQL NDB Cluster 8.0.19 リリース!
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/
31 Copyright © 2020 Oracle and/or its a!liates. InnoDB Cluster
VS InnoDB Replicaset InnoDB Cluster InnoDB Replicaset
32 Copyright © 2020 Oracle and/or its a!liates. Let’s Replicaset
! サンプル h"ps://github.com/ikomachi226/tecnologycafe7/ ReplicaSet-8019-pb-trying.txt
33 Copyright © 2020 Oracle and/or its a!liates. もくもく!
34 Copyright © 2020 Oracle and/or its a!liates. Share your
ideas! • Shell使ってみた! • こんなプラグイン作ってみた! • あんなプラグインが欲しい! その思いつきが誰かの救世主!になるかも
None