ホームページ  >  に質問  >  本文

看到网上一片文章说:数据库不适合Docker及容器化?

文章连接
刚开始用docker,有点疑惑?

PHP中文网PHP中文网2755日前837

全員に返信(5)返信します

  • phpcn_u1582

    phpcn_u15822017-04-27 09:03:42

    データベースが docker に配置するのに適していないことに関しては、Waiguoren による 2 つの記事があり、1 つは元の投稿者によって投稿されたもので、もう 1 つはこの記事を翻訳したものです

    依然として同じ視点:

    ボリュームが小さい場合は気軽に実行できますが、ボリュームが大きい場合は、従来のデータベースや Docker は適切な方法ではないため、データベースを直接コンテナ化しないことをお勧めします。 、ミドルウェア システム、コンテナ化されたシステムなど、さまざまなシステムのサポートが必要です。

    データベースが自動的にスケーリング、災害復旧、切り替えが可能で、独自のマルチノード ソリューションが付属している場合などには、docker の方が優れたソリューションです。

    ただし、そうでない場合は、docker を使用しないでください。

    原文にも非常に明確に書かれています:

    リーリー

    トラフィックが少ない場合は、あらゆるものをコンテナ化できます。データベース、アプリケーション、Hadoop、各種ノード、nginx。


    大容量の場合、ストレージ関連のサービスはコンテナ化に適していません。アプリケーション層やビジネス層などのステートレス サービスは、キャッシュなどのメモリを大量に使用するサービスをコンテナ化できます。

    簡単に言うと、災害復旧、パフォーマンス、データの整合性という 3 つの問題があります。

    mysql のような従来のデータベースに関する限り、列挙できるほど多くの問題があります:

    1. mysqlをコンテナ化するには?

    2. メインデータベース mysqld がダウンした場合はどうすればよいですか?

    3. メインライブラリ dockerd がひざまずいたらどうすればよいですか?

    4. スレーブ mysqld がひざまずいた場合はどうすればよいですか?

    5. dockerd ライブラリがクラッシュした場合はどうすればよいですか?

    6. ピークが近づいたときに、コンテナーを使用して mysql を迅速に拡張できますか?プラン?

    7. データマスター/スレーブ切り替えソリューション?一貫性を確保するにはどうすればよいでしょうか?

    8. ピーク時にはボリュームが十分に大きいため、物理マシンの容量が 1 つの mysql プロセスにのみ十分である場合があります。

    9. では、これも単一のマシンですが、なぜ mysql を直接起動できないのでしょうか?

    10. なぜコンテナを外に置く必要があるのですか?パフォーマンスの低下はどの程度ですか?

    11. mysqlをアップグレードするには?

    12. データ量が増えるとデータが失われますか? (何度も破損したコンテナに遭遇しました…)

    しかし、mysql はコンテナ化が完全にできないわけではありません。
    データ損失に敏感でないビジネス (JD 検索で見つかった製品など) はデジタル化でき、データベース シャーディングを使用してインスタンスの数を増やすことでスループットを向上できます。

    元の記事で言及されている問題については、いくつかの欠陥がありますが、よく考えられています。たとえば、次の質問は非常に問題があります (共有データ ディレクトリに関する):

    リーリー

    私がこれまで接したデータベースの中で、コンテナ化に適しているのはcassandraなどのデータベースだけです(tidbやcockroachdbもありますが、今のところ大企業でのユースケースには遭遇したことがありません)。

    しかし、cassandra 自体もステートレスに近づいています。独自の災害復旧、容量拡張、スイッチング ソリューションを提供します。


    JD.comについて触れてみましょう。

    JD.com は異常値ですが、JD.com も同様の問題や注意が必要なことについて言及しています。

    リーリー

    さらに、docker には多くのカスタマイズが行われています。

    JD.comで視聴できます。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-27 09:03:42

    適さない、できないではない。

    単体のマシンで問題がなければ、それでも有利な場合もあります。たとえば、以前、私の会社の Oracle データベースがパラメータを調整していたときに、データベースがクラッシュして起動できなくなりました。したがって、それを直接実行して、元のディレクトリをポイントするだけです。

    クラスターを作成する方法に関係なく、Docker や swarm などのツールを使用してクラスターを手動でセットアップするのは簡単ではありません。トラブルを避けるために、物理マシン上に直接構築することをお勧めします。

    海外にはflockerやrancher’s convoyなどのdockerデータストレージソリューションを専門とする会社があります。

    返事
    0
  • PHPz

    PHPz2017-04-27 09:03:42

    Docker はステートレスに適しており、サービスを変更しません。

    クラスターの数が多い場合:
    docker ファイルを書き込みます。次に、コードがコード ウェアハウスにアップロードされるときに、docker ファイルをデプロイした後、リリース スクリプトで docker サービスをバッチで構築し、そこにサービス コードを組み込みます。

    MySQLに限らず、redisやmcもdockerに入れるのには向いていません。 つまり、dockerにデータベースを入れるだけで、あまりメリットがありません。

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-04-27 09:03:42

    はい、docker の特性により、データベースだけでなく、ストレージ関連のすべてのサービスが docker の使用に適していないことがデータ ストレージにあると判断されるためです。

    返事
    0
  • 世界只因有你

    世界只因有你2017-04-27 09:03:42

    公式の mysql イメージがデータを保存するディレクトリさえわかりません。

    返事
    0
  • キャンセル返事