dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

mysqlのレプリケーションが止まったら

2006-08-17 00:09:09 | コンピュータ
今日もまた mysql のマスターサーバのディスクがあふれて、レプリケーションが止まってしまいました。
こんなときは他の人はどのように対処しているのでしょうか?

初めてこんな事態に陥ったときには、かなりあせったのですが、今となっては慣れたもんです。

1. スレーブでレプリケーションされている DB を削除
# mysql
> stop slave;
# mysqladmin drop *DB*
# mysqladmin shutdown
# mysqld_safe&
# mysql
> stop slave;

2. データのコピー
マスターにて
# mysql
> show master status;

スレーブにて
> change master to master_log_file = 'HOST-bin.XXXX', master_log_pos = XXXX;
> load data from master;
> start slave;

> show slave status;
で Slave_IO_Running と Slave_SQL_Running が両方とも Yes になっていればOK。

この方法でうまくいったので、毎回こうしていますが、もう少しスマートな方法があるんでしょうね。

複数のmysqlを1台のサーバで起動する方法

2006-08-11 01:31:18 | ウェブサービス
複数の mysql サーバを1台のサーバで起動するには、mysql の設定ファイルで mysqld のポート番号をかえればOKです。

configure で --prefix=/usr/local2 とし、設定ファイル /etc/my2.cnf には以下のように設定します。

[client]
port = 3307
socket = /tmp/mysql2.sock

[mysqld]
port = 3307
socket = /tmp/mysql2.sock

mysql サーバを起動するには、設定ファイルを指定して起動します。
# /usr/local2/bin/mysqld_safe --defaults-file=/etc/my2.cnf&

mysqladmin コマンドも同様に設定ファイルを指定します。
# /usr/local2/bin/mysqladmin --defaults-file=/etc/my2.cnf shutdown

ulimitの使い方メモ

2006-08-09 22:31:13 | コンピュータ
linuxでオープン可能なファイル数を調べる必要があったので、ulimit の使い方を調べてみました。

ulimit -a
で、各種パラメータの現在の値が表示されます。

オープン可能なファイル数を設定するには、
ulimit -n X
で設定します。

再び mod_perl のインストール

2006-08-08 00:49:04 | zaurus
以前 mod_perl をインストールしようとして、結局うまくいかないまま大分時間が経ちましたが、久しぶりにチャレンジしてみました。

今回は、「Apache + mod_perlでCGIを使うには?」を参考にさせてもらいました。
apache は DSO 対応でコンパイル済みなので、以下のオプションで mod_perl をコンパイル。

perl Makefile.PL \\
USE_APXS=1 \\
WITH_APXS=/usr/local/apache/bin/apxs \\
EVERYTHING=1

httpd.conf は以下のように設定。

LoadModule perl_module libexec/libperl.so
AddModule mod_perl.c
<IfModule mod_perl.c>
Alias /perl/ "/usr/local/www/perl/"
<Directory "/usr/local/www/perl/">
Options ExecCGI

<Files *.pl>
SetHandler perl-script
PerlHandler Apache::Registry
PerlSendHeader On
</Files>
</Directory>
</IfModule>

テストしたスクリプトは以下のとおり。
httpd.conf で指定した /usr/local/www/perl 以下に置きます。

#!/usr/local/bin/perl

use strict;

print("Content-Type: text/html\\n\\n");
print("\\n");
print("\\n");
print("\\n");
print("\\n");
print("hello mod_perl world\\n");
print("\\n");
print("\\n");

今までうまくいかなかったのが嘘のように、あっさりと「hello mod_perl world」が表示されました。