タグ: centos

mysqld-relay-bin.******** not found (Errcode: 2)

ERROR 29 (HY000) at line 22: File './mysqld-relay-bin.24352415' not found (Errcode: 2)

と言われました。

tail -n 20 /var/log/mysqld.log

で、ログを確認すると

130510  5:29:09 [ERROR] /usr/libexec/mysqld: File './mysqld-relay-bin.24352415' not found (Errcode: 2)
130510  5:29:09 [ERROR] Failed to open log (file './mysqld-relay-bin.24352415', errno 2)
130510  5:29:09 [ERROR] Failed to open the relay log './mysqld-relay-bin.24352415' (relay_log_pos 4)
130510  5:29:09 [ERROR] Could not open log file
130510  5:29:09 [ERROR] Failed to initialize the master info structure

とか。

cat /var/lib/mysql/mysqld-relay-bin.index

を確認すると

./mysqld-relay-bin.24352415

と書いてあるけど、そんなファイルは存在しない。
仕方がないのでこの行を消してみる。

そうすると今度は

ERROR 1201 (HY000) at line 22: Could not initialize master info structure; more error messages can be found in the MySQL error log

だと。
master info の初期化に失敗?のようなカンジなので

rm master.info

で削除。
ついでに

rm relay-log.info

も削除。

/etc/init.d/mysqld restart

で再起動して・・・OKでした。

3TB HDD を 1 パーティションで (parted コマンド)

fdisk コマンドは2TB以上のHDDには対応していない。
fdisk を叩いた時に出てくる

警告: GPT (GUID パーティションテーブル) が '/dev/sdb' に検出されました!
この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。

が、その意味だった。完全にスルーしていた。
なので、警告の通り、parted コマンドを使ってみる。
これからは fdisk ではなくて、parted ってことなのかな。

まず
# parted -l
で、接続されているディスクの状況を確認。

# parted -l
モデル: ATA WDC WD20EARS-00M (scsi)
ディスク /dev/sda: 2000GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  2000GB  2000GB

モデル: ATA ST3000DM001-1CH1 (scsi)
ディスク /dev/sdb: 3001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

モデル: ATA Hitachi HDT72502 (scsi)
ディスク /dev/sdc: 250GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了   サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  525MB  524MB   primary  ext4              boot
 2    525MB   250GB  250GB   primary                    lvm

モデル: Linux device-mapper (linear) (dm)
ディスク /dev/mapper/VolGroup-lv_home: 177GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop

番号  開始   終了   サイズ  ファイルシステム  フラグ
 1    0.00B  177GB  177GB   ext4

モデル: Linux device-mapper (linear) (dm)
ディスク /dev/mapper/VolGroup-lv_swap: 19.0GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop

番号  開始   終了    サイズ  ファイルシステム  フラグ
 1    0.00B  19.0GB  19.0GB  linux-swap(v1)

モデル: Linux device-mapper (linear) (dm)
ディスク /dev/mapper/VolGroup-lv_root: 53.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: loop

番号  開始   終了    サイズ  ファイルシステム  フラグ
 1    0.00B  53.7GB  53.7GB  ext4

SATAの結線を適当にやったので、/dev/sdc が起動ディスク。/dev/sdb と /dev/sda が増設ディスクという変な構成になってしまった。
気にせず /dev/sdb を編集していく。

# parted /dev/sdb
GNU Parted 2.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print                                                            
モデル: ATA ST3000DM001-1CH1 (scsi)
ディスク /dev/sdb: 3001GB
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

で、ディスクの詳細を確認。

(parted) mklabel                                                          
新しいディスクラベル? gpt                                                 
警告: いま存在している /dev/sdb のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?
はい(Y)/Yes/いいえ(N)/No? y

で、ディスクラベルを聞かれるが、要はパーティションテーブルの規格はどれにする?ということらしい。
選択できるのは
aix amiga bsd dvh gpt loop mac msdos pc98 sun
の 10種類。
今回は2TB越えHDDなので GPT を選択することになるか、と。

(parted) mkpart                                                           
パーティションの名前?  []? secondDisk                                     
ファイルシステムの種類?  [ext2]? ext4                                     
開始? 0
終了? 3001GB
警告: The resulting partition is not properly aligned for best performance.
無視(I)/Ignore/取消(C)/Cancel? i

で、パーティションの名前、ファイルシステム、開始と終了を聞かれるので、
目一杯ということで答える。
警告の「The resulting partition is not properly aligned for best performance.」は、
「開始?」の指定を「0」とだけ入力すると出てくるらしい。
「0%」と入力すると出ない。

上記の作業が終了したら

(parted) quit                                                             
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

で終了。fstabの更新についてアドバイスしてくれる。親切。

次に

# mkfs.ext4 /dev/sdb1

でフォーマットする。

フォーマット完了後、

# vi /etc/fstab

でマウント位置を指定、変更して保存。

mount -a

でマウントさせる。
df で確認してみる。

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/mapper/VolGroup-lv_root
                       50G  958M   46G   3% /
tmpfs                 7.8G     0  7.8G   0% /dev/shm
/dev/sdc1             485M   52M  408M  12% /boot
/dev/mapper/VolGroup-lv_home
                      163G  188M  154G   1% /home
/dev/sda1             1.8T  196M  1.7T   1% /mnt/2nd
/dev/sdb1             2.7T  201M  2.6T   1% /mnt/3rd

うむ。いいカンジ。

MySQLリポジトリの追加

MySQL 用のリポジトリがあったので、入れてみることにする。
これで 5.6 とかも楽に入れられる。

Download MySQL Yum Repository というページが公式の中にあるので、
ここからrpmファイルをダウンロードしてくる。
ダウンロードするファイルは
Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package
mysql-community-release-el7-5.noarch.rpm
Red Hat Enterprise Linux 6 / Oracle Linux 6 (Architecture Independent), RPM Package
mysql-community-release-el6-5.noarch.rpm
Red Hat Enterprise Linux 5 / Oracle Linux 5 (Architecture Independent), RPM Package
mysql-community-release-el5-5.noarch.rpm
から適宜選択。
ファイルのダウンロードには、オラクルのアカウントでログインしないといけない。
一度ログインしてしまえばダウンロードアドレスはわかるので、そのアドレスに対してwgetをかけても良い。

ダウンロードしてきたらサーバの適当なところにコピーする。

# rpm -ivh mysql-community-release-el6-3.noarch.rpm

で、mysql-community.repo がインストールされる。

# vi /etc/yum.repos.d/mysql-community.repo

を確認すると、

[mysql-community]
enabled=1

になっているので、これを

enabled=0

に変更して保存。

使用する時は

# yum update --enablerepo=mysql-community

のように、enablerepo で指定して使う。

MySQL Replication – Master コケ時の復旧方法

Masterがこけると、当然Slaveのデータも更新されない。

  1. Slaveにログインして
    stop slave;

    で、SLAVE状態を止める。

  2. IPアドレスをMasterのものに付け替える。
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    
    IPADDR=***.***.***.***

    を書き換え。

    /etc/init.d/network restart

    で、ネットワークの再起動。

たぶんこれだけ。

lynx のインストール

結構前に入れたと思ってたけど、違うサーバだったみたい。

# which lynx
/usr/bin/which: no lynx in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

ということで、入っていなかった。

yum install lynx

で普通にインストール。

yum update 中に固まったら

yum update

中に固まった?って状態の時がある。
別コンソールを開いて再度実行しようとすると

# yum update
Loaded plugins: fastestmirror
Existing lock /var/run/yum.pid: another copy is running as pid 23213.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  80 M RSS (122 MB VSZ)
    Started: Fri Oct  4 14:09:42 2013 - 36:53 ago
    State  : Sleeping, pid: 23213
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  80 M RSS (122 MB VSZ)
    Started: Fri Oct  4 14:09:42 2013 - 36:55 ago
    State  : Sleeping, pid: 23213

なカンジで、yum lockかかってるから終わるのを待ってる、みたいなことを言われる。
でもステータスはSleeping…

仕方がないのでこのSleepingしてるyumを一度終了したい。
yum.pid ファイルを削除すればロック状態から開放されるので、これを行う。
このファイルは

/var/run

配下にあるので

rm -f /var/run/yum.pid

で削除。

再度

yum update

すると、

There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.

みたいなことを言われるけど、一応アップデートできるようになる。

違うディレクトリのログファイルにも logrotate を適用する

うちはapacheのアクセスログの置き場所を変更しているので、logrotate の設定ファイルも書き換えておかないとキチンとrotateしてくれない。
変更するのは

/etc/logrotate.d/httpd

ファイル。
コピーを取って httpd_log とでも名前をつけておく。
中には

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

のように書いてあるので
1行目の指定を次のように変更。

/var/log/httpd_log/*log {
・・・
・・・

おわり。

git のインストール

CentOS に入れようと思って yum してみたけど、1.7.11 までしか出てこない。
ので、wget で持ってくることにする。

最新のコードは git-core から。

# wget http://git-core.googlecode.com/files/git-1.8.4.tar.gz
# tar -zxvf git-1.8.4.tar.gz
# ./configure
# make
# make install

これで入ったっぽい。

# git --version
git version 1.8.4

うむ。