MySQLクラスターをセットアップしています。2つのデータノードと1つの管理ノードがあります。挿入を行うときにデータノードでエラーが発生するようになりました。
エラー1114(HY000):テーブル'users'がいっぱいです
助けていただければ幸いです。これは構成の問題ですか?もしそうなら、どのノードですか?各ノードはUbuntu9サーバーです。
MySQLクラスターをセットアップしています。2つのデータノードと1つの管理ノードがあります。挿入を行うときにデータノードでエラーが発生するようになりました。
エラー1114(HY000):テーブル'users'がいっぱいです
助けていただければ幸いです。これは構成の問題ですか?もしそうなら、どのノードですか?各ノードはUbuntu9サーバーです。
答えはここにあります:http: //dev.mysql.com/doc/refman/5.0/en/faqs-mysql-cluster.html#qandaitem-B-10-1-13
つまり、ndbエンジンはすべてのデータをRAMに保持します。ノードに1GBのRAMがあり、4GBのデータベースを読み込もうとしている場合、(ほぼ)運が悪いことになります。
RAMがインデックスの保存にのみ使用されるようにディスクを使用してデータを保存するようにndbを構成する方法があります(それらは引き続きRAMに保存する必要があります)。方法は次のとおりです。http: //dev.mysql.com/doc/refman /5.1/en/mysql-cluster-disk-data-objects.html
ただし、これを行うと、パフォーマンスが大幅に低下します。
誰かがこの問題を通過した場合に備えて、この問題の根本的な原因はの値ですMaxNoOfConcurrentOperations
。これは、テーブルが保持すると予想される行数に応じて増やす必要があります。
以下は、この問題の解決策です。
テーブルの初期作成のCREATETABLEを変更して、MAX_ROWS値を含め、このテーブルが保持すると予想される行数の2倍にします。
MaxNoOfConcurrentOperations
との値をMaxNoOfConcurrentTransactions
、クラスター内の最大のテーブルよりも高い値に増やします。これは、大きなテーブルに操作を適用するときに、MySQLクラスターがすべての行で並行して機能するためと考えられます。
設定を確認してください。innodb_data_file_path
このエラーは、そのキーで定義されている使用可能なスペースを超えたことを示しています。InnoDBのスペースを再定義するには、このリンクを確認してください。
または、データが保存されているパーティションのディスク領域が不足している可能性があります。
DBテーブルの構造のみをロードしているときに、同じエラーが発生しました。これは、ここで役に立ったかどうかを意味DataMemory
しIndexMemory
ます。また、テーブルの数が制限に達していないMaxNoOfTables
ため、問題ではありません。ここでの解決策は、クラスター内に持つことができるインデックスの最大数を反映する値MaxNoOfOrderedIndexes
を増やすことでした。MaxNoOfUniqueHashIndexes
したがって、DBに多くのインデックスがある場合は、それに応じてそれらの変数を増やしてみてください。もちろん、その変更を有効にするには、[ローリングリスタート][1]を実行する必要があります。
これが誰かに役立つことを願っています!