Mariadb の使用時に発生した 2 つの問題を共有します
MySQL の新バージョンの選択
当初、当社は主に mysql5.5 バージョンを使用してデータベース構成センターを構築し、主に mysql5.6 バージョンを推進しましたが、パフォーマンスと機能はある程度向上しました。 、mysql5.6 も gtid をサポートしますが、オンラインで gtid モードと通常モードを切り替えることはできません。同時に、5.6 の同期パフォーマンスは、複数の DB の場合にのみ可能です。ビジネスで行うのは確実に難しいため、書き込み操作が集中すると、同期の遅さが深刻な問題になります
そこで、最近 MySQL をアップグレードするときに直面する最初の問題の 1 つは、まず、mysql5.7 を使用することを検討します。今年、5.7 のいくつかの正式バージョンがリリースされ、現在幅広いアプリケーションで使用されており、正式な環境での使用を検討できます。そこで、オンライン比較テストを実施したところ、mysql5.7 とオンライン バージョンの mysql5.6 の間にパフォーマンスに大きな差があることがわかりました (おそらく、一部のパラメーターが適切に調整されていなかったためでしょう。実際、5.7 ははるかに複雑です)。
同時に、当社では最近、ログストレージのほとんどが innodb エンジンを使用しているのをよく見かけますが、一方で、当社の標準的な mysql サーバーの容量は約 1.3 トンであるためです。大容量を必要とする一部のビジネス 一般に、データを長期間保持したい場合、その需要を満たすのは困難です。したがって、この機会を利用して、これについて一緒に検討してみます。現在、Percona と Mariadb は両方とも Tokudb をサポートしており、Maridb 10.2 または 10.3 も Myrocks をサポートする予定です。
そこで、比較テストを行うことにし、Percona 5.7.14、Maridb 10.1.18、およびオンライン MySQL 5.6 を比較テスト用に選択し、ストレス テストに合格しました。
まず第一に、Innodb エンジンが使用されます:
Mariadb と MySQL5.6 のテスト結果は近いです
Percona 5.7.14 と公式 MySQL5.7 のパフォーマンス結果は似ており、一定のギャップがありますMySQL5.6との比較(少しperformance_schemaを削除した方が良いですが、ギャップがあります)。
Tokudb エンジンを使用したテスト結果は、公式の主張とは異なります。Snappy 圧縮を使用した場合、挿入は innodb よりも約 1/4 遅く、更新は innodb の約半分にすぎません。 Perconaの方が性能が悪いので考慮外となります。
最終的に Mariadb 10.1.18 を選択し、オンラインでビジネスを展開しました。このビジネスをゆっくり試した後、徐々に推進されました。
Maridb を使用する際のいくつかの落とし穴
Mariadb を使用する過程で、私が遭遇した 2 つの大きな問題を参考までに紹介します:
1. ビジネスのピーク期間が 2020 年を超えました。 9,000 回の書き込み操作/秒。最初の問題は、スレーブ同期スレッドの数が 16 スレッドに増加し、データベースがしばらく停止すると、同期のパフォーマンスが追いつかないことでした。 、更新されなくなる可能性があります。絶望的になったとき、mariadb の公式記事 (https://mariadb.com/kb/en/mariadb/Parallel-replication/) を読みました。Mariadb の並列レプリケーションは、インオーダーと 2 つのモードをサポートしています。ただし、当社のビジネスはインオーダーをサポートしているため、インオーダー モードでは、Conservative と Optimistic の 2 つのタイプがサポートされています。デフォルトでは、Conservative モードがこれです。物事の順序が厳密に保証されます。これは、おそらく 5.7 のグループ コミットの原則に似ています。オプティミスティック モードでは、レプリケーション中にできるだけ多くのセッションが開始され、競合が検出されるまで競合は処理されません。思い切ってOptimisticを試してみたところ、最大同期速度14,000回/秒と非常に強力でした。
2.「メモリリーク」
システムの展開構造は、2つのMariaDBをマスター-マスターレプリケーションとして使用し、その前に自社開発の分散データベースを展開し、ビジネス側は分散データベースプロセスに接続します。システムが数日間オンラインになった後、メイン データベースが原因不明でハングアップすることがわかりました。幸いなことに、分散データベースがあり、MariaDB メイン データベースがハングアップすると、自動的に別のメイン データベースに切り替わります。ビジネス側が気付かないうちにデータベースを構築します。カーネル ログを確認すると、OOM であり、カーネルが MySQL を強制終了したことがわかりました。
そこで、さまざまな試みを開始し、Tokudb エンジン構成を削除し、Maridb 10.1.19 に変更しましたが、最終的にメインデータベースがクラッシュしました。たまたまメインライブラリのスレーブを停止したところ、メインライブラリのメモリが急激に減り、メモリが増えなくなったのですが、メインライブラリのスレーブを起動するとメモリが増えていることが分かりました。また徐々に増えていきました。この現象は、mysql スレッドのメモリ割り当てメカニズム (mem_root ベースのメモリ割り当て、スレッドが停止するとすべて解放される) に非常に似ているため、最初はこれが原因であると考えられます。デュアルマスター内のもう一方の MariaDB と同様に、メモリ増加の問題が発生しないことがわかりました。
上記の現象を発見した後、gdb を使用して 1 つの mariadb を起動し、もう 1 つのライブラリを通常のコマンドで起動します。
最初の状況: スレーブ ライブラリとしてテストするとき。受信した binlog イベントの状況
通常のコマンドで起動した mariadb にデータ行を挿入し、受信したイベントを表示する gdb の順序は次のとおりです:
### i ) Gtid_log_event ### ii) Table_map_log_event ### iii) Write_rows_log_event ### iv) Xid_log_event
2 番目のケース: メイン ライブラリとしてテストする場合、受信した binlog イベント
在gdb启动的mariadb上插入一行记录,然后gdb观察接收到的事件为:
### 1)Rotate_log_event ### 2)Gtid_list_log_event ### 3)Rotate_log_event
Rotate_log_event事件是虚拟出来的,用于让主库跟上从库的同步位置,这基本上是一个空事件,没有做任何处理,所以初步怀疑是在处理Gtid_list_log_event事件的时候,出现了问题。
反复查看Gtid_list_log_event::do_appy_event函数中的调用情况,发现确实有些方法会调用thd->alloc来分配内存,但是没有回收,所以造成内存不断的增大,我考虑了一下,因为是主库对于同步性能要求也不高,所以在Gtid_list_log_event::do_apply_event函数的最后加了一行代码:free_root(thd->mem_root, MYF(MY_KEEP_PREALLOC)); 重新编译后,跑了一天,内存终于稳定了。
由于目前发现只有主库有该事件,主库同步处理性能要求不高,所以暂时先这样用着了。不知道mariadb官方版本什么时候会优化一下。
总体来看,Mariadb还是比较适合我们公司的,它有最新的功能、特性能够给我们提供很多解决方案。Tokudb可以解决日志型存储的问题;连接池可以解决大量连接情况下性能地下的问题;审计插件提供安全方面的审核;slave并发模式能够提供高性能的复制能力。除了这些常见功能以外,Mariadb还提供了Cassandra插件、图数据库插件等等,这些都给我们给业务的服务增加了想象力。
【相关推荐】
2. MySQL最新手册教程
3. 数据库设计那些事
以上がMariadb の使用時に発生した 2 つの問題を共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









クラスタリング アルゴリズムのクラスタリング効果評価問題には、特定のコード例が必要です クラスタリングは、データをクラスタリングすることによって、類似したサンプルを 1 つのカテゴリにグループ化する教師なし学習手法です。クラスタリングアルゴリズムでは、クラスタリングの効果をどのように評価するかが重要な問題となります。この記事では、一般的に使用されるいくつかのクラスタリング効果評価指標を紹介し、対応するコード例を示します。 1. クラスタリング効果評価指標 シルエット係数 シルエット係数は、サンプルの近さや他のクラスタとの分離度を計算することでクラスタリング効果を評価します。

強力なパフォーマンスと多彩な機能で知られる iPhone は、複雑な電子機器によく見られる、時折起こる問題や技術的な困難を免れません。 iPhone の問題が発生するとイライラすることもありますが、通常は警報を発する必要はありません。この包括的なガイドでは、iPhone の使用に関連して最も一般的に遭遇する課題のいくつかをわかりやすく説明することを目的としています。当社の段階的なアプローチは、これらの一般的な問題の解決に役立つように設計されており、機器を最高の動作状態に戻すための実用的な解決策とトラブルシューティングのヒントを提供します。不具合やより複雑な問題に直面している場合でも、この記事はそれらを効果的に解決するのに役立ちます。一般的なトラブルシューティングのヒント 具体的なトラブルシューティング手順を詳しく説明する前に、役立つ情報をいくつか紹介します。

jQuery.val() が使用できない問題を解決するには、具体的なコード例が必要です フロントエンド開発者にとって、jQuery の使用は一般的な操作の 1 つです。その中でも、.val() メソッドを使用してフォーム要素の値を取得または設定する操作は、非常に一般的な操作です。ただし、特定のケースでは、.val() メソッドを使用できないという問題が発生する可能性があります。この記事では、いくつかの一般的な状況と解決策を紹介し、具体的なコード例を示します。問題の説明 jQuery を使用してフロントエンド ページを開発する場合、時々次のような問題が発生します。

多くのユーザーが win11 システムを更新しようとしましたが、更新後にスタート メニューが使用できないことがわかりました。最新の更新プログラムに問題があることが原因である可能性があります。Microsoft がこれらの更新プログラムを修正するか、アンインストールして問題を解決するのを待つことができます。問題です。一緒に見てみましょう。解決策。 win11 インストール後にスタートメニューが使用できない場合の対処方法 方法 1: 1. まず、win11 でコントロール パネルを開きます。 2. 次に、プログラムの下にある [プログラムのアンインストール] ボタンをクリックします。 3. アンインストール インターフェイスに入り、左上隅にある [インストールされたアップデートの表示] を見つけます。 4. 入力後、アップデート情報でアップデート時間を確認し、最近のアップデートをすべてアンインストールできます。方法 2: 1. さらに、更新なしで win11 システムを直接ダウンロードすることもできます。 2.これはほとんどのない製品です

Yulong 8 ワインマスター試験にはどのような問題がありますか?対応する答えは何でしょうか?試験に早く合格するにはどうすればよいですか?マスター オブ ワイン試験の活動では、回答しなければならない質問がたくさんあり、その回答を参照して解決することができます。これらの質問にはすべてワインの知識が含まれます。参考が必要な場合は、龍が如く 8 ワインマスター試験問題の解答の詳細な分析を見てみましょう。 Rulong 8 ワインマスター試験の問題の答えを詳しく解説 1.「ワイン」に関する質問。ハワイで大量に栽培されているサトウキビの糖分を原料に醸造され、王室御用達の蒸留所で造られる蒸留酒です。このワインの名前は何ですか? 答え: ラム酒 2.「ワイン」についての質問です。写真は乾燥高麗人参と乾燥ベルモットをブレンドしたドリンクです。オリーブが入っているのが特徴で「コックニー」と呼ばれています。

Wuhua Mixin は、2 月 28 日に突破テストを実施することを確認しました。今回は、過去のテストに参加したことがあるか、今回は資格があるのか、テストの開始と終了など、突破テストの一般的な問題を主に解決します。テストと事前ダウンロード時間は? サポートされているデバイス プラットフォームとその他のコンテンツを見てみましょう。 Wuhuami の新しいブレークスルー テストに関するよくある質問: 2 月 28 日、皆様のご来場をお待ちしております。 1.「破壊テスト」とは何ですか? このテストはAndroid向けの限定課金およびファイル削除テストであり、テスト終了後は本テストのゲームデータは削除されます。 2. 「オープニングテスト」または「エントリーテスト」に参加したことがありますか? 今回の「ブレイクテスト」に参加する資格はありますか? 「オープニングテスト」または「エントリーテスト」に参加したことがある方は、下記のQRコードを読み取って「クローズドベータにご参加いただいた方へ」へお進みください。

DockerCompose、Nginx、MariaDB のベスト プラクティス: デプロイされた PHP アプリケーションの監視と最適化 はじめに: 最新のアプリケーション開発では、コンテナ化はアプリケーションの管理とデプロイを改善するための一般的な方法となっています。 DockerCompose は、複数のコンテナを定義して実行するためのツールであり、アプリケーションのデプロイと管理のプロセスを簡素化します。この記事では、DockerCompose を使用して Nginx と

音声合成テクノロジーにおける音声流暢性の問題とコード例 はじめに: 音声合成テクノロジーは、音声信号処理、自然言語処理、機械学習を含む複雑なタスクです。音声流暢性の問題の 1 つは、生成された合成音声が自然で、滑らかで、首尾一貫して聞こえるかどうかを指します。この記事では、音声合成テクノロジにおける音声流暢性の問題について説明し、読者がこの問題とその解決策をよりよく理解できるようにいくつかのサンプル コードを提供します。 1. スピーチの流暢さの問題の原因: スピーチの流暢さの問題は、次の要因によって引き起こされる可能性があります。
