月別アーカイブ: 2015年12月

MySQLで容量の大きいバイナリデータを保存する場合

画像などのバイナリデータをMySQLに格納するために、BLOB型やMEDIUMBLOB型を利用することがありました。

BLOB型でサイズの大きいデータをMySQLに格納しようとするとMySQLのログにエラーログが出力されています。

100906 00:00:00 InnoDB: ERROR: the age of the last checkpoint is 9440228,
InnoDB: which exceeds the log group capacity 9433498.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
InnoDB: largest such row.
調べたところ、MySQLのログファイルのサイズが小さいために発生している模様。

MySQLは、テーブルスペースの更新に時間がかかるため、直接テーブルスペースを更新するのではなく、最初にログファイルに全ての更新を書き込み、そのあと非同期でテーブルスペースを更新するという仕組みになっています。

このログファイル・サイズはデフォルトで5MBが設定されていますが、ログファイルの合計サイズは、 innodb_log_files_in_group という設定値(デフォルト2)と、innodb_log_file_size との積で、トータル10MBとなります。

そのため、10MB以上のファイルをDB(MEDIUMBLOB/BLOB型のカラム)に格納しようとするとログファイルサイズをオーバーしてしまい、エラーとなるため、ログファイルのサイズを拡張しなければなりません。

変更方法は以下のとおりです。
続きを読む

Plesk11環境でNginx 413 Request Entity Too Largeエラーが表示される

Plesk11環境下でPHPを動作させていると、Nginx 413 Request Entity Too Largeというエラー表示が出る場合。

解決策は以下のとおり。

1.nginxを無効にする

nginxを無効にする方法
Plesk11の管理画面、もしくは、Pleskの付属コマンドの操作(nginxmng)で行います

2.nginxのバーチャルドメインテンプレートファイルを編集する

※以下の作業を行うと、サーバ内の全ドメインに対して、設定が変更になります。
2-1) /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php
のファイルを編集

以下の行を変更します
変更前: client_max_body_size 128m;
変更後: client_max_body_size 256m;

※変更後の数値は例です

2-2) 変更したら実際の設定ファイルに反映するため httpmng –reconfigure-all を実行します

# /usr/local/psa/admin/bin/httpdmng –reconfigure-all