web-dev-qa-db-ja.com

drbdとハートビートを使用したMysqlレプリケーション

既存のUbuntuサーバーセットアップのバックアップサーバーをセットアップしています。

DRBD(プロトコルC)をハートビートと一緒に実行しています。ハートビートは、エラーが発生した場合にバックアップサーバー上のMySQL5サーバーが起動するように構成されています。

Drbdとheartbeatを使用してレプリケーション後にmysqlサーバーを起動したいと思います。

my.cnfファイルとapparmor.d/usr.bin.mysqldのdatadirも変更しました。

Mysqlは、drbdデバイスがマウントされていないときに起動します。

私のログは次のように表示されます。

Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: 101026 12:55:28 InnoDB: Operating system error number 13 in a file operation.
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: The error means mysqld does not have the access rights to
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: the directory.
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: File name ./ibdata1
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: File operation call: 'open'.
Oct 26 12:55:28 twyford-hambc2 mysqld[27627]: InnoDB: Cannot continue operation.
Oct 26 12:55:28 twyford-hambc2 mysqld_safe[27634]: ended

Oct 26 12:55:42 twyford-hambc2 kernel: [ 2876.791880] type=1503 audit(1288094142.991:53: operation="inode_permission" requested_mask="::r" denied_mask="::r" fsuid=0 $
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: ^G/usr/bin/mysqladmin: connect to server at 'localhost' failed
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Oct 26 12:55:42 twyford-hambc2 /etc/init.d/mysql[27799]:
Oct 26 12:56:46 twyford-hambc2 lrmd: [17345]: WARN: mysql:start process (PID 2732 timed out (try 1). Killing with signal SIGTERM (15).
Oct 26 12:56:46 twyford-hambc2 lrmd: [17345]: WARN: operation start[139] on ocf::mysql::mysql for client 17348, its parameters: socket=[/var/run/mysqld/mysqld.sock] bi$

助けていただければ幸いです。

3
user58513

質問の記述が不十分で、実際の症状が何であるかを理解するのが混乱しています。

ハートビートを使用してプロセスを停止/開始する場合は、デフォルトのサービスを確認して変更することも重要です。 MySQLはサーバーの起動時に起動しないでください。 DRBDは起動しないはずです。これらのアクションは、通常の/etc/rc?.d initスクリプトではなく、ハートビートによって制御する必要があります。

さらにトラブルシューティングを行うには、ハートビートにアップ/ダウンスクリプトをいくつか追加して、マスター状態とバックアップ状態を切り替えるときにシステムが実行していることをログに記録します。

1
Wim Kerkhoff

Drbdの代わりにMySQLレプリケーションを使用することをお勧めします。

このセットアップでは、2つのlibe MySQLサーバーがあり、ハートビートはサービスIPとその他の可能なものを切り替えるだけで済みます...

データベースバックエンドにdrbdを使用すると、破損したデータベースが生成されることが知られています。

0
Silent-Bob