毎日自動でバックアップしたい。データベースが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?
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;"
バッファプール内のダーティページの数と、それらを使用するアクティブなトランザクションによっては、一時停止する場合があります。
どのサーバーでも、90%は危険なほど高い値です。 「小さな」2Gの場合、はるかに低い500Mで十分です。スワッピングはパフォーマンスにひどいです。しかし、事態はさらに悪化しています---max_allowed_packet=500M
は、ひどく大量のRAMを使用しています。 50M
をお試しください。エラーが発生した場合は、それを上げてbuffer_poolを下げます。