/usr/share/mysql/my-large.cnf
などのサンプル構成を見ると、..
[mysqld]
max_allowed_packet = 1M
[mysqldump]
max_allowed_packet = 16M
ポイントは?
mysqldump
とmax_allowed_packet
を使用してダンプをエクスポートすると、現在のmysqlに正常にインポートできない可能性があるためです。例えば。 https://stackoverflow.com/questions/93128/mysql-error-1153-got-a-packet-bigger-than-max-allowed-packet-bytes
max_allowed_packet
変数は、単一の結果セットのサイズを制限します。 [mysqld]
セクションでは、通常の接続では、1回のクエリで1M
相当のデータしか取得できません。 mysqldump
では通常、「拡張INSERT」クエリを生成します。このクエリでは、同じINSERT
コマンド内に複数の行をリストします。したがって、この変数を高く設定することをお勧めします。
上記は簡単な説明です。さて、あなたの質問は「要点は?」明確な答えはありません。 my-XXXXX.cnf
のファイルセットは古くなっており、一般に合意されていない推奨事項(innodb_buffer_pool_size
に割り当てる必要があるメモリの量など)を含め、問題があります。したがって、それを一般的な出発点として考えてください。特に、これらの設定は使用可能なメモリが非常に少ないシステム(128M
RAMなど)に関連しているため、数値は今日のハードウェアには実際には適用されません。
必ずしも同じサーバーにダンプをインポートする必要はないので、max_allowed_packet
の設定が高い別のサーバーにインポートすることもできます。
補足として、私は通常max_allowed_packet
を32M
や64M
のような非常に高い値に設定しています。 sort_buffer_size
のような他の変数とは対照的に、max_allowed_packet
では、必要な分だけ支払うことができます。したがって、必要がない場合、接続は完全な64M
を割り当てません。
1M
の制限は、TEXT
またはBLOB
を含む行があり、1M
を超える可能性があることを意味します。このような場合、実際には読み取ることができません。その行。
文書によると[1]:
When creating multiple-row INSERT statements
(as with the --extended-insert or --opt option), mysqldump creates rows
up to net_buffer_length length.
そして、net_buffer_length
は1Mです。上記の構成はmax_allowed_packet
/mysqldump
は16Mです。
[1] http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_net_buffer_length