2025 07,04 16:01 |
|
普段使わないけど、たまに使うときに、あれ?ってなるので、久しぶりにメモ
例えば html/subdir1 と html/subdir2 を除外してアーカイブを作成したい場合は、--exclude オプションを使う。 tar --exclude='html/subdir1' --exclude='html/subdir2' -cf - html | gzip -c > html.tar.gz ※ --exclude のパスは、tar に渡すパスと相対パスになる除外対象が多いなら、除外リストをファイルにして cat > exclude-list.txt <<EOF
html/subdir1
html/subdir2
EOF
tar --exclude-from=exclude-list.txt -cf - html | gzip -c > html.tar.gz
とすることも出来る PR |
|
2025 01,07 21:33 |
|
古い環境なだけに面倒なことばっかり起きる
やたら、httpdが元旦に落ちているという謎な現象 そんなわけで、httpdも監視対象にする vi /etc/monit.d/httpd
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/bin/systemctl start httpd" with timeout 60 seconds
stop program = "/bin/systemctl stop httpd"
if failed port 80 for 2 cycles then restart
if failed port 443 for 2 cycles then restart
if 5 restarts within 5 cycles then timeout
check processの行でpidファイルの存在確認。pidファイルが存在しないか、実行中のプロセスのPID番号が含まれていない場合startメソッドを呼び出す。
サービスを起動するコマンド。後ろの「with timeout 60 seconds」は起動タイムアウト時間を指定。
サービスを停止するコマンド。 80ポートへ2回連続でアクセスできなければサービスを再起動する。
443ポートへ2回連続でアクセスできなければサービスを再起動する。
5サイクル中5回再起動が行われた場合にそれ以上再起動を行わず、監視を止める。(再起動できない場合いつまでも再起動を繰り返さない処置です。) https://www.conversion.co.jp/tecblog/20210107/ |
|
2024 05,27 18:34 |
|
前回の記事の対応で、調べたことをメモとして
MySQLでは、テーブルにあるレコードの10%を超えるレコードに 変更を加えられた場合、該当のテーブルの統計情報(カーディナリティ)が再生成される。 構成オプション:innodb_stats_auto_recalcがONの場合。 デフォルトは、ON Analyzeする場合、 analyze table テーブル名; 以外には、mysqlcheckを使う (mysqlcheckは、MySQLのテーブルメンテナンス、修復を行なうことができる。 内部的には、CHECK, ANALYZE, REPAIR, OPTIMIZEのコマンドを利用して作業を行ない、
また、MySQLを稼働しているときに、実行することができる。)全データベースを確認する場合mysqlcheck -a -u root -p --all-databases
特定データベースのみを確認する場合mysqlcheck -a DB名 -u root -p
ついでに check(テーブルのエラーチェック)全データベースを確認する場合mysqlcheck -c -u root -p --all-databases
特定データベースのみを確認する場合mysqlcheck -c DB名 -u root -p
optimize(テーブルの最適化)全データベースを確認する場合mysqlcheck -o -u root -p --all-databases
特定データベースのみを確認する場合mysqlcheck -o DB名 -u root -p
repair(テーブルの修復)全データベースを修復する場合mysqlcheck -r -u root -p --all-databases
特定データベースのみを修復する場合mysqlcheck -r DB名 -u root -p
エラーチェックと修復を組み合わせて実行する場合mysqlcheck --auto-repair -c -o DB名 -u root -p
|
|
2024 05,24 18:29 |
|
めちゃくちゃハマったので、ここに記載
現行サーバのOSの期限が近付いたため、サーバの移行が行われました。 それにともない、DB(MySQL)も、地味にバージョンアップが実施された。 マイナーバージョンアップにより、SQLが厳密化され、型が違うカラムをJOINの条件にしていた部分をCONVERT()関数をつかって、キャストしたり。。。 CONVERT(数値カラム USING binary)=文字列カラム みたいな。。。 型を意識しないで結合して作った奴出て来いよ!と思いつつ それ以外は、プログラムの変更は行われていないのに、サーバ移行が行われ、パフォーマンスが大幅にダウン その原因究明に、駆り出され、1週間 EXPLAINなどつけて、インデックス状況を確認し、SQLをチューニングしたり でも、チューニングの結果が出ないの繰り返し。 幸いにも、旧サーバが残っていたので、新旧を比べることに。 新サーバのほうで、今まで使っていたインデックスが効いていない! なんでだ?なんでだ?と試行錯誤。 (移管した奴が調べろよっと思いつつ、ストレスが溜まる1週間) 推測はインデックスが壊れているでは?、インデックスの統計情報がおかしいのでは? と思いつつ、壊れているパターンから調査。 壊れてはいなそう。。。ということで、統計情報を確認。 差がありました。。。 確認したSQLとして、 SELECT database_name , table_name , last_update , stat_value , index_name , (stat_value * @@innodb_page_size) / 1024 / 1024 as size_mb FROM mysql.innodb_index_stats WHERE database_name='データベース名' AND table_name='テーブル名' AND stat_name='size'; 結果:size_mbが全然違うじゃん! ということで、 ANALYZE TABLE テーブル名 を実施 再度、サイズを確認し、更新されたことを確認 プログラムを動かしてみてくれ~とお願いしたら、1秒でレスポンスが返ってきた!と 苦労が報われるお返事がきました。 めちゃくちゃハマったというか、時間を使った。。。 |
|
2024 05,01 16:01 |
|
忍者ブログ [PR] |