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

MySQLのデータをrsyncしてもうまくいかない

サーバーAとサーバーBがあって、 rsyncで、サーバーBのMySQLのvarディレクトリ内をサーバーAと同じにしているのですが、 実際にSELECT文などで確認すると、同じになっていません。 このやり方は、不可能なのでしょうか? レプリケーションは使わない方向で、行きたいのですが。。。 ご教授、宜しくお願いします。

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

  • 回答数1
  • 閲覧数623
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • bx2
  • ベストアンサー率47% (97/206)

rsyncを実行する間は、サーバーAとサーバーBのMySQLサービスを停止しないと駄目でしょう。 サービスを停止しないと、サーバーAはファイルに書き出さずにメモリに残ったデータがあるでしょうし、サーバーBはメモリとファイルのデータが不一致でおかしくなるでしょう。 rsyncが使えるネットワーク環境があるのなら、レプリケーションを使うのが一番よいと思いますが。

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

質問者からのお礼

ご回答ありがとうございます。 やはり停止しないとダメなのですね。 たいへん参考になりました!

関連するQ&A

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

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

    • ベストアンサー
    • MySQL
  • lsync+rsyncミラーリングで除外ディレクトリの設定のしかた

    lsync+rsyncミラーリングで除外ディレクトリの設定のしかた centOS 5.5 で自宅サーバを立ち上げLinuxを勉強中です。 そこでlsyncdとrsyncを使い、リアルタイムに「サーバー#1」と「サーバー#2」でミラーリングを行うとしています。 ミラー元の「サーバー#1」に # vi /etc/lsyncd.conf.xml <settings>  <!--exclude-from filename="/tmp/exclude"/--> <logfile filename="/var/log/lsyncd.log"/> <binary filename="/usr/bin/rsync"/> <callopts> <option text="-lt%r"/> <option text="--delete"/> <exclude-file/> <source/> <destination/> </callopts> </settings> <directory> <source path="/var/www/AAA/"/> <target path="192.168.1.200::backup"/> </directory> </lsyncd> ミラー先の「サーバー#2」に # vi /etc/rsyncd.conf log file = /var/log/rsyncd.log uid = nobody gid = nobody [backup] path = /home/backup/ hosts allow = 192.168.1.0/24 read only = false と設定し、 ミラー元「サーバー#1」の /var/www/AAA/ はミラー先「サーバー#2」とデータの同期がとれています。 そこで、AAAディレクトリ内のXXXとYYYのディレクトリを除外してミラーリングを行いたいと思いますが、どのように設定したらよろしいでしょうか。 ################################# excludeが良くわかりません。 また「EXCLUDE パターン」http://www.infoscience.co.jp/technical/rsync/rsync.html#exclude に書かれている 除外したいディレクトリはフルパスではなく、基点ディレクトリからのパスを書くとありますが、 /var/www/AAA/XXX はどのように設定すればいいのでしょうか。 ################################# よろしくお願いします。

  • SSH + rsyncがダメです

    パスワード無しでサーバAの/home,/etcをからサーバBの/tmp/内にrsyncでコピーしたいのですがなかなかうまくできません。今のところrsyncで以下のような記述を実行して動作確認まではできました。 rsync -avz -e ssh /home/ サーバB:/tmp/ 当然ながら実行後パスワードを聞かれてしまいます。 そこでSSHの設定をしなければと思いネットを巡って試したのですが、どうしてもパスワードを聞かれてしまいます。 SSHの設定が分かってないのだと思います。 ずばり!を教えていただけるとうれしいです。 環境Redhat7.3 インストールしたままです。何もいじってません。ご教授お願い致します。

  • 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
  • rsyncの実行時間

    rsyncを実行後、ログに実行時間を残したいのですが、どのようにコマンドを打てば良いか教えてもらえないでしょうか。 time rsync -avz /usr/src /test >> /var/log/rsync/rsync.log 試しに上記のように打ってみたのですが、実行時間がログには入りませんでした。 Linux初心者ですが、宜しくお願いします。

  • cron で rsync が実行できない

    サーバ2台を使い rsync にて 同期をとっているのですが、 cron を使って自動化しようとしたところ ツマづいてしまいました。 rsync -au -e ssh {from} {to} 手動にて上記実行するとコピー実行できるのですが * * * * * rsync -au -e ssh {from} {to} >> err と crontab を設定したところ コピーが出来ていません。 /var/log/cron をみると1分置きに (root) CMD (rsync -au -e ssh {from} {to} >>err) とあり実行はされているようです err を確認しましたが特にエラー記述もありませんでした。 どういった箇所を調べればよいか助言いただけると助かります。 よろしくお願いします。

  • rsyncをPHPで行いたいのですが、

    いつもお世話になっております。 rsyncをPHPのexecコマンドから行いたいと思っているのですが、 現状、コピー元のサーバー、コピー先のサーバーともroot権限が無い状態ですので、 公開鍵、秘密鍵を作ることができない状況です(root権限無かったら作れないですよね?)。 なので、sshでpassを聞かれても良いのでrsyncを実行しようと思うのですが、 passを聞かれる場合でもPHPのexecコマンドからrsyncを実行することはできますでしょうか? 色々サイトを見ても鍵を生成してパスワードを省略することしか記載されていないので。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • rsyncの挙動について

    お世話になります。 現在AサーバからBサーバに対して、定期的にrsyncにてサーバ内ファイルの同期を行っています。 毎日更新されているファイル数が数十万ということと、回線が細い為に同期完了まで約2時間程かかります。 その際少し気になる点があります。 例えば、数十万ある同期対象ファイルの中でhoge.txtというファイルがあったとします。このファイルは動的に書き込みが行われるログファイルです。中身はWEBのアクセスログのようなものです。 このファイルを含む数十万のファイルをrsyncで同期を行った場合以下のような現象が起こります。 --条件------------------------------------------- rsync開始時刻 :01:00 rsync完了時刻 :03:00 rsync開始時の同期元Aサーバにあるhoge.txtのタイムスタンプ :00:58 rsync完了時の同期先Bサーバにあるhoge.txtのタイムスタンプ :00:58 rsyncオプション :rsync -auvvz -e /usr/bin/ssh --exclude '*~' --delete ------------------------------------------------- 上記条件及び結果の元、Bサーバに同期されたhoge.txtを見てみるとファイルのタイムスタンプ自体はAサーバでrsyncを開始した時点でのタイムスタンプ(00:58)なのですが、ファイルの中身を見てみると、ログファイル内にて01:30にアクセスがあったという記録が追記されています。 恐らくは約2時間かかるrsync実行中のうち、01:30以降にAサーバからBサーバに同期が行われたと思うのですが、それであれば、hoge.txtのタイムスタンプ自体も01:30に変わっていなければならないはずだと思うのです。 ちなみにこのhoge.txtというログファイルは書き込みが行われる毎にファイルのタイムスタンプも更新されます。 そこで質問させて頂きたいのですが、rsyncの挙動としてこのようなことはありえるのでしょうか? それではどうぞよろしくお願い致します。

  • rsyncのオプションについて

    現在、rsyncにてサーバー間の同期をとろうと思っています。 A、B、Cのサーバーがあった場合 1.A→Cにファイルを吸い上げる 2.C→A、C→Bにコピーする ※このとき、C→Aにコピーする必要はないですが念のためって程度です。 サーバーAには絶えず最新のファイルが存在する前提です。 これだけなら簡単なのですが。。。 以下の場合に困っています。 上記、1と2の間 Aから吸い上げられた直後に、Aのファイルが更新されると その後の、C→Aのrsyncで古いコンテンツに上書きされてしまいます。 ※ファイルサイズも、タイムスタンプも違うため こんな状態のようです。 1.A→Cにファイルを吸い上げる ※このときのファイルのバージョンを1.0とします。 2.Aにファイルの更新がかかる ※このときのファイルのバージョンを2.0とします。 2.C→A、C→Bにコピーする ※この時点で、Cにはバージョン1.0のファイルがあるので  Aサーバーへのコピーされてしまう。。。  1.0と2.0では、サイズもタイムスタンプも違うため。。。 なんとかしたいのは、このようなことがあっても大丈夫なように タイムスタンプを比較で新しければ、rsync起動とやりたいのですが。。。 オプション探しても見つかりません 知っている方が居ましたら、ご教授いただけないでしょうか? もしくは、このような場合に同期をとる別の簡単な方法があればと思っています。 ※rsyncであれば、使ったことあるし設定も楽なので  この手法がいいかなって思っています

  • mysqlのバックアップについて

    mysqlのバックアップを検索したところ、データベースがオンライン(稼働中)の場合、mysqlhotcopyやmysqldumpを使ってのバックアップで、オフラインの場合は、/var/lib/mysql/*のディレクトリコピーをするといったサイトが多いのですが、オンライン中(稼働中)に/var/lib/mysql/*のディレクトリコピーをするのは問題があるのでしょうか。 単純にディレクトリコピーをしてしまえば、リストアの時も簡単な気がするのですが、オンライン中にディレクトリをコピーしたら、壊れるとかありますか。 よろしくお願いします。

    • ベストアンサー
    • MySQL