ibdataが肥大化しないためにmy.cnfの書き換えが必要
前回の記事: 【容量不足にした犯人を探す方法】
残念ながら、DB全体をダンプ→設定の書き換え→リストアの流れになるようだ。
DB全体をダンプ
# eventsテーブルもダンプ sudo mysqldump \ --all-databases \ --add-drop-database \ --add-drop-table \ --lock-all-tables \ --events \ > /tmp/dumpdata # ダンプファイルを確認 ls -al /tmp/dumpdata -rw-r--r-- 1 root root 530170 12月 6 15:53 2018 /tmp/dumpdata
my.cnfの書き換え
innodb_data_file_path = ibdata1:1G
ibdata1 のサイズ制限を1GBとする。
制限サイズに達すると、TABLEの更新ができなくなるらしい。
innodb_file_per_table
ibdata1に全てのデータを放り込まず、それぞれのテーブルへ分散させるらしい。
# mysqldを停止 /etc/init.d/mysql stop cp -a /etc/my.cnf /etc/my.cnf.bak # [mysqld]セクション内に # innodb_data_file_path = ibdata1:1G # innodb_file_per_table # の2行を追加 vim /etc/my.cnf # 設定を確認 cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 innodb_data_file_path = ibdata1:1G innodb_file_per_table [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
設定を反映してリストア
# えいやっと削除して、失敗したら残念な思いをするので、 # 避難用の一時フォルダを作成 mkdir /tmp/mysql_ibd # 避難フォルダに移動 mv /var/lib/mysql/ibdata1 /var/lib/mysql/ib_logfile* /tmp/mysql_ibd/ # mysqldを起動 /etc/init.d/mysqld start # ダンプからリストア mysql < /tmp/dumpdata # DBを作成し、リストア mysql -e 'CREATE DATABASE cloud;' mysql cloud < cloud_dump.sql # 問題なさそうなら、避難用のフォルダ削除 rm -rf /tmp/mysql_ibd
cf. [MySQL] ibdata1のサイズを削減する手順 [InnoDB]
https://oshiire.to/archives/1684
cf. MySQL ibdataのデータサイズが肥大化した場合の対処方法。
https://qiita.com/kooohei/items/15607ffbc3226d636b3f
コメント