MySQL管理者向けのトップ5オープンソースツール
Michael Coburnは、Perconaの製品マネージャーです。
データベース管理者(DBA)にとって、データベースを最高のパフォーマンスで実行し続けることは、回転板のようなものです。敏捷性、集中力、素早い反応、冷静な頭、そして親切な見物人からの時折の呼びかけが必要です。データベースは、ほぼすべてのアプリケーションの正常な動作の中心です。DBAは組織のデータに責任があるため、データベース管理プロセスを合理化し、日常の保守タスクを容易にするのに役立つ信頼できるツールを見つけることが不可欠です。DBAには、システムをスムーズに回転させ続けるための優れたツールが必要です。
では、MySQL管理者にとって実証済みの信頼できるツールは何でしょうか。ここでは、MySQL管理者向けの上位5つのオープンソースツールを共有し、日常のMySQL管理タスクのサポートにおけるそれらの価値について説明します。それらのそれぞれについて、GitHubリポジトリへのリンクを提供し、執筆時点でのGitHubスターの数をリストしました。
Mycli
Mycliプロジェクトは、MySQLコマンドラインのオートコンプリートと構文の強調表示を提供します。これは、管理者にとって最も人気のあるMySQLツールの1つです。
ジャンプホストや2要素認証などのセキュリティ制限により、多くのMySQLDBAはコマンドラインでのみシステムにアクセスできます。このような状況では、MySQL Workbench、Monyogなどの最愛のGUIツールはオプションではありません。
コマンドラインでは、多くの時間がライトオンブラックの端末の世界で費やされます。したがって、Mycliの最も優れた点の1つは、構文の強調表示が豊富なことです。これにより、たとえば、関数と演算子をWHERE
句内のクエリ文字列から視覚的に分離できます。短い1行のクエリの場合、これはそれほど大きな問題ではないかもしれませんがJOIN
、2つ以上のテーブルに対して操作を実行するクエリを操作すると、ゲームチェンジャーになります。私がやっているJOIN
使用してインデックス付きの列を?WHERE
句で先頭のワイルドカードを使用してフィルタリングしていますか? Mycliは、複数行のクエリと構文の強調表示をサポートしています。つまり、クエリを確認または最適化するときに最も重要なセクションにたどり着くことができます。配色を強調する多数の構文から選択するか、独自の構文を作成できます。
Mycliのもう1つのキラー機能は、スマートコンプリーションです。これにより、最初の数文字だけを入力することで、状況依存リストからテーブル名と列名を選択できます。句にSHOW CREATE TABLE
必要な列の名前を忘れたために、現在の入力を放棄して実行する必要はもうありませんWHERE
。

Mmycliを使用すると\fs
、たとえばを使用してお気に入りのクエリにエイリアスを付けることができます\fs myAlias myQuery
。\f myAlias
必要なときにいつでもを使用してクエリを実行できるため、これは非常に便利です。
Mycliプロジェクトは、BSD3ライセンスを使用しています。44人の寄稿者、1.2kのコミット、5kのスターがいます。
幽霊
MySQL DBAの99%が、本番環境への影響を恐れながらMySQLテーブルへの変更の実装に直面した場合は、Gh-ost(GitHubオンラインスキーマ移行)を検討する必要があります。Gh-ostは、書き込みをブロックせず、トリガーを使用せずに、移行を一時停止および再開する機能を備えたMySQLスキーマの変更を提供します。
なぜこれがそれほど重要なのですか?MySQL 5.6には新しいALTER TABLE ... ALGORITHM=INPLACE
DDL(データ定義言語)機能が付属しているため、インデックス(Bツリー)の追加などの一般的な操作の書き込みをブロックせずにテーブルを変更することが可能になりました。ただし、書き込み(DMLステートメント)がブロックされる条件がいくつか残っています。特に、FULLTEXT
インデックスの追加、テーブルスペースの暗号化、および列タイプの変換です。
このようPerconaのPT-オンライン・スキーマ変更、3つのトリガ(セット実装することにより、仕事などの他の人気のあるオンラインスキーマ変更ツール、INSERT
、UPDATE
、とのDELETE
変化に同期して、シャドウコピーのテーブルを維持するためにマスター上)。これにより、ライトアンプリフィケーションによるパフォーマンスの低下がわずかに発生しますが、さらに重要なことに、メタデータロックの7つのインスタンスが必要になります。これらは、DML(データ操作言語)イベントを効果的に停止します。
Gh-ostはバイナリログを使用して動作するため、トリガーベースの欠点の影響を受けません。最後に、Gh-ostは、アクティビティをゼロイベントに効果的に調整できるため、サーバーが問題を起こし始めた場合はスキーマの移行を一時停止し、アクティビティバブルが進行したときに再開できます。
では、Gh-ostはどのように機能しますか?デフォルトでは、Gh-ostはレプリカ(スレーブ)に接続し、マスターを識別して、マスターに移行を適用します。binlog_format = ROWのソーステーブルへのレプリカの変更を受け取り、ログを解析し、これらのステートメントを変換してマスターのシャドウテーブルで再実行します。レプリカの行数を追跡し、アトミックカットオーバーを実行するタイミングを識別します(テーブルの切り替え)。

Gh-ostは、マスターで直接移行を実行し(スレーブがあるかどうかに関係なく)、マスターのbinlog_format=ROW
イベントを読み戻し、シャドウテーブルに再適用する代替モードを提供します。
最後のオプションは、マスターに影響を与えずにレプリカでのみ移行を実行するために使用できるため、移行をテストまたは検証できます。

スキーマに外部キーがある場合、この構成はサポートされていないため、Gh-ostが正常に動作しない可能性があることに注意してください。
oak-online-alter-tableがGh-ostの前身であることに注意してください。PerconaのCEOであるPeterZaitsevによるGh-ostとpt-online-schema-changeのパフォーマンスの比較と、OAKツールキットおよびGh-ostの作成者および保守者であるShlomiNoachからの回答を読むことができます。
Gh-ostプロジェクトはMITライセンスを使用しています。29人の寄稿者、ほぼ1kのコミット、3kのスターがいます。
PhpMyAdmin
MySQLツールの中で最も長く実行され最も成熟したプロジェクトの1つは、Web経由でMySQLを管理するために使用される由緒あるPhpMyAdminツールです。phpMyAdminを使用すると、DBAはMySQLデータベースオブジェクト(データベース、テーブル、ビュー、フィールド、インデックス)を参照および変更できます。ダース以上のフォーマットを使用してデータエクスポートを実行し、MySQLユーザーと特権を変更し、そして–私のお気に入り–アドホッククエリを実行するオプションがあります。

また、特定のデータベースインスタンスの質問、接続/プロセス、およびネットワークトラフィックを動的にプロットする[ステータス]タブと、考えられるパフォーマンスの問題のリストと修正方法の推奨事項を示す[アドバイザ]タブもあります。

PhpMyAdminはGPLv2ライセンスを使用します。これは、800人以上の貢献者、驚くべき112kのコミット、2.7kのスターを含む巨大なプロジェクトです。オンラインデモは//demo.phpmyadmin.net/master-config/で入手できます。
Sqlcheck
SQLアンチパターンはクエリの速度を低下させる可能性がありますが、多くの場合、経験豊富なDBAと開発者がコードを調べてそれらを識別して解決する必要があります。Sqlcheckは、Bill Karwinによる「SQLアンチパターン:データベースプログラミングの落とし穴の回避」という本を成文化するためのJoyArulrajの努力を反映しています。Karwinは、アンチパターンの4つのカテゴリを識別します。
- 論理データベース設計
- 物理データベースの設計
- クエリ
- アプリケーション開発

Sqlcheckは、低リスク、中リスク、または高リスクに分類されるさまざまなリスクレベルを対象にすることができます。これは、パフォーマンスに最大の影響を与えるクエリに優先順位を付けることができるため、アンチパターンのリストが大きい場合に役立ちます。開始するために必要なのは、個別のクエリのリストをファイルに収集し、それらを引数としてツールに渡すことだけです。
PMMデモ環境から収集したサンプルを使用して、次の出力を生成しました。
[michael @ fedora〜] $ sqlcheck —file_name PMMDemoQueries.txt+ ————————————————————————- +
| SQLCHECK |
+ ————————————————————————- +
>リスクレベル::すべてのアンチパターン
> SQLファイル名::出力
>カラーモード::有効
>バーボスモード::無効
>区切り文字::;
—————————————————————————
====================結果===================
—————————————————————————
SQLステートメント:エンジンとしてtable_schema、table_name、table_type、ifnull(engine、 'none')を選択します。
ifnull(version、 '0')as version、ifnull(row_format、 'none')as row_format、
ifnull(table_rows、 '0')as table_rows、ifnull(data_length、 '0')as data_length、
ifnull(index_length、 '0')as index_length、ifnull(data_free、 '0')as data_free、
ifnull(create_options、 'none')as create_options from information_schema.tables
ここで、table_schema = 'innodb_small';
[出力] :(ヒント)NULL使用法
[一致する式:null]
..。
====================まとめ===================
すべてのアンチパターンとヒント:: 7
>高リスク:: 0
>中リスク:: 0
>低リスク:: 2
>ヒント:: 5
Sqlcheckは、Apache License2.0でカバーされています。このプロジェクトには、5人の貢献者、187人のコミット、および1.4kのスターがいます。
オーケストレーター
Orchestratorは、高可用性およびレプリケーション管理ツールです。チェーンを上下にクロールしてマスターとスレーブを識別することにより、MySQL環境のレプリケーショントポロジを検出する機能を提供します。また、GUIを介してレプリケーショントポロジをリファクタリングするために使用して、スレーブをマスターに昇格させるためのドラッグアンドドロップインターフェイスを提供することもできます。これは非常に安全な操作です。実際、Orchestratorは、システムを壊さないように、違法な操作を拒否します。
最後に、Orchestratorは、状態の概念を使用して正しい回復方法をインテリジェントに選択し、使用する適切なマスタープロモーションプロセスを決定するため、ノードに障害が発生した場合の回復をサポートできます。
Orchestratorは、GitHubのShlomiNoachが提供するもう1つのツールです。Apache License2.0でカバーされています。この記事の執筆時点で、Orchestratorには34人の寄稿者、2,780人のコミット、900人のスターがいます。

皿回しを続ける
この記事の冒頭で、MySQL管理者の役割が皿回しのようなものであることについて話しました。時折、管理者は、物事がぐらつき始めて注意が必要になったときに、役立つ見物人からの叫びの恩恵を受けることがあります。Percona Monitoring and Management(PMM)は、大声で叫び、注意が必要な領域を強調し、データベース管理者がデータベースの問題を特定して解決するのを支援する仕事を引き受けます。
PMMには、Orchestratorを含む多くの最高のオープンソースツールが組み込まれており、包括的なデータベース監視および管理機能を提供します。そのグラフィカルなプレゼンテーションは、時間の経過に伴うデータベースサーバーの状態を簡単に視覚的に把握できるようにし、MySQL、MariaDB、およびMongoDBサーバーをサポートします。私たちの公開デモをチェックしてください!
私の上位5つのツールと同様に、またPerconaのすべてのソフトウェアと同様に、PMMは完全に無料のオープンソースソフトウェアであり、PerconaのWebサイトまたはGitHubからダウンロードできます。
私が説明した各ツールは、MySQL管理者の役割のさまざまな側面に対応しています。これらはデータベース管理ツールの蓄積に貢献し、これらの人気のあるプロジェクトへの貢献者の経験とスキルを活用できるようにします。これらは無料でオープンソースであり、必要に応じて独自の環境のニーズに適合させることも、変更せずに使用することもできます。これらの宝石をまだ調べていない場合は、現在の方法やツールよりも優れているかどうかを詳しく調べることをお勧めします。
—
Michael Coburnは、Perconaの製品マネージャーを務め、Perconaの監視と管理を担当しています。Coburnは、システム管理を基盤として、SANテクノロジーと高可用性ソリューションの使用を楽しんでいます。
New Tech Forumは、前例のない深さと幅で新しいエンタープライズテクノロジーを探索して議論する場を提供します。選択は主観的であり、読者にとって重要で最も興味深いと思われるテクノロジーの選択に基づいています。出版用のマーケティング資料を受け入れず、寄稿されたすべてのコンテンツを編集する権利を留保します。すべてのお問い合わせは[email protected]まで お送りください。