• ベストアンサー
  • 困ってます

DBサーバのSlaveサーバへの自動切換えの手法について

DBサーバのSlaveサーバへの自動切換えの手法について こんばんわ。 会社でDBもろくに触ったことがないのに以下の要件でDBサーバを構築してほしいと頼まれました。 【要件】 2台のDBサーバを構築して、1台をmasterもう一台をslaveに設定する。 その2台はレプリケーションされているものとする。 masterのディスク障害時にslaveをmasterに「自動で」昇格させる。 共にOSはcentOSで、MySQLのバージョンについては指定されていません。 以下のサイトを見ると自動ではできないように見受けられるのですがいかがでしょうか? http://www-jp.mysql.com/products/enterprise/high_availability.html なにぶんLinux、DBの知識が浅いためサイトを漁っても理解が追いつかないのが現状です。 何か上記の要件で構築するにあたり参考になるサイトがあればご教示いただけると幸いです。 なお、このDBサーバは商用ではなく検証用です。

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数2
  • 閲覧数527
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

LinuxでHAをするなら、無償のものならLinux-HA(今はPacemakerという名称)を利用することが多いです。ただしこれを自分で構築するのはやはり敷居が高いので、商用のlifekeeperやClusterPROなどが使われることも多いです。 また、現時点ではMySQLのレプリケーションは非同期なので、HA用途として利用するには不完全です。(最後の方の更新を少し失う可能性があります。)最新の開発版であるバージョン5.5にはSemi Synchronousレプリケーションという機能が追加されていて、これを使えばHAとして利用可能ですが、安定版ではないのでその点はご理解いただいたうえでご利用ください。 レプリケーションの応用の仕方については、添付のURLにある資料をごらんください。

参考URL:
http://www.slideshare.net/nippondanji/art-of-mysql-replication-4824469

共感・感謝の気持ちを伝えよう!

その他の回答 (1)

  • 回答No.1

こんばんは。 OS、DBからして、お金をかけずに構築したいのかな?と、思います。しかし、お金をかけないで構築するのは難しいと思います。 まずは、クラスタリング、もしくはフェイルオーバーと言うキーワードで検索してみてください。 やりたい事の目的にあったソフトが見つかると思います。 →価格にビックリするかもしれません。 運が良ければフリーのソフトが見つかるかも知れません。 @キーワードの意味は勉強と思って自分で調べて下さい。 また、自動でなくワンアクションを入れる事を考えると、実現し安くなるかも知れませんよ。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • DBサーバの構築でマスタをOracle、スレーブをMySQLにて構築す

    DBサーバの構築でマスタをOracle、スレーブをMySQLにて構築することはできるのでしょうか。

  • DBサーバを二台設置したときの扱い方について

    質問させて頂きます。 MySQLを用いたDBサーバを二台設置します。 WebサーバからDBサーバにアクセスしてデータを取得するとき 不整合などは生じないでしょうか? 負荷分散が一番の目的のようなので、クラスタリングになるのかと思い この疑問に至っています。 また、DBのレプリケーションでも負荷の若干の分散は行えるのでしょうか? 通常DBは二台設置すると上に言われましたが、扱い方などは私に一任されており どのように扱えばいいのか悩んでおります。 どうぞご教授の程お願いいたします。

  • SFTPで/var/lib/mysql/にPUT

    MySQL5.5でレプリケーション(準同期)を構築しています。 http://it.sifr.me/mysql-semi-synchronous-replication/ 上記のサイトを参考に、マスターサーバー(192.168.100.101)からスレーブサーバー(192.168.100.105)にレプリケーションの予定です。 上記サイトをもとに構築していたのですが、レプリケーションの前の段階の 「SFTPで/var/lib/mysql/に接続、PUT」するという単純なことが出来ません。 下記のように192.168.100.101にあるSQLをスレーブサーバー192.168.100.105にSFTPで接続してPUTするという作業をしたころ Couldn't get handle: Permission denied になってしまっています。 [root@sv1 ~]# cd /var/lib/mysqll      //192.168.100.101のマスターサーバー上でcd [root@sv1 mysql]# sftp -oPort=22 replica@192.168.100.105 //スレーブに接続 Connecting to 192.168.100.105... replica@192.168.100.105's password: sftp> cd /var/lib/mysql      //192.168.100.105のスレーブサーバー上でcd sftp> put master-mysql-data.tar.gz   //192.168.100.105のスレーブサーバーにput Uploading master-mysql-data.tar.gz to /var/lib/mysql/master-mysql-data.tar.gz Couldn't get handle: Permission denied  //エラー sftp> 現在のユーザー設定は以下の通りです。 ユーザー名はいずれも replica で 192.168.100.101(マスター) ●linuxユーザー(ユーザー名 replica) ●mySQLユーザー(ユーザー名 replica)    ホスト192.168.100.105 スレーブレプリケーションの許可 192.168.100.105(スレーブ) ●linuxユーザー(ユーザー名 replica)(グループ mysql) ●mySQLユーザー(ユーザー名 replica)     ホスト192.168.100.101    スレーブレプリケーションの許可&クライアントレプリケーションの許可 と設定しています。 尚、PUT先の192.168.100.105 の/var/lib/mysql/の所有者はユーザー、グループともmysqlです。 mysqlユーザーで行えばput可能のでしょうが、どのサイトを見てもreplication専用ユーザーを作って対応することとなっており、安全上の面からも機能限定のユーザーでputしたく考えております。 対応方法についてご教授いただきたくお願いいたしします。

    • ベストアンサー
    • MySQL
  • レプリケーション

    MySQLでスレーブ・マスターの設定をしてレプリケーションができたと思いますが、サーバ等がダウンした際にスレーブ・マスターの関係を逆転させること(今までスレーブだったのをマスターにして、マスターをスレーブに)は出来ますか? 2台のWEBサーバにそれぞれDBが乗っかっていて、マスターサーバがダウンした際にはDBも切り替えを行いたいのですが・・・ よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPからMySQLへのクエリの振り分け方法

    LAMP構成のWebアプリケーションでのDBサーバ増設について質問です。 今までDBサーバ(MySQL)1台で運用していたのですが、 1台増設してレプリケーションを行うことになりました。 DBサーバ1:マスター(新設) DBサーバ2:スレーブ そこで、PHPスクリプトを全面的に見直して、以下のように DBへのコネクション部分を変更する必要が出てきました。 ・コネクション中に一度でも更新系のクエリを発行する場合はマスターへ ・それ以外はスレーブへ これをインクルード先まで追って調査するのは現実的ではないため、 一括で振り分ける方法を探しています。 雑で申し訳ありませんが、環境は以下の通りです。 PHP 5.1.6 (cli) PEAR::DB(1.7.13) MySQL 4.1.22

    • ベストアンサー
    • PHP
  • WebサーバーのDBサーバー

    どなたか、教えて下さい。 今回Webサーバーの構築を行なうのですが、それにあたって質問があります。 ものすごい単純なことなのかもしれませんが。教えて下さい。 Webサーバーを1台、DBサーバーを1台構築しようと考えています。 Webサーバーには、IISを導入しようとかんがえていますが、 DBサーバーって、何か、特別な、Webの物の設定て必要なのですか? 普通のDBサーバー(ファイル)で構わないのでしょうか? すいません。お教えください。 今回Webサーバーと、ファイルサーバー(DB)が違うマシンなのは、 はじめてなもので・・・・・

  • DBサーバーはどれがいいのですか?

    MySQL、PostgreSQL、SQLサーバー、ORACLEデータベースについて 仮に、ユーザが5000万人のSNSを作った場合、MySQLやPostgreSQLで対応できますか? 検索に時間がかかったりするのでしょうか? その場合、DBをORACLEにしたほうがいいのでしょうか? ■費用について もし、DBサーバーを1台設置して、ORACLEにした場合、初期費用や毎月のコストはどのくらいになるのでしょうか? ORACLE対応のDBサーバーの金額等も教えて頂ければ幸いです。 あと、SNSの会員が10万人までだとしたら、 MySQL、PostgreSQL、SQLサーバー、ORACLEのうちだと、どれがコスト的に一番効率的でしょうか?

  • MySQL/DBサーバって、MySQL/DBクライアントみたいなものりますか?

    Linux+Apache+MySQLでサイト構築を検討しています。 MySQL/DBって、ORACLE8で言うところの、 いわゆる「Net8クライアント」のようなものってあります? 実は、今まで、NT+MS-SQLServer7でサイト構築してたのですが、 Linuxで再構築することとなっちゃいました。 で、MS-SQLServer7だったら、クライアントPCから、 GUIを使って、データベースのデータを簡単に変更することができます。 しかし、LinuxではMS-SQLServerは使えないので、じゃぁ、ORACLEって手もありますね。 そこで、ORACLEだったら、Net8があるので、多分、 上記のような使い方もできると思うのですが、 ORACLEは、導入コストが高すぎるので、却下されてしまいました。 で、Linux+MySQLにしようかと・・・。 しかし、サーバ機にLinux+MySQL/DBを構築するのはいいのですが、 Windowsなどのクライアントから、ORACLEでいうNet8でODBCのような接続で、 Microsoft-Accessなどを使って、データベースのデータを編集させたいんです。 よろしくお願いします!

  • レプリケーションがうまくいきません!

    WINDOWS xp と windows2000 で mysql を起動させて レプリケーションを取りたいと思っています。 バージョンは 4.0.22 同士です。 どうもうまくレプリケーションできません。 my.ini の内容です。 マスター [mysqld] log port=3306 skip-locking default-character-set=sjis max_allowed_packet=16M log-bin server-id=1 binlog_do_db=test set-variable=key_buffer=16M set-variable=thread_stack=128k set-variable=flush_time=1800 basedir=c:/mysql/ datadir=c:/mysql/data/ スレーブ [mysqld] log-bin server-id=101 master-host=10.0.0.1 master-user=rep1 master-password=rep1 replicate-do-db=test master-port=3306 basedir=c:/mysql datadir=c:/mysql/data default-character-set=sjis set-variable=key_buffer=16M ちなみに3306経由のアクセスはできています。 マスター側の show master status; show slave status; では、slave status が Empty set と出ます。 スレーブ側の show master status; show slave status; では、両方出ます。 何がおかしいのでしょうか?

  • MySQLパフォーマンスについて

    MySQLでレプリケーションを行っております。 例えば マスター1台で スレーブ10台のサーバへレプリケーションをおこなっているとした場合 1.マスターへの負荷はスレーブ1台の時よりかなり増大するものでしょうか?  それとも気にする程でもない程度でしょうか? 2.レプリケーション遅延はスレーブ1台の時より大きくなりますでしょうか? もちろんいろんな状況によって変化するとは思いますが 一般的に考えて、もしくは私見でもよいのでお教え頂けますでしょうか。 MySQLバージョン:5.5.15 1日のページビュー:500万PV 同時アクセス数:200 select と insert,update の比率は同じくらいです。

    • ベストアンサー
    • MySQL