Netdataが動かない。。。。
結構ハマったのでメモ。
事象
- こちらの情報を参考に以下のコマンドでNetdataをインストール(CentOS7)
# bash <(curl -Ss https://my-netdata.io/kickstart-static64.sh)
- ブラウザでアクセスするとダンマリな状態
- ステータスを確認するとactiveにはなっているがこんなエラーが
# systemctl status netdata ● netdata.service - Real time performance monitoring Loaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled) Active: active (running) since 金 2019-04-05 11:09:40 JST; 35s ago Process: 65256 ExecStartPre=/bin/chown -R netdata:netdata /opt/netdata/var/run/netdata (code=exited, status=0/SUCCESS) Process: 65253 ExecStartPre=/bin/mkdir -p /opt/netdata/var/run/netdata (code=exited, status=0/SUCCESS) Process: 65250 ExecStartPre=/bin/chown -R netdata:netdata /opt/netdata/var/cache/netdata (code=exited, status=0/SUCCESS) Process: 65247 ExecStartPre=/bin/mkdir -p /opt/netdata/var/cache/netdata (code=exited, status=0/SUCCESS) Main PID: 65259 (netdata) CGroup: /system.slice/netdata.service └─65259 /opt/netdata/bin/srv/netdata -P /opt/netdata/var/run/netdata/netdata.pid -D -W set global process scheduling policy keep -W set global OOM score keep 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : CONFIG: cannot load user config '/opt/netdata/etc/netdata/stream.conf'. Will try stock config. 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : CONFIG: cannot load stock config '/opt/netdata/usr/lib/netdata/conf.d/stream.conf'. Running with internal defaults. 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata FATAL : MAIN :Cannot create unique machine id file '/opt/netdata/var/lib/netdata/registry/netdata.public.unique.id'. Please fix this. # : Invalid argument 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : /opt/netdata/usr/libexec/netdata/plugins.d/anonymous-statistics.sh 'FATAL' 'netdata:MAIN' '0321@registry/r:registry_get_th/13' 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata ERROR : MAIN : child pid 65284 exited with code 77. 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : EXIT: netdata prepares to exit with code 1... 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : /opt/netdata/usr/libexec/netdata/plugins.d/anonymous-statistics.sh 'EXIT' 'ERROR' '-' 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata ERROR : MAIN : child pid 65301 exited with code 77. 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : EXIT: cleaning up the database... 4月 05 11:09:40 [ホスト名] netdata[65259]: 2019-04-05 11:09:40: netdata INFO : MAIN : Cleaning up database [0 hosts(s)]...
- 1ヶ月前くらいにインストールした時はサクッと動いた
原因
オーナーがrootになっていたのでnetdataに変更したらうまく動きました。。。。
# pwd /opt # ls -l | grep net drwxrwxr-x 10 root root 263 4月 5 10:46 netdata
- 前にインストールした時のバージョン:v1.12.2-46-ga2992216
- 今回インストールしたバージョン:v1.14.0-rc0-33-gd9d41e6b
ansibleでmysqlのserver-idを生成
忘れてしまいそうなのでメモ
- 生成ルール
- IPアドレスの第2オクテット〜第4オクテットを取り出して連結
- 桁数は3桁で0パディング →同一セグメント内で一意になる
こんな感じでvarsを設定して、
mysql_server_id: "{{ ansible_default_ipv4.address.split('.')[1].zfill(3)}}{{ ansible_default_ipv4.address.split('.')[2].zfill(3)}}{{ ansible_default_ipv4.address.split('.')[3].zfill(3)}}"
templateで呼び出し。
server-id = {{ mysql_server_id }}
IPアドレスが192.168.0.1の場合だと、server_idは「168000001」となる
RHEL6で自己証明書作成
以前に検証環境で自己証明書(オレオレ証明書)を作ったことがあったのでそれをメモしておきます。
こちらのサイトを参考にしています。
プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について | レンタルサーバー・自宅サーバー設定・構築のヒント
環境
RHEL6.7
openssl0.9.8e
CA(認証局構築)
(1)認証局用のopenssl.cnf作成
# cp -p /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.org # vi /etc/pki/tls/openssl.cnf #################################################################### [ ca ] default_ca = CA_default # The default ca section #################################################################### [ CA_default ] # 自己証明書作成用に修正 #dir = /etc/pki/CA # Where everything is kept dir = /etc/pki/hogehoge_CA # Where everything is kept [ usr_cert ] # These extensions are added when 'ca' signs a request. # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. #basicConstraints=CA:FALSE basicConstraints=CA:TRUE
(2)認証局構築用のスクリプト作成
デフォルトのスクリプト(CA)を流用します。
# cp -p /etc/pki/tls/misc/CA /etc/pki/tls/misc/CA_hoge # ls -l /etc/pki/tls/misc/ 合計 32 -rwxr-xr-x. 1 root root 5178 1月 7 18:17 2014 CA -rwxr-xr-x 1 root root 5178 1月 7 18:17 2014 CA_hoge -rwxr-xr-x. 1 root root 119 1月 7 18:17 2014 c_hash -rwxr-xr-x. 1 root root 152 1月 7 18:17 2014 c_info -rwxr-xr-x. 1 root root 112 1月 7 18:17 2014 c_issuer -rwxr-xr-x. 1 root root 110 1月 7 18:17 2014 c_name # vi /etc/pki/tls/misc/CA_hoge if [ -z "$DAYS" ] ; then DAYS="-days 365" ; fi # 1 year #CADAYS="-days 1095" # 3 years CADAYS="-days 3600" # 10 years #if [ -z "$CATOP" ] ; then CATOP=/etc/pki/CA ; fi if [ -z "$CATOP" ] ; then CATOP=/etc/pki/hoge_CA ; fi
(3)CA構築用スクリプト実行
# /etc/pki/tls/misc/CA_hoge -newca CA certificate filename (or enter to create) Making CA certificate ... Generating a 2048 bit RSA private key ...................+++ .................................................................+++ writing new private key to '/etc/pki/hoge_CA/private/./cakey.pem' Enter PEM pass phrase:(パスフレーズを入力) Verifying - Enter PEM pass phrase:(パスフレーズを入力) ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:(国名を入力) State or Province Name (full name) []:(都道府県名を入力) Locality Name (eg, city) [Default City]:(市区町村を入力) Organization Name (eg, company) [Default Company Ltd]:(組織名を入力) Organizational Unit Name (eg, section) []:(何も入力せずにenter) Common Name (eg, your name or your server's hostname) []:(コモンネームを入力) Email Address []:(何も入力せずにenter) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:(何も入力せずにenter) An optional company name []:(何も入力せずにenter) Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /etc/pki/hoge_CA/private/./cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 15386495605545154568 (0xd587d03b6aa0b808) Validity Not Before: Mar 28 03:56:55 2014 GMT Not After : Feb 4 03:56:55 2024 GMT Subject: countryName = (国名) stateOrProvinceName = (都道府県名) organizationName = (組織名) commonName = (コモンネーム) X509v3 extensions: X509v3 Subject Key Identifier: XX:XX:XX・・・・ X509v3 Authority Key Identifier: keyid:XX:XX:XX・・・・ X509v3 Basic Constraints: CA:TRUE Certificate is to be certified until Feb 4 03:56:55 2024 GMT (3600 days) Write out database with 1 new entries Data Base Updated # ls -l /etc/pki/hoge_CA 合計 40 -rw-r--r-- 1 root root 4472 3月 28 12:56 2014 cacert.pem -rw-r--r-- 1 root root 1050 3月 28 12:56 2014 careq.pem drwxr-xr-x 2 root root 4096 3月 28 12:55 2014 certs drwxr-xr-x 2 root root 4096 3月 28 12:55 2014 crl -rw-r--r-- 1 root root 128 3月 28 12:56 2014 index.txt -rw-r--r-- 1 root root 21 3月 28 12:56 2014 index.txt.attr -rw-r--r-- 1 root root 0 3月 28 12:55 2014 index.txt.old drwxr-xr-x 2 root root 4096 3月 28 12:56 2014 newcerts drwxr-xr-x 2 root root 4096 3月 28 12:56 2014 private -rw-r--r-- 1 root root 17 3月 28 12:56 2014 serial
ルート証明書作成
# cd /etc/pki/hoge_CA # openssl x509 -inform pem -in cacert.pem -outform der -out cacert.der # ls -l 合計 52 -rw-r--r-- 1 root root 957 3月 31 15:11 2014 cacert.der -rw-r--r-- 1 root root 4472 3月 28 12:56 2014 cacert.pem -rw-r--r-- 1 root root 1050 3月 28 12:56 2014 careq.pem drwxr-xr-x 3 root root 4096 3月 31 14:53 2014 certs drwxr-xr-x 2 root root 4096 3月 28 12:55 2014 crl -rw-r--r-- 1 root root 131 3月 31 11:59 2014 index.txt -rw-r--r-- 1 root root 21 3月 31 11:59 2014 index.txt.attr -rw-r--r-- 1 root root 21 3月 31 11:44 2014 index.txt.attr.old -rw-r--r-- 1 root root 0 3月 31 11:59 2014 index.txt.old drwxr-xr-x 2 root root 4096 3月 31 11:59 2014 newcerts drwxr-xr-x 2 root root 4096 3月 28 12:56 2014 private -rw-r--r-- 1 root root 17 3月 31 11:59 2014 serial -rw-r--r-- 1 root root 17 3月 31 11:44 2014 serial.old
サーバ証明書作成
(1)サーバ用のopenssl.cnf作成
# ls -l /etc/pki/tls/ 合計 36 lrwxrwxrwx. 1 root root 19 8月 13 23:27 2013 cert.pem -> certs/ca-bundle.crt drwxr-xr-x. 2 root root 4096 2月 4 18:23 2014 certs drwxr-xr-x. 2 root root 4096 3月 28 11:54 2014 misc -rw-r--r-- 1 root root 11025 3月 28 12:55 2014 openssl.cnf -rw-r--r-- 1 root root 10906 1月 7 18:11 2014 openssl.cnf.org drwxr-xr-x. 2 root root 4096 2月 17 16:15 2014 private # cp -p /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl_server.cnf # vi /etc/pki/tls/openssl_server.cnf ・ ・ basicConstraints=CA:FALSE #basicConstraints=CA:TRUE ・ ・ # This is OK for an SSL server. nsCertType = server
(2)秘密鍵・CSR作成
# cd /etc/pki/tls/ # SSLEAY_CONFIG="-config /etc/pki/tls/openssl_server.cnf" /etc/pki/tls/misc/CA_hoge -newreq Generating a 2048 bit RSA private key .........................................................................................................................+++ ........................................................................................+++ writing new private key to 'newkey.pem' Enter PEM pass phrase:(パスフレーズを入力) Verifying - Enter PEM pass phrase:(パスフレーズを入力) ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:(国名を入力) State or Province Name (full name) []:(都道府県名を入力) Locality Name (eg, city) [Default City]:(市区町村を入力) Organization Name (eg, company) [Default Company Ltd]:(組織名を入力) Organizational Unit Name (eg, section) []:(部署名を入力) Common Name (eg, your name or your server's hostname) []:(コモンネームを入力) Email Address []:(何も入力せずにenter) Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:(何も入力せずにenter) An optional company name []:(何も入力せずにenter) Request is in newreq.pem, private key is in newkey.pem # ls -l 合計 56 lrwxrwxrwx. 1 root root 19 8月 13 23:27 2013 cert.pem -> certs/ca-bundle.crt drwxr-xr-x. 2 root root 4096 2月 4 18:23 2014 certs drwxr-xr-x. 2 root root 4096 3月 28 11:54 2014 misc -rw-r--r-- 1 root root 1834 3月 31 11:57 2014 newkey.pem -rw-r--r-- 1 root root 1033 3月 31 11:57 2014 newreq.pem -rw-r--r-- 1 root root 11025 3月 28 12:55 2014 openssl.cnf -rw-r--r-- 1 root root 10906 1月 7 18:11 2014 openssl.cnf.org -rw-r--r-- 1 root root 11024 3月 31 11:11 2014 openssl_server.cnf drwxr-xr-x. 2 root root 4096 2月 17 16:15 2014 private
(3)サーバ証明書作成
# cd /etc/pki/tls/ # SSLEAY_CONFIG="-config /etc/pki/tls/openssl_server.cnf" /etc/pki/tls/misc/CA_hoge -sign Using configuration from /etc/pki/tls/openssl_server.cnf Enter pass phrase for /etc/pki/hoge_CA/private/cakey.pem:(パスフレーズを入力) Check that the request matches the signature Signature ok Certificate Details: Serial Number: 15386495605545154570 (0xd587d03b6aa0b80a) Validity Not Before: Mar 31 02:59:27 2014 GMT Not After : Mar 31 02:59:27 2015 GMT Subject: countryName = (国名) stateOrProvinceName = (都道府県名) localityName = (市区町村名) organizationName = (組織名) commonName = (コモンネーム) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Server Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: XX:XX:XX・・・・・ X509v3 Authority Key Identifier: keyid:XX:XX:XX・・・・・ Certificate is to be certified until Mar 31 02:59:27 2015 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Certificate: Data: Version: 3 (0x2) Serial Number: 15386495605545154570 (0xd587d03b6aa0b80a) Signature Algorithm: sha1WithRSAEncryption Issuer: C=(国名), ST=(都道府県名), O=(組織名), CN=(コモンネーム) Validity Not Before: Mar 31 02:59:27 2014 GMT Not After : Mar 31 02:59:27 2015 GMT Subject: C=(国名), ST=(都道府県名), L=(市区町村名), O=(組織名), CN=(コモンネーム) Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: XX:XX:XX・・・ XX:XX:XX・・・ ・ ・ Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Server Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: XX:XX:XX・・・・ X509v3 Authority Key Identifier: keyid:XX:XX:XX・・・・ Signature Algorithm: sha1WithRSAEncryption XX:XX:XX・・・・ XX:XX:XX・・・・ XX:XX:XX・・・・ ・ ・ -----BEGIN CERTIFICATE----- XXX・・・・ XXX・・・・ -----END CERTIFICATE----- Signed certificate is in newcert.pem # ls -l 合計 64 lrwxrwxrwx. 1 root root 19 8月 13 23:27 2013 cert.pem -> certs/ca-bundle.crt drwxr-xr-x. 2 root root 4096 2月 4 18:23 2014 certs drwxr-xr-x. 2 root root 4096 3月 28 11:54 2014 misc -rw-r--r-- 1 root root 4716 3月 31 11:59 2014 newcert.pem -rw-r--r-- 1 root root 1834 3月 31 11:57 2014 newkey.pem -rw-r--r-- 1 root root 1033 3月 31 11:57 2014 newreq.pem -rw-r--r-- 1 root root 11025 3月 28 12:55 2014 openssl.cnf -rw-r--r-- 1 root root 10906 1月 7 18:11 2014 openssl.cnf.org -rw-r--r-- 1 root root 11024 3月 31 11:11 2014 openssl_server.cnf drwxr-xr-x. 2 root root 4096 2月 17 16:15 2014 private
RHEL6で論理ボリューム拡張
前提条件、環境
OS:RHEL6.7
物理サーバの空きスロットに900GBのディスクを3本増設し、RAID5を構築(ハードウェアRAID)
拡張するLV(Logical Volume、論理ボリューム)は「VolGroup00-LogVol00」
# df -m Filesystem 1M-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup-LogVol00 492150 153556 313594 33% / tmpfs 5950 1 5950 1% /dev/shm /dev/mapper/VolGroup00-LogVol00 297651 167939 114597 60% /backup /dev/sda1 243 60 171 26% /boot /var/opt/aipsnap/aiptmpfile.img 20353 130 19189 1% /var/opt/aipsnap/tmp
パーティションテーブルの確認
# fdisk /dev/sdb デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルをディスク識別子 0xd322afdb で作成します。 あなたが書き込みを決定するまで、変更はメモリ内だけに残します。 その後はもちろん以前の内容は修復不可能になります。 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): p ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト ヘッド 255, セクタ 63, シリンダ 218747 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0xd322afdb デバイス ブート 始点 終点 ブロック Id システム コマンド (m でヘルプ):q
今回追加したディスクが/dev/sdbとして認識されています。
拡張パーティションの作成
# fdisk /dev/sdb デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルをディスク識別子 0x63fff6ee で作成します。 あなたが書き込みを決定するまで、変更はメモリ内だけに残します。 その後はもちろん以前の内容は修復不可能になります。 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本パーティション (1-4) e パーティション番号 (1-4): 1 最初 シリンダ (1-218747, 初期値 1):(何も入力せずにenter) 初期値 1 を使います Last シリンダ, +シリンダ数 or +size{K,M,G} (1-218747, 初期値 218747): +900G コマンド (m でヘルプ): p ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト ヘッド 255, セクタ 63, シリンダ 218747 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x63fff6ee デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 117489 943730361 5 拡張領域
上記の通り拡張パーティション/dev/sdb1が作成されています。
後々いろいろ調べていたのですが、Lastシリンダの選択に関してはディスク全てを拡張パーティションにする場合はデフォルト値(何も入力せずにenter)のほうがいいみたいです。
論理パーティションの作成
コマンド (m でヘルプ): n コマンドアクション l 論理 (5 以上) p 基本パーティション (1-4) l 最初 シリンダ (1-117489, 初期値 1):(何も入力せずにenter) 初期値 1 を使います Last シリンダ, +シリンダ数 or +size{K,M,G} (1-117489, 初期値 117489): +900G コマンド (m でヘルプ): p ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト ヘッド 255, セクタ 63, シリンダ 218747 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x63fff6ee デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 117489 943730361 5 拡張領域 /dev/sdb5 1 117489 943730329+ 83 Linux コマンド (m でヘルプ):
論理パーティションsdb5が作成されています。
論理パーティションのファイルシステム(システムID)変更
コマンド (m でヘルプ): t パーティション番号 (1-5): 5 16進数コード (L コマンドでコードリスト表示): 8e 領域のシステムタイプを 5 から 8e (Linux LVM) に変更しました コマンド (m でヘルプ): p ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト ヘッド 255, セクタ 63, シリンダ 218747 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x63fff6ee デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 117489 943730361 5 拡張領域 /dev/sdb5 1 117489 943730329+ 8e Linux LVM コマンド (m でヘルプ):
ファイルシステムが「Linux LVM」に変更されています。
変更の保存
コマンド (m でヘルプ): wq パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 ディスクを同期しています。 #
新しいパーティションをシステムに認識させる
# partprobe Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (デバイスもしくはリソースがビジー状態です). As a result, it may not reflect all of your changes until after reboot.
サーバ再起動
# shutdown -r now
念のため変更が反映されているか確認
# fdisk /dev/sdb 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): p ディスク /dev/sdb: 1799.3 GB, 1799255752704 バイト ヘッド 255, セクタ 63, シリンダ 218747 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x63fff6ee デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 117489 943730361 5 拡張領域 /dev/sdb5 1 117489 943730329+ 8e Linux LVM コマンド (m でヘルプ): q
変更が反映されています。
物理ボリューム作成
# pvcreate /dev/sdb5 Physical volume "/dev/sdb5" successfully created # pvdisplay ・ ・ "/dev/sdb5" is a new physical volume of "900.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb5 VG Name PV Size 900.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID k7nprd-HXRc-MmRQ-dfEP-JerS-vtqn-ybm0CK
物理ボリューム「/dev/sdb5」が作成されています。
現在のVG(VolumeGroup)の確認
# vgdisplay --- Volume group --- VG Name VolGroup00 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 295.31 GiB PE Size 4.00 MiB Total PE 75599 Alloc PE / Size 75599 / 295.31 GiB Free PE / Size 0 / 0 VG UUID HstdF7-UfHF-h2vK-mHpB-iURB-YO4a-ZIeTSs --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 488.28 GiB PE Size 4.00 MiB Total PE 124999 Alloc PE / Size 124999 / 488.28 GiB Free PE / Size 0 / 0 VG UUID 5o8RVG-g0kR-ncUN-K44V-xcVw-esne-HQKHrR
2つのVGがありますが、今回は「VolGroup00」を拡張します。
VG(VolumeGroup)拡張
# vgextend VolGroup00 /dev/sdb5 Volume group "VolGroup00" successfully extended # pvdisplay -v /dev/sdb5 Using physical volume(s) on command line --- Physical volume --- PV Name /dev/sdb5 VG Name VolGroup00 PV Size 900.01 GiB / not usable 3.65 MiB Allocatable yes PE Size 4.00 MiB Total PE 230402 Free PE 230402 Allocated PE 0 PV UUID k7nprd-HXRc-MmRQ-dfEP-JerS-vtqn-ybm0CK # vgdisplay --- Volume group --- VG Name VolGroup00 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size 1.17 TiB PE Size 4.00 MiB Total PE 306001 Alloc PE / Size 75599 / 295.31 GiB Free PE / Size 230402 / 900.01 GiB VG UUID HstdF7-UfHF-h2vK-mHpB-iURB-YO4a-ZIeTSs
物理ボリュームがVG「VolGroup00」に所属しており、かつVG「VolGroup00」の容量が拡張されています。
LV(Logical Volume)の確認
# lvdisplay --- Logical volume --- LV Path /dev/VolGroup00/LogVol00 LV Name LogVol00 VG Name VolGroup00 LV UUID Gu5YIo-HjiV-OcdP-xzeX-g9xn-oyr6-tbqDvU LV Write Access read/write LV Creation host, time localhost.localdomain, 2013-08-13 22:51:36 +0900 LV Status available # open 1 LV Size 295.31 GiB Current LE 75599 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Path /dev/VolGroup/LogVol00 LV Name LogVol00 VG Name VolGroup LV UUID WAReRP-SClk-MpsC-oITR-Fpfb-QCbr-8IdWPY LV Write Access read/write LV Creation host, time localhost.localdomain, 2013-08-13 22:50:31 +0900 LV Status available # open 1 LV Size 488.28 GiB Current LE 124999 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
LV拡張用のパラメータ取得
# pvdisplay --- Physical volume --- PV Name /dev/sda3 VG Name VolGroup00 PV Size 195.31 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 49999 Free PE 0 Allocated PE 49999 PV UUID Y8cRJ0-DARD-YFA2-3Ncq-OHOo-JUk5-fheULi --- Physical volume --- PV Name /dev/sda6 VG Name VolGroup00 PV Size 100.00 GiB / not usable 1.65 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 25600 Free PE 0 Allocated PE 25600 PV UUID K9z05R-knpR-2dFz-zN17-yDec-9tS7-P0441N --- Physical volume --- PV Name /dev/sdb5 VG Name VolGroup00 PV Size 900.01 GiB / not usable 3.65 MiB Allocatable yes PE Size 4.00 MiB Total PE 230402 Free PE 230402 Allocated PE 0 PV UUID k7nprd-HXRc-MmRQ-dfEP-JerS-vtqn-ybm0CK --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 488.28 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 124999 Free PE 0 Allocated PE 124999 PV UUID bZ3rT7-eX3B-Z93t-TrJl-5vPc-m1X1-grykyP
物理ボリューム「/dev/sdb5」の物理エクステントのサイズ(PE Size)と物理エクステントの総数(Total PE)を取得します。 PE(物理エクステント)はLVMが扱う記憶領域の最小単位となり、4MiBがデフォルトのようです。ちなみにPE Sizeに出ている「MiB」ですが、メビバイトと言ってコンピューター上での「MB」ということです。詳しくはこちらを。
拡張できるサイズの計算
拡張できるサイズに関しては「PE Size×Total PE」で求められるので、拡張できるサイズは4×230402=921608MBになります。
LV(Logical Volume)拡張
# lvextend -L +921608M /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 1.17 TiB
Logical volume LogVol00 successfully resized
LV拡張確認
# lvdisplay /dev/VolGroup00/LogVol00 --- Logical volume --- LV Path /dev/VolGroup00/LogVol00 LV Name LogVol00 VG Name VolGroup00 LV UUID Gu5YIo-HjiV-OcdP-xzeX-g9xn-oyr6-tbqDvU LV Write Access read/write LV Creation host, time localhost.localdomain, 2013-08-13 22:51:36 +0900 LV Status available # open 1 LV Size 1.17 TiB Current LE 306001 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1
LVのサイズが拡張されています。
ファイルシステムの拡大
# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /backup; on-line resizing required
old desc_blocks = 19, new_desc_blocks = 75
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 313345024 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 313345024 blocks long.
ディスク容量確認
# df -h Filesystem Size Used Avail Use% マウント位置 /dev/mapper/VolGroup-LogVol00 481G 150G 307G 33% / tmpfs 5.9G 72K 5.9G 1% /dev/shm /dev/mapper/VolGroup00-LogVol00 1.2T 168G 950G 15% /backup /dev/sda1 243M 60M 171M 26% /boot /var/opt/aipsnap/aiptmpfile.img 20G 130M 19G 1% /var/opt/aipsnap/tmp
ディスク容量が拡張されています。
MySQLレプリケーション(GTID使わない版)
MySQL5.6よりGTID(Global Transaction ID)でのレプリケーションが出来るようになりましたが、基本を押さえたかったのでまずはGTIDを使わないオーソドックスなレプリケーション対応手順をメモしておきます。
前提条件
*vagrantで2台の仮想環境を構築
*仮想環境のIPアドレスは、192.168.33.10(マスター)、192.168.33.11(スレーブ)
*仮想環境のCentOSのバージョンは6.7、MySQLのバージョンは5.7.12
*マスター側にDB「test_db」を作成し、DB内にテーブル「zaiko」を作成
*テーブル「zaiko」のカラム情報、レコードの内容は以下の通り
◆カラム情報
mysql> SHOW COLUMNS FROM zaiko; +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | maker | text | YES | | NULL | | | type | text | YES | | NULL | | | serial | varchar(100) | YES | | NULL | | | purpose | varchar(20) | YES | | NULL | | | input_date | date | YES | | NULL | | | output_date | date | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec)
◆レコードの内容
mysql> select * from zaiko; +----+--------+-------+--------+----------+------------+-------------+ | id | maker | type | serial | purpose | input_date | output_date | +----+--------+-------+--------+----------+------------+-------------+ | 1 | maker1 | type1 | 001 | purpose1 | 2016-05-01 | 2017-05-01 | | 2 | maker2 | type2 | 002 | purpose2 | 2016-05-02 | 2017-05-02 | | 3 | maker3 | type3 | 003 | purpose3 | 2016-05-03 | 2017-05-03 | +----+--------+-------+--------+----------+------------+-------------+ 3 rows in set (0.00 sec)
【マスタ】/etc/my.cnf変更
下記を追加します。
# レプリケーション用設定 server_id=1 log_bin=mysql_bin binlog_format=MIXED max_binlog_size=100M expire_logs_days=30 sync_binlog=1 innodb_support_xa=1 innodb_flush_log_at_trx_commit=1
項目 | 説明 |
---|---|
server_id | MySQLサーバを識別するためのID |
log_bin | バイナリ ログ を採取するか否か。 ここにログファイル名を指定することで、有効となる |
binlog_format | バイナリロギング形式の指定 STATEMENT:実行されたSQLに基づいてロギング ROW:行ベースに基づきロギング MIXED:基本はSTATEMENTだが特定の条件では行ベースでロギング |
max_binlog_size | バイナリログの最大サイズ |
expire_logs_days | バイナリログの保管期間 |
sync_binlog | バイナリログをN回のステートメントまたはまたはトランザクションごとにフラッシュする設定 1が最も安全で、かつ最も遅い設定 |
innodb_support_xa | XA トランザクションの 2 相コミットで InnoDB のサポートを有効にする |
innodb_flush_log_at_trx_commit | トランザクションのCOMMIT時に、InnoDBログファイルへデータがディスクへ同期されるかどうかを指定。 指定できる値は0,1,2でデフォルトは1。 1の場合COMMITごとにログファイルへの書き込みとディスクへの同期が行われる。 0の場合はCOMMIT時には何も行われず1秒ごとにログファイルへの書き込みとディスクへの同期が行われる。 2の場合COMMITと同時にログファイルへの書き込みが行われるがディスクとの同期は1秒ごと。 |
max_binlog_sizeとexpire_logs_daysはデフォルト値でも問題ないかと思います。
sync_binlog=1,innodb_support_xa=1,innodb_flush_log_at_trx_commit=1のとき、バイナリログとInnoDBログファイルは完全に同期されます。
【マスタ】文法チェック(念のため)
# mysqld --verbose --help > /dev/null
【マスタ】mysql再起動
# service mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ]
【マスタ】レプリケーション用のユーザ作成
mysql> GRANT REPLICATION SLAVE ON *.* -> TO 'repluser'@'192.168.33.11' IDENTIFIED BY 'Repl-Pass0'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> mysql> SELECT user, host FROM mysql.user; +-----------+---------------+ | user | host | +-----------+---------------+ | repluser | 192.168.33.11 | | mysql.sys | localhost | | root | localhost | | testuser | localhost | +-----------+---------------+ 4 rows in set (0.00 sec) mysql>
ちなみに、GRANTを利用してユーザを作ることは近々出来なくなるらしいです。。。。
mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Warning Code: 1287 Message: Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. 1 row in set (0.00 sec)
【マスタ】データベースのダンプ
# mysqldump -uroot -p --all-databases --master-data=2 --single-transaction --flush-logs > /tmp/dumpfile.sql Enter password:(パスワードを入力) # ls -l /tmp/dumpfile.sql -rw-r--r-- 1 root root 766735 May 24 02:23 /tmp/dumpfile.sql
項目 | 説明 |
---|---|
--all-databases | すべてのデータベースをバックアップ |
--master-data=2 | CHANGE MASTER TOコマンドをダンプの先頭に付加。 --master-data=2:CHANGE MASTER TOがコメントアウト --maser-data=1:CHANGE MASTER TOが コメントアウトされずにダンプ |
--single-transaction | ダンプする際に先頭にBEGINをつける (ダンプ時のデータのトランザクションの一貫性を保つことができる)。 |
--flush-logs | ダンプを開始する前に、MySQL サーバ内のログファイルをフラッシュ |
【スレーブ】my.cnf変更
下記を追加します。
server_id=1000 report_host=slave1000 sync_binlog=0 innodb_flush_log_at_trx_commit=0
項目 | 説明 |
---|---|
report_host | レプリケーションの状態をマスターサーバなどでも確認しやすくなる |
【スレーブ】文法チェック(念のため)
# mysqld --verbose --help > /dev/null
【スレーブ】mysql再起動
# service mysqld restart Stopping mysqld: [ OK ] Starting mysqld: [ OK ]
【スレーブ】ダンプファイルをマスターからコピー
SCPかなんかで。。。
【スレーブ】ダンプファイルをリストア
# mysql -u root -p < /tmp/dumpfile.sql Enter password:(パスワードを入力)
【スレーブ】バイナリログファイル名と開始位置を確認
# head -100 /tmp/dumpfile.sql | grep CHANGE -- CHANGE MASTER TO MASTER_LOG_FILE='mysql_bin.000008', MASTER_LOG_POS=154;
MASTER_LOG_FILEがバイナリログファイル名、MASTER_LOG_POGがログのポジションとなります。
【スレーブ】レプリケーションの設定
mysql> CHANGE MASTER TO -> MASTER_HOST='192.168.33.10', -> MASTER_USER='repluser', -> MASTER_PASSWORD='Repl-Pass0', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql_bin.000002', -> MASTER_LOG_POS=154, -> MASTER_CONNECT_RETRY=10;
項目 | 説明 |
---|---|
MASTER_HOST | マスタのホスト名、もしくはIPアドレス |
MASTER_USER | マスタで作成したレプリケーション用ユーザ |
MASTER_PASSWORD | マスタで作成したレプリケーション用ユーザのパスワード |
MASTER_PORT | マスタのポート番号 (デフォルト値を設定しているだけなので特に設定しなくてもいいかも?) |
MASTER_LOG_FILE | バイナリログファイル名(*) |
MASTER_LOG_POS | バイナリログのポジション(*) |
MASTER_CONNECT_RETRY | マスタへの再接続を行う間隔(秒) |
*先ほど確認したバイナリログファイル名とポジションを指定します。
【スレーブ】mysqld再起動
# service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
【スレーブ】レプリケーションの開始
mysql> START SLAVE; Query OK, 0 rows affected (0.00 sec)
【スレーブ】レプリケーションの状態確認
mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.33.10 Master_User: repluser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql_bin.000008 Read_Master_Log_Pos: 154 Relay_Log_File: localhost-relay-bin.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql_bin.000008 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 154 Relay_Log_Space: 531 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 901b3801-207a-11e6-a220-0800272020f4 Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)
「Slave_IO_Running」と「Slave_SQL_Running」がYesになっていれば正常です。
ちなみにエラーが起きている場合は以下のような状態になります。
*************************** 1. row *************************** Slave_IO_State: Connecting to master Master_Host: 192.168.33.10 Master_User: repluser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql_bin.000002 Read_Master_Log_Pos: 154 Relay_Log_File: localhost-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql_bin.000002 Slave_IO_Running: Connecting Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 154 Relay_Log_Space: 154 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 1045 Last_IO_Error: error connecting to master 'repluser@192.168.33.10:3306' - retry-time: 10 retries: 54 Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0 Master_UUID: Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: 160525 01:57:50 Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)
上記はマスタ側のアカウント設定を誤ってマスタに接続できない状態なのですが、「Slave_IO_Running」が 「Connecting」となっており、「Last_IO_Error」にエラーメッセージが出力されています。
動作確認
実際にレプリケーションが動いているかどうかをzaikoテーブルにレコードを追加して確認してみます。
(1)レコード追加前の状態
【マスタ】
mysql> select * from zaiko; +----+--------+-------+--------+----------+------------+-------------+ | id | maker | type | serial | purpose | input_date | output_date | +----+--------+-------+--------+----------+------------+-------------+ | 1 | maker1 | type1 | 001 | purpose1 | 2016-05-01 | 2017-05-01 | | 2 | maker2 | type2 | 002 | purpose2 | 2016-05-02 | 2017-05-02 | | 3 | maker3 | type3 | 003 | purpose3 | 2016-05-03 | 2017-05-03 | +----+--------+-------+--------+----------+------------+-------------+ 3 rows in set (0.00 sec)
【スレーブ】
mysql> select * from zaiko; +----+--------+-------+--------+----------+------------+-------------+ | id | maker | type | serial | purpose | input_date | output_date | +----+--------+-------+--------+----------+------------+-------------+ | 1 | maker1 | type1 | 001 | purpose1 | 2016-05-01 | 2017-05-01 | | 2 | maker2 | type2 | 002 | purpose2 | 2016-05-02 | 2017-05-02 | | 3 | maker3 | type3 | 003 | purpose3 | 2016-05-03 | 2017-05-03 | +----+--------+-------+--------+----------+------------+-------------+ 3 rows in set (0.00 sec)
(2)マスタ側にレコード追加
mysql> insert into zaiko(maker,type,serial,purpose,input_date,output_date) values('maker4','type4','004','purpose4','2016-05-04','2017-05-04'); Query OK, 1 row affected (0.00 sec) mysql> select * from zaiko; +----+--------+-------+--------+----------+------------+-------------+ | id | maker | type | serial | purpose | input_date | output_date | +----+--------+-------+--------+----------+------------+-------------+ | 1 | maker1 | type1 | 001 | purpose1 | 2016-05-01 | 2017-05-01 | | 2 | maker2 | type2 | 002 | purpose2 | 2016-05-02 | 2017-05-02 | | 3 | maker3 | type3 | 003 | purpose3 | 2016-05-03 | 2017-05-03 | | 4 | maker4 | type4 | 004 | purpose4 | 2016-05-04 | 2017-05-04 | +----+--------+-------+--------+----------+------------+-------------+ 4 rows in set (0.00 sec)
(3)スレーブを確認
mysql> select * from zaiko; +----+--------+-------+--------+----------+------------+-------------+ | id | maker | type | serial | purpose | input_date | output_date | +----+--------+-------+--------+----------+------------+-------------+ | 1 | maker1 | type1 | 001 | purpose1 | 2016-05-01 | 2017-05-01 | | 2 | maker2 | type2 | 002 | purpose2 | 2016-05-02 | 2017-05-02 | | 3 | maker3 | type3 | 003 | purpose3 | 2016-05-03 | 2017-05-03 | | 4 | maker4 | type4 | 004 | purpose4 | 2016-05-04 | 2017-05-04 | +----+--------+-------+--------+----------+------------+-------------+ 4 rows in set (0.00 sec)
データの同期が取れているので、正常に動作しているようです。
Vagrant1.8.1のゲストOS(CentOS6.7)にMysql5.7をインストール
Mysqlの本家サイトからRPMをダウンロード
# wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
RPMインストール
# rpm -ivh mysql57-community-release-el6-7.noarch.rpm
mysqlインストール
# yum install mysql-community-server
サービス自動起動の設定
# chkconfig mysqld on # chkconfig --list | grep mysql mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
サービス起動
# service mysqld start Initializing MySQL database: [ OK ] Installing validate password plugin: [ OK ] Starting mysqld:
RHEL6(CentOS6)でcron復旧
以前にこんな出来事がありました。
同僚「あの~、サーバのcron設定が全部消えちゃったみたいなんですけど。。。。」
私「ん?ちょっと見てみますね(そんなことないだろうな。たぶん何か勘違いなんだろう。。。」
実際にサーバにログインして「# crontab -l」コマンド叩いてみると、
ほんとに設定が消えてる!!ヽ(゚Д゚;)ノ!!
私「な、なんかコマンド実行しました?^^;」
同僚「crontabのオプションで-rオプション付けて実行しました。」
工工工エエエエエエェェェェェェ(゚Д゚)ェェェェェェエエエエエエ工工工
とそんなときにやったことを残しておきます。
復旧方法
/var/log/cronには以下のようにcronの実行内容が出力されています。
May 15 06:00:01 host1 CROND[702]: (root) CMD (/usr/bin/php /hoge/silent_push.php 60 >/dev/null 2>&1) May 15 06:00:01 host1 CROND[703]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:00:01 host1 CROND[701]: (root) CMD (/usr/lib64/sa/sa1 1 1) May 15 06:00:01 host1 CROND[710]: (root) CMD (/bin/bash -l service nagios restart > /tmp/nagios_restart.log 2>&1) May 15 06:00:01 host1 CROND[706]: (root) CMD (/usr/bin/php /hoge/android99_push.php >/dev/null 2>&1) May 15 06:01:01 host1 CROND[1902]: (root) CMD (run-parts /etc/cron.hourly) May 15 06:01:01 host1 run-parts(/etc/cron.hourly)[1902]: starting 0anacron May 15 06:01:01 host1 run-parts(/etc/cron.hourly)[1911]: finished 0anacron May 15 06:05:01 host1 CROND[13744]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:10:01 host1 CROND[25976]: (root) CMD (/usr/lib64/sa/sa1 1 1) May 15 06:10:01 host1 CROND[25977]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:15:01 host1 CROND[5788]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:20:01 host1 CROND[18551]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:20:01 host1 CROND[18550]: (root) CMD (/usr/lib64/sa/sa1 1 1) May 15 06:25:01 host1 CROND[30763]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:30:01 host1 CROND[10669]: (root) CMD (perl /hoge/process_check.pl >> /tmp/process_check.log 2>&1 &) May 15 06:30:01 host1 CROND[10671]: (root) CMD (/usr/lib64/sa/sa1 1 1)
この情報をもとに実行間隔と実行コマンドを見たうえでcronに書いて復旧させました(地味^^;)。
これってもっと簡単に復旧できる方法ってあるんですかね??
再発防止策
以後はcronを更新する際は専用のファイルを更新し、それをcrontabコマンドで読み込む運用にしました。
# touch /hogehoge/crontab.bak # vi /hogehoge/crontab.bak # rrdファイル作成 38 * * * * perl /hoge/rrdfile_create.pl >/dev/null 2>&1 # rrdファイル更新 31 * * * * sh /hoge/rrdupdate.sh > /dev/null 2>&1 # 速度データ更新 8 * * * * sh /hoge/check_speed.sh >> /tmp/check_speed.log 2>&1 # 速度データをDBに登録 10 2 * * * sh /hoge/create_speed_data.sh >/dev/null 2>&1 # crontab /hogehoge/crontab.bak
これであればcronが消えても復旧はできるかなと。
このファイルを無視してcron直しちゃうとデグレードしちゃいますけどね^^;
もっと賢いやり方があるのかなぁ~?