2017-12-08 14 views
0

1つのマスターと2つのVIPスレーブデータベースサーバーがあります。我々は、列のデータ型をマスター上でVARCHAR(255)からTEXTに変更しました。 アプリケーションは現在、書き込み操作にのみmasterを使用し、読み取り操作にはスレーブを使用するように構成されています。 ALTER TABLEコマンドを使用してマスターサーバー上のデータ型を変更すると、スレーブサーバーが応答しなくなります。 我々はMariadb 10.0 を使用しているスレーブインスタンスがクエリを遅くすることにより、非常に遅くなるレプリケーションの問題

 
Id User Host Db Command Time(sec) State Info 
----------------------------------------------------------------------- 
203739 repl slave1  Binlog Dump 75,143,121 Master has sent all binlog to slave; waiting for binlog to be updated 

203740 repl slave2  Binlog Dump 75,143,121 Master has sent all binlog to slave; waiting for binlog to be updated 

[情報を処理]。セッションの 数:1590 thread_pool_max_thread = 500 現在値= 648

マスターサーバー上でALTER TABLEを実行した後、それがサーバーをスレーブに複製され、セッションの同じ時間数にスレーブサーバ上で急速に増加しますました。 遅いクエリのためにスレーブが応答しなくなると思います。

しかし、なぜこのクエリが遅くなり、スレーブが応答しなくなったのか分かりません。 DBAは、ANALYZE TABLEコマンドを実行した後、この問題は解決されたと言っています。 しかし、ANALYZE TABLEは統計情報を更新するだけなので、なぜこれが起こったのか分かりません。 誰かがこれについて何か起こったのであれば、助けとなるでしょうか? 今後このような問題を回避する方法。

答えて

0

TEXTVARCHARより遅い小さなケースが1つあります。 SELECTが(多くの場合、GROUP BYまたはORDER BYのソートのために)一時テーブルを作成する必要がある場合、最初にMEMORYテーブルを構築しようとします。しかし、TEXTBLOBはそのような使用を防ぎますので、代わりにMyISAMを使用します。これは遅いですが(仕事は終わります)。

「非常に遅い」や「反応しなくなる」などのフレーズでユーザーを識別することはほとんどないため、これは「小文字の問題」です。 だと、SELECTが2倍遅くなることがあります。

また、ANALYZE TABLEでは水が含まれていません。再び、それは因果関係ではなく、偶然かもしれません。

したがって、TEXTに変更することがあります。は「赤ちゃん」です。代わりに、slowlogを使って何が遅いかを見てみましょう。私が働きたいことについてはthisを参照してください。

関連する問題