web-dev-qa-db-ja.com

mysqlの "innodb_buffer_pool_size"値を適切に変更するにはどうすればよいですか?

私は次の環境を持っています:

# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
# rpm -qa | grep ^mysql-community-
mysql-community-common-5.5.48-2.el7.x86_64
mysql-community-libs-5.5.48-2.el7.x86_64
mysql-community-client-5.5.48-2.el7.x86_64
mysql-community-release-el7-5.noarch
mysql-community-server-5.5.48-2.el7.x86_64
# 

調整する必要がありますinnodb_buffer_pool_sizemysqlの値ですが、前回それを行おうとしたときに、何かが南向きになり、バックアップからデータベースを復元することになりました(データベースは〜100Gなので、理想的にはそのルートに再び行きたくありません。

前回行った手順:

  • mysqldを停止する
  • my.cnf内のinnodb_buffer_pool_sizeの値を調整します
  • kill ib_logfile *
  • mysqldを起動する

私は何を間違えましたか?今回はどうしたらいいですか?

1
alexus

変更innodb_buffer_pool_sizeはib_logfilesをnukeする必要はありません。これが、データベース(*)を復元する必要が生じた理由である可能性があります。

Mysqlを停止する-> my.cnfの設定を変更する-> mysqlを開始する。

(*)ib_logfilesはリカバリデータを保持しています。ページはまだテーブルスペースにチェックポイントされていません。完全にシャットダウンしているかどうかを確認せずにそれらを削除すると、データが失われ、データベースが破損するおそれがあります。

3
Károly Nagy

実行しない iblogファイルを削除します。おそらくinnodb_fast_shutdown = 1を使用すると、起動時に余分な労力を費やすことで、迅速にシャットダウンできます。ファイルが必要です。

  1. my.cnfの変更-innodb_buffer_pool_sizeセクションで[mysqld]の設定を追加または増加します。
  2. Mysqldを停止します
  3. Mysqldを起動します

通常、利用可能な容量の70%RAMが適切な値です。

バージョン5.7.5はinnodb_buffer_pool_sizeの動的サイズ変更を実装しました。このバージョン(またはそれ以降)では、次のことができます

  1. my.cnfを変更して、再起動後に有効になるようにします。
  2. SET GLOBAL...システムの実行中。

バウンスは必要ありません。サイズの変更は、実行中のシステムで正常に実行されます。

1
Rick James