Ini ialah arahan mysqldbcompare yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
mysqldbcompare - Bandingkan Dua Pangkalan Data dan Kenalpasti Perbezaan
SINOPSIS
mysqldbcompare [pilihan] db1 [:db2] ...
DESCRIPTION
Utiliti ini membandingkan objek dan data daripada dua pangkalan data untuk mencari perbezaan. Ia
mengenal pasti objek yang mempunyai definisi berbeza dalam dua pangkalan data dan membentangkannya
format pilihan gaya berbeza. Perbezaan dalam data ditunjukkan menggunakan yang serupa
format gaya berbeza. Baris yang ditukar atau tiada ditunjukkan dalam format standard GRID, CSV,
TAB, atau MENEGAK.
Gunakan notasi db1:db2 untuk menamakan dua pangkalan data untuk dibandingkan, atau, sebagai alternatif, hanya db1 kepada
bandingkan dua pangkalan data dengan nama yang sama. Kes terakhir ialah notasi kemudahan untuk
membandingkan pangkalan data dengan nama yang sama pada pelayan yang berbeza.
Perbandingan boleh dijalankan terhadap dua pangkalan data nama yang berbeza pada satu pelayan oleh
menyatakan hanya --pelayan1 pilihan. Pengguna juga boleh menyambung ke pelayan lain dengan
menyatakan yang --pelayan2 pilihan. Dalam kes ini, db1 diambil daripada pelayan1 dan db2 daripada
pelayan2.
Objek yang dipertimbangkan dalam pangkalan data termasuk jadual, pandangan, pencetus, prosedur,
fungsi, dan acara. Kiraan untuk setiap jenis objek boleh ditunjukkan dengan -vv pilihan.
Semakan dilakukan menggunakan satu siri langkah yang dipanggil ujian. Secara lalai, utiliti berhenti
pada ujian pertama yang gagal, tetapi anda boleh menentukan --jalankan-semua-ujian pilihan untuk menyebabkan
utiliti untuk menjalankan semua ujian tanpa mengira keadaan akhir mereka.
Nota: Menggunakan --jalankan-semua-ujian mungkin menghasilkan kegagalan lata yang dijangkakan. Sebagai contoh, jika baris
kiraan berbeza antara dua jadual yang dibandingkan, ketekalan data juga akan gagal.
Ujian termasuk yang berikut:
1. Semak definisi pangkalan data
Semakan prasyarat kewujudan pangkalan data memastikan kedua-dua pangkalan data wujud. Jika mereka lakukan
tidak, tiada pemprosesan lanjut boleh dilakukan dan --jalankan-semua-ujian pilihan diabaikan.
2. Semak kewujudan objek dalam kedua-dua pangkalan data
Ujian untuk objek dalam kedua-dua pangkalan data mengenal pasti objek yang hilang daripada satu atau
pangkalan data lain. Ujian selebihnya hanya digunakan pada objek yang muncul dalam kedua-duanya
pangkalan data. Untuk melangkau ujian ini, gunakan --langkau-objek-bandingkan pilihan. Itu boleh berguna
apabila terdapat objek hilang yang diketahui di antara pangkalan data.
3. Bandingkan definisi objek
Definisi (the CREATE penyata) dibandingkan dan perbezaan dibentangkan. Kepada
langkau ujian ini, gunakan --langkau-perbezaan pilihan. Itu boleh berguna apabila terdapat objek
perbezaan nama sahaja yang anda mahu abaikan.
4. Semak kiraan baris jadual
Semakan ini memastikan kedua-dua jadual mempunyai bilangan baris yang sama. Ini tidak memastikan
bahawa data jadual adalah konsisten. Ia hanyalah semakan sepintas lalu untuk menunjukkan kemungkinan
tiada baris dalam satu jadual atau yang lain. Semakan konsistensi data mengenal pasti
baris yang hilang. Untuk melangkau ujian ini, gunakan --skip-row-count pilihan.
5. Semak ketekalan data jadual
Semakan ini mengenal pasti kedua-dua baris yang diubah serta baris yang hilang daripada satu atau satu lagi baris
jadual dalam pangkalan data. Baris yang diubah dipaparkan sebagai laporan gaya berbeza dengan
format yang dipilih (GRID secara lalai) dan baris yang hilang turut dipaparkan menggunakan
format yang dipilih. Untuk melangkau ujian ini, gunakan --langkau-semak-data pilihan.
Anda mungkin mahu menggunakan pilihan --skip-xxx untuk menjalankan hanya satu daripada ujian. Ini mungkin
membantu apabila berusaha untuk membawa dua pangkalan data ke dalam penyegerakan, untuk mengelakkan menjalankan semua
ujian berulang kali semasa proses.
Setiap ujian dilengkapkan dengan salah satu daripada keadaan berikut:
· lulus
Ujian itu berjaya.
· GAGAL
Ujian itu gagal. Ralat dipaparkan mengikut garis keadaan ujian.
· SKIP
Ujian telah dilangkau kerana prasyarat yang hilang atau pilihan langkau.
· WARN
Ujian itu menemui ralat luar biasa tetapi tidak membawa maut.
· -
Ujian ini tidak boleh digunakan untuk objek ini.
Untuk menentukan cara memaparkan output gaya berbeza, gunakan salah satu nilai berikut dengan
--jenis berbeza pilihan:
· bersatu (lalai)
Paparkan output format bersatu.
· konteks
Paparkan output format konteks.
· berbeza
Paparkan output format gaya berbeza.
· sql
Paparkan output pernyataan transformasi SQL.
Untuk menentukan cara memaparkan output bagi baris yang diubah atau hilang, gunakan salah satu daripada yang berikut
nilai dengan --format pilihan:
· grid (lalai)
Paparkan output dalam format grid atau jadual seperti yang mysql memantau.
· csv
Paparkan output dalam format nilai dipisahkan koma.
· tab
Paparkan output dalam format yang dipisahkan tab.
· menegak
Paparkan output dalam format lajur tunggal seperti arahan \G untuk mysql
memantau.
. --perubahan-untuk pilihan mengawal arah perbezaan (dengan menyatakan
objek yang akan diubah) sama ada dalam laporan perbezaan (lalai) atau transformasi
laporan (ditetapkan dengan --difftype=sql pilihan). Pertimbangkan arahan berikut:
mysqldbcompare --server1=root@host1 --server2=root@host2 --difftype=sql \
db1:dbx
Pangkalan data paling kiri (db1) wujud pada pelayan yang ditetapkan oleh --pelayan1 pilihan
(tuan rumah1). Pangkalan data paling kanan (dbx) wujud pada pelayan yang ditetapkan oleh --pelayan2
pilihan (host2).
· --changes-for=server1: Menghasilkan output yang menunjukkan cara membuat definisi bagi
objek pada pelayan1 seperti takrifan objek yang sepadan pada pelayan2.
· --changes-for=server2: Menghasilkan output yang menunjukkan cara membuat definisi bagi
objek pada pelayan2 seperti takrifan objek yang sepadan pada pelayan1.
Arah lalai ialah pelayan1.
Anda mesti menyediakan parameter sambungan (pengguna, hos, kata laluan, dan sebagainya) untuk akaun
yang mempunyai keistimewaan yang sesuai untuk mengakses semua objek dalam operasi.
Jika utiliti itu hendak dijalankan pada pelayan yang mempunyai pengelogan binari didayakan, dan anda tidak melakukannya
mahu langkah perbandingan dilog, gunakan --disable-binary-logging pilihan.
PILIHAN
mysqldbcompare menerima pilihan baris arahan berikut:
· --semua, -a
Sertakan semua pangkalan data. Ditambah dalam keluaran-1.3.5.
· --membantu
Paparkan mesej bantuan dan keluar.
· --perubahan-untuk=
Tentukan pelayan untuk menunjukkan transformasi untuk dipadankan dengan pelayan lain. Contohnya, kepada
lihat transformasi untuk mengubah definisi objek pada pelayan1 untuk memadankan
takrifan yang sepadan pada pelayan2, gunakan --changes-for=server1. Nilai yang dibenarkan ialah
server1 and server2. Lalai adalah server1.
· --difftype= , -d
Tentukan format paparan perbezaan. Nilai format yang dibenarkan ialah bersatu, konteks,
berbeza, dan sql. Lalai adalah bersatu.
· --disable-binary-logging
Jika pengelogan binari didayakan, lumpuhkannya semasa operasi untuk mengelakkan perbandingan
operasi daripada ditulis kepada log binari. Nota: Melumpuhkan pengelogan binari
memerlukan SUPER keistimewaan.
· --kecualikan= , -x
Kecualikan satu atau lebih pangkalan data daripada operasi menggunakan sama ada nama tertentu seperti
db1 atau corak carian. Gunakan pilihan ini beberapa kali untuk menentukan berbilang
pengecualian. Secara lalai, corak menggunakan corak pangkalan data seperti SEPERTI. Dengan --regexp
pilihan, corak menggunakan ungkapan biasa untuk memadankan nama. Ditambah dalam keluaran-1.3.5.
· --format= , -f
Tentukan format paparan untuk baris yang diubah atau hilang. Nilai format yang dibenarkan ialah
grid, csv, tab, dan menegak. Lalai adalah grid.
· --senyap, -q
Jangan cetak apa-apa. Kembalikan hanya kod keluar kejayaan atau kegagalan.
· --regexp, --basic-regexp, -G
Lakukan padanan corak menggunakan REGEXP pengendali. Lalai adalah untuk menggunakan SEPERTI khususnya
sepadan. Ditambah dalam keluaran-1.3.5.
· --jalankan-semua-ujian, -t
Jangan berhenti pada perbezaan pertama yang ditemui. Memproses semua objek. Pintasan ditukar daripada
-a hingga -t dalam keluaran-1.3.5.
· --server1=
Maklumat sambungan untuk pelayan pertama dalam format:
<pengguna>[:passwd>]@tuan rumah>[:pelabuhan>][:soket>] ataulaluan masuk>[:pelabuhan>][:soket>].
· --server2=
Maklumat sambungan untuk pelayan kedua dalam format:
<pengguna>[:passwd>]@tuan rumah>[:pelabuhan>][:soket>] ataulaluan masuk>[::pelabuhan>][::soket>].
· --tunjuk-terbalik
Menghasilkan laporan transformasi yang mengandungi pernyataan SQL untuk menyesuaikan objek
definisi yang dinyatakan secara terbalik. Contohnya, jika --changes-for ditetapkan kepada pelayan1,
juga menjana transformasi untuk pelayan2. Nota: Perubahan terbalik diberi anotasi
dan ditandakan sebagai ulasan.
· --langkau-semakan-data
Langkau semakan konsistensi data.
· --langkau-perbezaan
Langkau semakan perbezaan definisi objek.
· --langkau-objek-bandingkan
Langkau pemeriksaan perbandingan objek.
· --skip-row-count
Langkau semakan kiraan baris.
· --span-key-size=
Tukar saiz kunci yang digunakan untuk membandingkan kandungan jadual. Nilai yang lebih tinggi boleh membantu untuk
dapatkan hasil yang lebih tepat membandingkan pangkalan data yang besar, tetapi mungkin memperlahankan algoritma.
Nilai lalai ialah 8.
· --verbose, -v
Nyatakan jumlah maklumat yang hendak dipaparkan. Gunakan pilihan ini beberapa kali untuk meningkatkan
jumlah maklumat. Sebagai contoh, -v = verbose, -vv = lebih bertele-tele, -vvv =
nyahpepijat.
· --versi
Paparkan maklumat versi dan keluar.
· --lebar=
Tukar lebar paparan laporan ujian. Lalai ialah 75 aksara.
NOTA
Pengguna log masuk mesti mempunyai kebenaran yang sesuai untuk membaca semua pangkalan data dan jadual
disenaraikan.
Bagi --jenis berbeza pilihan, nilai yang dibenarkan tidak sensitif huruf besar. Sebagai tambahan,
nilai boleh ditentukan sebagai mana-mana awalan yang tidak jelas bagi nilai yang sah. Sebagai contoh,
--difftype=d menyatakan jenis yang berbeza. Ralat berlaku jika awalan sepadan dengan lebih daripada satu
nilai yang sah.
Laluan ke alat klien MySQL harus dimasukkan dalam pembolehubah persekitaran PATH dalam
untuk menggunakan mekanisme pengesahan dengan laluan log masuk. Ini akan membolehkan utiliti untuk
gunakan alat my_print_defaults yang diperlukan untuk membaca nilai laluan log masuk daripada
fail konfigurasi log masuk (.mylogin.cnf).
Jika mana-mana pengecam pangkalan data yang dinyatakan sebagai argumen mengandungi aksara khas atau ialah a
perkataan yang dikhaskan, maka ia mesti dipetik dengan tepat dengan tanda belakang (`). Sebaliknya, nama
dipetik dengan tanda belakang juga mesti dipetik dengan petikan tunggal atau berganda bergantung pada
sistem pengendalian, iaitu (") dalam Windows atau (') dalam sistem bukan Windows, supaya
utiliti untuk membaca pengecam yang dipetik backtick sebagai satu hujah. Contohnya, kepada
bandingkan pangkalan data dengan nama nama pelik`db bersama other:weird`db.name, pasangan pangkalan data
mesti ditentukan menggunakan sintaks berikut (dalam bukan Windows):
'`pelik``db.name`:`lain:pelik``db.name`'.
CONTOH
Gunakan arahan berikut untuk membandingkan pangkalan data emp1 dan emp2 pada pelayan tempatan, dan
jalankan semua ujian walaupun ujian terdahulu gagal:
$ mysqldbcompare --server1=root@localhost emp1:emp2 --run-all-tests
# pelayan1 pada localhost: ... disambungkan.
# Menyemak pangkalan data emp1 pada pelayan1 dan emp2 pada pelayan2
AMARAN: Objek dalam server2:emp2 tetapi bukan dalam server1:emp1:
PENCETUS: trg
PROSEDUR: p1
JADUAL: t1
LIHAT: v1
Defn Data Baris
Taip Nama Objek Semakan Kiraan Beza
-------------------------------------------------- -------------------------
F1 lulus FXNUMX - -
JADUAL jabatan lulus lulus GAGAL
Perbezaan data ditemui antara baris:
--- emp1.jabatan
+++ emp2.jabatan
@@ -1,4 +1,4 @@
************************* 1. baris ********************** ***
no_jabatan: d002
- nama_jabatan: tidak tahu
+ nama_jabatan: Kewangan
1 baris.
Baris dalam emp1.jabatan bukan dalam emp2.jabatan
************************* 1. baris ********************** ***
no_jabatan: d008
dept_name: Penyelidikan
1 baris.
Baris dalam emp2.jabatan bukan dalam emp1.jabatan
************************* 1. baris ********************** ***
no_jabatan: d100
dept_name: bodoh
1 baris.
TABLE dept_manager pas pas pass
Semakan konsistensi pangkalan data gagal.
# ...selesai
Diberi: dua pangkalan data dengan susun atur jadual yang sama. Data untuk setiap jadual mengandungi:
mysql> pilih * daripada db1.t1;
+---+-----------------+
| a | b |
+---+-----------------+
| 1 | Ujian 789 |
| 2 | Ujian 456 |
| 3 | Ujian 123 |
| 4 | Baris baharu - db1 |
+---+-----------------+
4 baris dalam set (0.00 saat)
mysql> pilih * daripada db2.t1;
+---+-----------------+
| a | b |
+---+-----------------+
| 1 | Ujian 123 |
| 2 | Ujian 456 |
| 3 | Ujian 789 |
| 5 | Baris baharu - db2 |
+---+-----------------+
4 baris dalam set (0.00 saat)
Untuk menjana pernyataan SQL bagi transformasi data untuk menjadikan db1.t1 sama dengan db2.t1,
menggunakan --changes-for=server1 pilihan. Kita juga mesti memasukkan -a pilihan untuk memastikan bahawa
ujian ketekalan data dijalankan. Perintah berikut menggambarkan pilihan yang digunakan dan
petikan daripada keputusan yang dihasilkan:
$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server1 -a \
--difftype=sql
[...]
# Defn Data Baris
# Jenis Kiraan Beza Nama Objek
Semak #
-------------------------------------------------- -----------------------
# JADUAL t1 lulus lulus GAGAL
# # Transformasi data untuk arah = pelayan1:
# Perbezaan data ditemui antara baris: KEMASKINI db1.t1 SET b = 'Ujian 123'
DIMANA a = '1'; KEMASKINI db1.t1 SET b = 'Ujian 789' DIMANA a = '3'; PADAM
DARI db1.t1 DIMANA a = '4'; MASUKKAN KE DALAM db1.t1 (a, b) NILAI('5', 'Baharu
baris - db2');
# Semakan konsistensi pangkalan data gagal. # # ...selesai
Begitu juga, apabila arahan yang sama dijalankan dengan --changes-for=server2 and --difftype=sql, yang
laporan berikut dihasilkan:
$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server2 -a \
--difftype=sql
[...]
# Defn Data Baris
# Jenis Kiraan Beza Nama Objek
Semak #
-------------------------------------------------- -----------------------
# JADUAL t1 lulus lulus GAGAL
# # Transformasi data untuk arah = pelayan2:
# Perbezaan data ditemui antara baris: KEMASKINI db2.t1 SET b = 'Ujian 789'
DIMANA a = '1'; KEMASKINI db2.t1 SET b = 'Ujian 123' DIMANA a = '3'; PADAM
DARI db2.t1 DIMANA a = '5'; MASUKKAN KE DALAM db2.t1 (a, b) NILAI('4', 'Baharu
baris - db1');
Dengan --difftype=sql Set pilihan penjanaan SQL, --tunjuk-terbalik menunjukkan objek
transformasi dalam kedua-dua arah. Berikut adalah petikan keputusan:
$ mysqldbcompare --server1=root:root@localhost \
--server2=root:root@localhost db1:db2 --changes-for=server1 \
--show-reverse -a --difftype=sql
[...]
# Defn Data Baris
# Jenis Kiraan Beza Nama Objek
Semak #
-------------------------------------------------- -----------------------
# JADUAL t1 lulus lulus GAGAL
# # Transformasi data untuk arah = pelayan1:
# Perbezaan data ditemui antara baris: KEMASKINI db1.t1 SET b = 'Ujian 123'
DIMANA a = '1'; KEMASKINI db1.t1 SET b = 'Ujian 789' DIMANA a = '3'; PADAM
DARI db1.t1 DIMANA a = '4'; MASUKKAN KE DALAM db1.t1 (a, b) NILAI('5', 'Baharu
baris - db2');
# Transformasi data untuk arah = pelayan2:
# Perbezaan data ditemui antara baris: KEMASKINI db2.t1 SET b = 'Ujian 789'
DIMANA a = '1'; KEMASKINI db2.t1 SET b = 'Ujian 123' DIMANA a = '3'; PADAM
DARI db2.t1 DIMANA a = '5'; MASUKKAN KE DALAM db2.t1 (a, b) NILAI('4', 'Baharu
baris - db1');
# Semakan konsistensi pangkalan data gagal. # # ...selesai
HAKCIPTA
Gunakan mysqldbcompare dalam talian menggunakan perkhidmatan onworks.net