3

ノード (リーフまたはアグリゲーター) を memSQL クラスターに追加するのは簡単です。memsql_cluster.json を編集し、memsql-cluster セットアップを再実行しました。問題は、既存のテーブルにパーティションを追加することです。ここでのポイントは、スケールアップすることです。行を追加する必要がありますが、元のクラスターで使用可能なメモリを使い果たしています。

たとえば、試しました:

mysql> create partition DMP:32 on 'ec2-X-Y-Z.compute-1.amazonaws.com':3306;

ERROR 1773 (HY000): Partition ordinal 32 is out of bounds. It must be in [0, 32).

mysql>

memsql ドキュメントを読んで、パーティションの数を変更する ddl オプションが見つかりませんでした。これらのテーブルを削除して再作成しないことをお勧めします。それを行う方法についてのアイデアはありますか?

ありがとう!

4

2 に答える 2

4

メモリがすでに使い果たされている場合、インメモリ データベースに行を追加することはできません。そうは言っても、スケールアウトできます (つまり、リーフ ノードを追加します)。

MemSQL クラスターにリーフ ノードを追加し、rebalance_partitions を実行して、既存のパーティションを大規模なクラスター全体に均等に分散できます。これにより、各パーティションがクラスター内でより多くのスペースを消費できるようになり、スケールアウトできるようになります。

パーティションを追加したいだけの場合は、mysqldump を使用して MemSQL スキーマとデータをエクスポートし、追加のパーティションでデータベースを再作成してから、スキーマとデータを、より多くのパーティションを持つデータベースにロードし直すことができます。

rebalance_partitions の詳細については、http: //docs.memsql.com/docs/latest/ref/REBALANCE_PARTITIONS.htmlをご覧ください。

于 2015-04-21T22:57:10.967 に答える