web-dev-qa-db-ja.com

mysqldumpの前にデフォルトのinnodb_buffer_pool_sizeを設定し、mysqldumpの後に1600Mに戻す方法は?

毎日自動でバックアップしたい。データベースが700〜800Mbの場合は問題ありませんでしたが、現在データベース(ダンプされたSQLファイル)は1.5Gであり、mysqldumpを使用すると、2013エラーを含むランダムテーブルでエラーが発生します。

innodb_buffer_pool_sizeの設定をコメント化すると、mysqldumpは完全に機能します。

mysqldumpの前にデフォルトのinnodb_buffer_pool_sizeを設定し、次に1600Mに戻す良い方法はありますか?


pS私はmysqldumpを次のように使用しています

mysqldump --max_allowed_packet=500M --net_buffer_length=548576 --single-transaction?
1
jsHate

MySQL 5.7では、設定 innodb_buffer_pool_size は動的です。

innodb_buffer_pool_size のデフォルト値は128M(134217728)です。

あなたがする必要があるのは以下です:

mysql -uroot -p... -ANe"SET GLOBAL innodb_buffer_pool_size = 1024 * 1024 * 128;"
mysqldump ...
mysql -uroot -p... -ANe"SET GLOBAL innodb_buffer_pool_size = 1024 * 1024 * 1600;"

バッファプール内のダーティページの数と、それらを使用するアクティブなトランザクションによっては、一時停止する場合があります。

0
RolandoMySQLDBA

どのサーバーでも、90%は危険なほど高い値です。 「小さな」2Gの場合、はるかに低い500Mで十分です。スワッピングはパフォーマンスにひどいです。しかし、事態はさらに悪化しています---max_allowed_packet=500Mは、ひどく大量のRAMを使用しています。 50Mをお試しください。エラーが発生した場合は、それを上げてbuffer_poolを下げます。

0
Rick James