ホームページ  >  記事  >  バックエンド開発  >  Mysqlデータを同期する方法_PHPチュートリアル

Mysqlデータを同期する方法_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:09:20963ブラウズ


MySQLデータを同期する方法 ホスト A と B (Linux システム) があるとします。ホスト A の IP は 1.2.3.4 (もちろん、動的にすることもできます)、ホスト B の IP は 5.6.7.8 です。両方のホストに PHP+Mysql が搭載されており、現在ホスト A 上のデータを操作しています。別のホスト B が A とデータを同期したい場合、どうすればよいでしょうか?

よし、それではやってみよう。

まず、2 つのホスト間でデータを同期したい場合、1 つの方法は、ホスト A がホスト B にデータを送信することです。もう 1 つの方法は、A の IP が動的であるため、ホスト B がホスト A からデータを取得することです (仮定) , したがって、ホスト A からホスト B にデータを送信する必要があります。

ホスト B に Mysql アカウントを作成します。
# GRANT ALL ON test.* TO user@% IDENTIFIED BY "password"; // 任意のマシンからホスト B 上のテスト データベースにアクセスできるユーザー user を作成します。

ここでエラーが表示された場合は、まず % を IP に変更し、次に phpMyAdmin を使用して IP を % に変更します。テストが正しければ、php プログラムを作成できます。

$link=mysql_pconnect("localhost","user","password"); // このマシン (ホスト A) に接続します。データベース
mysql_select_db("test"); //データベース テストを選択

$re=mysql_query("select * from table order by id desc"); num)) {
$id=mysql_result($re,0,"id"); //ローカルテーブルの最大IDを取得します
}

mysql_close($link) //ローカルデータベースとの接続を閉じます
;

$link=mysql_pconnect("5.6.7.8","test","test");
mysql_pconnect("5.6.7.8","test","test") //ホスト B のデータベースに接続します
mysql_select_db( "test"); //データベース テストを選択します。このデータベースはホスト A 上のテスト データベースと同じ構造を持つ必要があります。
$re=mysql_query("select * from table order by id desc");
$num=mysql_numrows($re);
if (!empty($num)) {
$remote_id=mysql_result($re,0, "id"); //ホスト Btable テーブルの最大 ID を取得します
}

if ($id>$remote_id) {
$result_id=$id-$remote_id; //ホスト内のテーブルの最大 ID を取得しますA はホスト B より大きい テーブル内のテーブルの最大 ID は、2 つの
} のデータが異なることを示します

mysql_close($link) // ホスト B のデータベース接続を閉じます


$link=mysql_pconnect; ("localhost","user","password" );
mysql_pconnect("localhost","user","password");

if (empty($result_id)) =0;
if (empty($remote_id)) $remote_id=0; //ホスト B のテーブルの最大 ID が空の場合 (データがない場合)、0 を待ちます

$re=mysql_query ("select * from table limit $remote_id,$result_id"); // ホスト A のテーブル table とホスト B のテーブル table の異なるデータを取り出す
$num=mysql_numrows($re); empty($num)) {
for ($i=0;$i$test[$i]=mysql_result($re,$i,"test"); //データを配列に入れる
}
}
mysql_close($link); / /ホスト A のデータベース接続を閉じる


$link=mysql_pconnect("5.6.7.8","user","password"); "5.6.7.8","user","password");
mysql_select_db ("test");

for ($j=0;$j
mysql_query(" insert into table (test) names('$test[$j]')"); // ホスト B のデータベース接続を閉じます

?>

これが始まりです ホスト A とホスト B 間のデータ同期は完了しましたが、このプログラムを毎回手動でアクティブにする必要があります。それをスクリプトとして使用し、crontabに入れて指定した時間に自動的に実行するにはどうすればよいですか?

phpをインストールすると、通常はインストールしたphpの/binディレクトリに実行ファイルが生成されますが、下位バージョンにはそのようなファイルがないようです。 phpをアップグレードする必要があります。

#php -q test.php

phpは元々Webアプリケーションで使用されるものなのでHTMLヘッダーを送信しますが、ここではphpをシェルスクリプトとして使用したいので、「-q」はヘッダーを送信しないことを意味します

。最後に /etc/crontab 内のファイルを編集し、次の文を追加します。

0 0 * * * root /home/httpd/html/test ///home/httpd/html/test ファイルを毎晩深夜に実行します (具体的な使用法については cron 関連の情報を確認してください)

OK、これでほぼ完了ですMySQL データの同期は完了しました。まだ興味がある場合は、編集と削除を同期するためのより良い方法を考えてみてください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314513.html技術記事 MySQL データを同期する方法 ホスト A と B (Linux システム) があるとします。ホスト A の IP は 1.2.3.4 (もちろん、動的にすることもできます)、ホスト B の IP は 5.6.7.8 です。メインは2つ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。