週次バックアップのCronで、次のようなエラーが発生していました。
mysqldump: Got error: 1016: "Can't open file: './***/***.frm' (errno: 24)" when using LOCK TABLES
エラーメッセージを調べてみると、テーブル数が多すぎると今回のようなエラーになるようです。
推奨対策:open_files_limitの値を増やす
MariaDB [(none)]> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 962 |
+------------------+-------+
現在の設定値を確認してみると「962」、テーブル数は520ぐらいなので大丈夫なはずなんですが…、とりあえず倍近くにしてみたところ、エラーは発生しなくなりました。
[taro@server ~]$ sudo vi /etc/my.cnf.d/server.cnf
[mysqld]
open_files_limit=2048
MariaDB [(none)]> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 2048 |
+------------------+-------+
非推奨対策:–skip-lock-tablesオプションを使う
もう一つの対策ですが、mysqldump実行時に、–skip-lock-tablesオプションを付与する方法です。
ただし、この方法だとmysqldump実行時にロックしなくなるので、実行中にもデータが更新できてしまうため、整合性が取れなくなる恐れがあります。
mysqldump実行時に、絶対にデータ更新されないという場合のみの対策です。