怎么使 Mysql 數(shù)據(jù)同步_MySQL
Jun 01, 2016 pm 02:05 PM
先假設(shè)有主機(jī) A 和 B ( Linux 系統(tǒng)),主機(jī) A 的 IP 分別是 1.2.3.4 (當(dāng)然,也可以是動(dòng)態(tài)的),主機(jī) B 的 IP 是 5.6.7.8 。兩個(gè)主機(jī)都裝上了 PHP+Mysql ,現(xiàn)在操作的是主機(jī) A 上的資料,如果另外一個(gè)主機(jī) B 想跟 A 的資料進(jìn)行同步,應(yīng)該怎么做呢?
OK,我們現(xiàn)在就動(dòng)手。
首先,如果要想兩個(gè)主機(jī)間的資料同步,一種方法就是主機(jī) A 往主機(jī) B 送資料,另外一種主法就是主機(jī) B 到主機(jī) A 上拿資料,因?yàn)?A 的 IP 是動(dòng)態(tài)的(假設(shè)),所以我們就得從主機(jī) A 往主機(jī) B 送資料。
在主機(jī) B 上創(chuàng)建一個(gè) Mysql 賬戶。
# GRANT ALL ON test.* TO user@% IDENTIFIED BY "password"; //創(chuàng)建用戶 user,可以從任何機(jī)器訪問到主機(jī) B 上的 test 數(shù)據(jù)庫。
如果這里顯示錯(cuò)誤,先把 % 改為一個(gè) IP ,然后再利用 phpMyAdmin 把 IP 改為 % ,測(cè)試無誤后就可以寫 php 程序。
$link=mysql_pconnect("localhost","user","password");
mysql_pconnect("localhost","user","password"); //連接本機(jī)(主機(jī)A)的數(shù)據(jù)庫
mysql_select_db("test"); //選擇數(shù)據(jù)庫test
$re=mysql_query("select * from table order by id desc");
$num=mysql_numrows($re);
if (!empty($num)) {
$id=mysql_result($re,0,"id"); //獲得本機(jī)table表的最大ID
}
mysql_close($link); //關(guān)閉與本機(jī)數(shù)據(jù)庫的連接
$link=mysql_pconnect("5.6.7.8","test","test");
mysql_pconnect("5.6.7.8","test","test"); //連接主機(jī)B的數(shù)據(jù)庫
mysql_select_db("test"); //選擇數(shù)據(jù)庫test,此數(shù)據(jù)庫應(yīng)該與主機(jī)A上test數(shù)據(jù)庫的結(jié)構(gòu)一樣。
$re=mysql_query("select * from table order by id desc");
$num=mysql_numrows($re);
if (!empty($num)) {
$remote_id=mysql_result($re,0,"id"); //獲得主機(jī)Btable表的最大ID
}
if ($id>$remote_id) {
$result_id=$id-$remote_id; //如果主機(jī)A中table的最大ID大于主機(jī)B中table表的最大ID,說明兩個(gè)
} 的資料不同
mysql_close($link); //關(guān)閉主機(jī)B的數(shù)據(jù)庫連接
$link=mysql_pconnect("localhost","user","password");
mysql_pconnect("localhost","user","password");
mysql_select_db("test");
if (empty($result_id)) $result_id=0;
if (empty($remote_id)) $remote_id=0; //如果主機(jī)B中的table的最大ID為空(里面沒有資料),那么就等0
$re=mysql_query("select * from table limit $remote_id,$result_id"); //取出主機(jī)A中table表與主機(jī)B中table表里不同的資料
$num=mysql_numrows($re);
if (!empty($num)) {
for ($i=0;$i$test[$i]=mysql_result($re,$i,"test"); //把不同的資料放入一個(gè)數(shù)組里
}
}
mysql_close($link); //關(guān)閉主機(jī)A的數(shù)據(jù)庫連接
$link=mysql_pconnect("5.6.7.8","user","password");
mysql_pconnect("5.6.7.8","user","pasword");
mysql_select_db("test");
for ($j=0;$j<$i;$j++) { //這里的i等于在比較主機(jī)A與主機(jī)B上table表不同資料的數(shù)量
mysql_query("insert into table (test) values('$test[$j]')");
}
mysql_close($link); //關(guān)閉主機(jī)B的數(shù)據(jù)庫連接
?>
這時(shí)就初步實(shí)現(xiàn)了 A 主機(jī)和 B 主機(jī)數(shù)據(jù)的同步,但現(xiàn)在還需要人手動(dòng)每次去激活這個(gè)程序,有沒有辦法把它作為一個(gè)腳本一樣的,放在 crontab 里面指定時(shí)間自動(dòng)執(zhí)行呢?
在安裝 php 時(shí)會(huì)自動(dòng)生一個(gè)叫 php 的可執(zhí)行文件,一般在/你安裝的 php 目錄 /bin 下面,不過較底的版本好像沒有,如果沒有這個(gè)文件,你就得升級(jí)你的 php 。
#php -q test.php
php 原本是應(yīng)用在網(wǎng)頁應(yīng)用的﹐因此它會(huì)送出 HTML 的 Header﹐但是在此我們是要將 php 用作 Shell Script﹐"-q" 就是表示不要送出 Header 的意思.
最后編輯 /etc/crontab 里的文件,加上下面這一句。
0 0 * * * root /home/httpd/html/test //每天晚上零點(diǎn)執(zhí)/home/httpd/html/test文件(具體使用方法請(qǐng)查看cron的相關(guān)資料)
OK,到這里差不多就已完成 Mysql 數(shù)據(jù)的同步了,如果各位還有興趣的話,可以想一個(gè)連編輯、刪除都能同步的更好的辦法。

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Huawei sedang melancarkan perisian versi 5.0.0.100(C00M01) untuk Watch GT 5 dan Watch GT 5 Prosmartwatches di seluruh dunia. Kedua-dua jam tangan pintar ini baru-baru ini dilancarkan di Eropah, dengan model standard tiba sebagai model termurah syarikat. Harmoni ini

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Oracle bukan sahaja syarikat pangkalan data, tetapi juga pemimpin dalam pengkomputeran awan dan sistem ERP. 1. Oracle menyediakan penyelesaian yang komprehensif dari pangkalan data ke perkhidmatan awan dan sistem ERP. 2. Oraclecloud mencabar AWS dan Azure, menyediakan perkhidmatan IaaS, PaaS dan SaaS. 3. Sistem ERP Oracle seperti E-BusinessSuite dan FusionApplications membantu perusahaan mengoptimumkan operasi.

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

MySQL sesuai untuk aplikasi web dan sistem pengurusan kandungan dan popular untuk sumber terbuka, prestasi tinggi dan kemudahan penggunaan. 1) Berbanding dengan PostgreSQL, MySQL melakukan lebih baik dalam pertanyaan mudah dan operasi membaca serentak yang tinggi. 2) Berbanding dengan Oracle, MySQL lebih popular di kalangan perusahaan kecil dan sederhana kerana sumber terbuka dan kos rendah. 3) Berbanding dengan Microsoft SQL Server, MySQL lebih sesuai untuk aplikasi silang platform. 4) Tidak seperti MongoDB, MySQL lebih sesuai untuk data berstruktur dan pemprosesan transaksi.

MySQL sesuai untuk pemula kerana mudah digunakan dan berkuasa. 1.MYSQL adalah pangkalan data relasi, dan menggunakan SQL untuk operasi CRUD. 2. Ia mudah dipasang dan memerlukan kata laluan pengguna root untuk dikonfigurasi. 3. Gunakan Masukkan, Kemas kini, Padam, dan Pilih untuk Melaksanakan Operasi Data. 4. Orderby, di mana dan menyertai boleh digunakan untuk pertanyaan yang kompleks. 5. Debugging memerlukan memeriksa sintaks dan gunakan Jelaskan untuk menganalisis pertanyaan. 6. Cadangan pengoptimuman termasuk menggunakan indeks, memilih jenis data yang betul dan tabiat pengaturcaraan yang baik.

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

MySQL dengan cekap menguruskan data berstruktur melalui struktur jadual dan pertanyaan SQL, dan melaksanakan hubungan antara meja melalui kunci asing. 1. Tentukan format data dan taip apabila membuat jadual. 2. Gunakan kunci asing untuk mewujudkan hubungan antara jadual. 3. Meningkatkan prestasi melalui pengindeksan dan pengoptimuman pertanyaan. 4. Secara kerap sandaran dan memantau pangkalan data untuk memastikan pengoptimuman keselamatan data dan prestasi.
