InggrisPerancisSpanyol

favorit OnWorks

pt-table-checksump - Online di Cloud

Jalankan pt-table-checksump di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah pt-table-checksump yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, Windows online emulator atau MAC OS online emulator

PROGRAM:

NAMA


pt-table-checksum - Verifikasi integritas replikasi MySQL.

RINGKASAN


Penggunaan: pt-table-checksum [OPSI] [DSN]

pt-table-checksum melakukan pemeriksaan konsistensi replikasi online dengan menjalankan checksum
kueri pada master, yang menghasilkan hasil berbeda pada replika yang tidak konsisten
dengan tuannya. DSN opsional menentukan host master. "STATUS KELUAR" alat ini adalah
bukan nol jika ada perbedaan yang ditemukan, atau jika ada peringatan atau kesalahan yang terjadi.

Perintah berikut akan terhubung ke master replikasi di localhost, checksum setiap
tabel, dan laporkan hasilnya pada setiap replika yang terdeteksi:

pt-tabel-checksum

Alat ini difokuskan untuk menemukan perbedaan data secara efisien. Jika ada data yang berbeda,
anda dapat menyelesaikan masalah dengan pt-table-sync.

RISIKO


Percona Toolkit sudah matang, terbukti di dunia nyata, dan teruji dengan baik, tetapi semua basis data
alat dapat menimbulkan risiko bagi sistem dan server database. Sebelum menggunakan alat ini,
mohon untuk:

· Baca dokumentasi alat ini

· Tinjau "BUGS" alat yang dikenal

· Uji alat di server non-produksi

· Cadangkan server produksi Anda dan verifikasi cadangannya

Lihat juga "BATASAN".

DESKRIPSI


pt-table-checksum dirancang untuk melakukan hal yang benar secara default di hampir setiap kasus. Kapan
ragu, gunakan "--explain" untuk melihat bagaimana alat akan memeriksa tabel. Berikut ini adalah
gambaran tingkat tinggi tentang bagaimana alat berfungsi.

Berbeda dengan versi pt-table-checksum yang lebih lama, alat ini berfokus pada satu
tujuan, dan tidak memiliki banyak kerumitan atau mendukung banyak checksumming yang berbeda
teknik. Itu mengeksekusi kueri checksum hanya pada satu server, dan ini mengalir melalui
replikasi untuk dijalankan kembali pada replika. Jika Anda membutuhkan perilaku yang lebih tua, Anda dapat menggunakan
Percona Toolkit versi 1.0.

pt-table-checksum terhubung ke server yang Anda tentukan, dan menemukan database dan tabel yang
cocok dengan filter yang Anda tentukan (jika ada). Ini berfungsi satu meja pada satu waktu, jadi tidak
mengumpulkan memori dalam jumlah besar atau melakukan banyak pekerjaan sebelum memulai checksum. Ini
membuatnya dapat digunakan di server yang sangat besar. Kami telah menggunakannya di server dengan ratusan
ribuan database dan tabel, dan triliunan baris. Tidak peduli seberapa besar servernya
adalah, pt-table-checksum bekerja sama baiknya.

Salah satu alasan ia dapat bekerja pada tabel yang sangat besar adalah karena ia membagi setiap tabel menjadi beberapa bagian
baris, dan checksum setiap potongan dengan satu REPLACE..SELECT query. Ini bervariasi potongannya
size untuk membuat kueri checksum berjalan dalam jumlah waktu yang diinginkan. Tujuan dari chunking
tabel, alih-alih melakukan setiap tabel dengan satu kueri besar, adalah untuk memastikan bahwa
checksum tidak mengganggu dan tidak menyebabkan terlalu banyak jeda atau beban replikasi di server.
Itu sebabnya waktu target untuk setiap potongan adalah 0.5 detik secara default.

Alat ini melacak seberapa cepat server dapat mengeksekusi kueri, dan menyesuaikan
potongan saat mempelajari lebih lanjut tentang kinerja server. Ini menggunakan eksponensial
pembobotan rata-rata tertimbang untuk menjaga ukuran bongkahan tetap stabil, namun tetap responsif jika
kinerja server berubah selama checksumming karena alasan apa pun. Ini berarti bahwa alat
akan dengan cepat mencekik dirinya sendiri jika server Anda menjadi penuh beban selama lonjakan lalu lintas
atau tugas latar belakang, misalnya.

Chunking dilakukan dengan teknik yang biasa kami sebut "menggigit" di alat lain di
Perangkat Percona. Ini adalah teknik yang sama yang digunakan untuk pt-archiver, misalnya. Warisan
algoritma chunking yang digunakan dalam versi pt-table-checksum yang lebih lama dihapus, karena mereka
tidak menghasilkan potongan berukuran yang dapat diprediksi, dan tidak berfungsi dengan baik di banyak tabel. Semua itu
diperlukan untuk membagi tabel menjadi potongan-potongan adalah semacam indeks (sebaiknya yang utama
kunci atau indeks unik). Jika tidak ada indeks, dan tabel berisi ukuran kecil yang sesuai
jumlah baris, alat akan memeriksa tabel dalam satu potongan.

pt-table-checksum memiliki banyak perlindungan lain untuk memastikan bahwa itu tidak mengganggu apa pun
operasi server, termasuk replika. Untuk mencapai ini, pt-table-checksum mendeteksi
replika dan menghubungkannya secara otomatis. (Jika ini gagal, Anda dapat memberikan petunjuk dengan
opsi "--rekursi-metode".)

Alat ini memantau replika secara terus-menerus. Jika ada replika yang tertinggal terlalu jauh
replikasi, pt-table-checksum berhenti sejenak untuk memungkinkannya mengejar. Jika ada replika yang memiliki
error, atau replikasi berhenti, pt-table-checksum berhenti dan menunggu. Selain itu, pt-tabel-
checksum mencari penyebab umum masalah, seperti filter replikasi, dan menolak untuk
beroperasi kecuali Anda memaksanya. Filter replikasi berbahaya, karena kueri
yang dieksekusi pt-table-checksum berpotensi bertentangan dengan mereka dan menyebabkan replikasi
gagal.

pt-table-checksum memverifikasi bahwa potongan tidak terlalu besar untuk checksum dengan aman. Ini berfungsi
kueri EXPLAIN pada setiap potongan, dan melewatkan potongan yang mungkin lebih besar dari yang diinginkan
jumlah baris. Anda dapat mengonfigurasi sensitivitas perlindungan ini dengan
opsi "--potongan-ukuran-batas". Jika sebuah tabel akan diperiksa dalam satu potongan karena itu
memiliki sejumlah kecil baris, maka pt-table-checksum juga memverifikasi bahwa tabel
tidak terlalu besar pada replika. Ini menghindari skenario berikut: tabel kosong di
master tetapi sangat besar pada replika, dan di-checksum dalam satu kueri besar, yang
menyebabkan penundaan yang sangat lama dalam replikasi.

Ada beberapa pengamanan lainnya. Misalnya, pt-table-checksum menyetel level sesinya
innodb_lock_wait_timeout menjadi 1 detik, sehingga jika ada lock wait maka akan
korban alih-alih menyebabkan kueri lain kehabisan waktu. Pengaman lain memeriksa muatan
server database, dan berhenti jika beban terlalu tinggi. Tidak ada satu jawaban yang benar
untuk cara melakukannya, tetapi secara default pt-table-checksum akan berhenti jika ada lebih dari 25
secara bersamaan mengeksekusi query. Anda mungkin harus menetapkan nilai waras untuk server Anda dengan
opsi "--max-load".

Checksumming biasanya merupakan tugas berprioritas rendah yang harus menghasilkan pekerjaan lain di server.
Namun, alat yang harus di-restart terus-menerus sulit digunakan. Jadi, pt-tabel-
checksum sangat tahan terhadap kesalahan. Misalnya, jika administrator basis data perlu
bunuh kueri pt-table-checksum untuk alasan apa pun, itu bukan kesalahan fatal. Pengguna sering
jalankan pt-kill untuk mematikan kueri checksum yang sudah berjalan lama. Alat ini akan mencoba lagi kueri yang dimatikan
sekali, dan jika gagal lagi, itu akan pindah ke bagian berikutnya dari tabel itu. Sama
perilaku berlaku jika ada batas waktu tunggu kunci. Alat akan mencetak peringatan jika demikian
kesalahan terjadi, tetapi hanya sekali per tabel. Jika koneksi ke server mana pun gagal, pt-
table-checksum akan mencoba menyambung kembali dan terus bekerja.

Jika pt-table-checksum menemui kondisi yang menyebabkannya berhenti total, itu mudah
untuk melanjutkannya dengan opsi "--resume". Ini akan dimulai dari potongan terakhir dari yang terakhir
tabel yang diprosesnya. Anda juga dapat dengan aman menghentikan alat dengan CTRL-C. Ini akan selesai
potongan yang sedang diproses, lalu keluar. Anda dapat melanjutkannya seperti biasa
setelah itu.

Setelah pt-table-checksum selesai menjumlahkan semua potongan dalam tabel, itu berhenti dan
menunggu semua replika yang terdeteksi selesai mengeksekusi kueri checksum. Sekali itu
selesai, ia memeriksa semua replika untuk melihat apakah mereka memiliki data yang sama dengan master,
dan kemudian mencetak garis output dengan hasilnya. Anda dapat melihat contoh outputnya
nanti dalam dokumentasi ini.

Alat ini mencetak indikator kemajuan selama operasi yang memakan waktu. Ini mencetak
indikator kemajuan karena setiap tabel diperiksa. Kemajuan dihitung dengan
perkiraan jumlah baris dalam tabel. Itu juga akan mencetak laporan kemajuan saat dijeda
menunggu replikasi untuk mengejar, dan ketika menunggu untuk memeriksa replika
perbedaan dari tuannya. Anda dapat membuat output lebih sedikit verbose dengan "--quiet"
.

Jika mau, Anda dapat menanyakan tabel checksum secara manual untuk mendapatkan laporan tabel mana
dan potongan memiliki perbedaan dari master. Kueri berikut akan melaporkan setiap
database dan tabel dengan perbedaan, bersama dengan ringkasan jumlah potongan dan baris
mungkin terpengaruh:

PILIH db, tbl, SUM(this_cnt) AS total_rows, COUNT(*) SEBAGAI potongan
DARI percona.checksums
DI MANA (
master_cnt <> this_cnt
ATAU master_crc <> this_crc
OR TIDAK BOLEH(master_crc) <> ISNULL(ini_crc))
KELOMPOK BERDASARKAN db, tbl;

Tabel yang dirujuk dalam kueri itu adalah tabel checksum, tempat checksum disimpan.
Setiap baris dalam tabel berisi checksum dari satu potongan data dari beberapa tabel di
Server.

Versi 2.0 dari pt-table-checksum tidak kompatibel dengan versi pt-table-sync
1.0. Dalam beberapa kasus ini bukan masalah serius. Menambahkan kolom "batas" ke
tabel, dan kemudian memperbaruinya dengan klausa WHERE yang dibuat secara manual, mungkin cukup untuk membiarkan pt-
table-sync versi 1.0 beroperasi dengan pt-table-checksum versi 2.0. Dengan asumsi dan
kunci utama integer bernama 'id', Anda dapat mencoba sesuatu seperti berikut:

ALTER TABLE checksum TAMBAHKAN batas Varchar(500);
PERBARUI checksum
SET batas = COALESCE(CONCAT('id BETWEEN ', lower_boundary,
' DAN ', batas_atas), '1=1');

PEMBATASAN


Replika menggunakan replikasi berbasis baris
pt-table-checksum membutuhkan replikasi berbasis pernyataan, dan itu menetapkan
"binlog_format=STATEMENT" pada master, tetapi karena keterbatasan MySQL, replika tidak
menghormati perubahan ini. Oleh karena itu, checksum tidak akan mereplikasi melewati replika apa pun menggunakan
replikasi berbasis baris yang merupakan master untuk replika lebih lanjut.

Alat ini secara otomatis memeriksa "binlog_format" di semua server. Melihat
"--[no]check-binlog-format" .

(Bug 899415 )

Perbedaan skema dan tabel
Alat ini menganggap bahwa skema dan tabel identik pada master dan semua
replika. Replikasi akan rusak jika, misalnya, replika tidak memiliki skema
yang ada pada master (dan skema itu di-checksum), atau jika struktur a
tabel pada replika berbeda dari pada master.

percona XtraDB Kelompok


pt-table-checksum bekerja dengan Percona XtraDB Cluster (PXC) 5.5.28-23.7 dan yang lebih baru. Itu
jumlah kemungkinan penyiapan Percona XtraDB Cluster besar karena dapat digunakan dengan
replikasi reguler juga. Oleh karena itu, hanya pengaturan yang tercantum di bawah yang didukung dan
diketahui bekerja. Pengaturan lain, seperti cluster ke cluster, tidak mendukung dan mungkin tidak
kerja.

Kecuali jika disebutkan, semua penyiapan yang didukung berikut mengharuskan Anda menggunakan "dsn"
metode untuk "--recursion-method" untuk menentukan node cluster. Juga, pemeriksaan lag (lihat
"REPLICA CHECKS") tidak dilakukan untuk node cluster.

kluster tunggal
Penyiapan PXC paling sederhana adalah kluster tunggal: semua server adalah node kluster, dan di sana
bukan replika biasa. Jika semua node ditentukan dalam tabel DSN (lihat
"--recursion-method"), maka Anda dapat menjalankan alat ini di node mana pun dan diff apa pun di mana pun
node lain akan terdeteksi.

Semua node harus berada dalam cluster yang sama (memiliki nilai "wsrep_cluster_name" yang sama), selain itu
alat keluar dengan kesalahan. Meskipun dimungkinkan untuk memiliki cluster yang berbeda dengan
nama yang sama, ini tidak boleh dilakukan dan tidak didukung. Ini berlaku untuk semua
pengaturan yang didukung.

Cluster tunggal dengan replika
Node cluster juga bisa menjadi master reguler dan mereplikasi ke replika biasa. Namun,
alat ini hanya dapat mendeteksi perbedaan pada replika jika dijalankan pada "node master" replika.
Misalnya, jika pengaturan cluster adalah,

node1 <-> node2 <-> node3
| |
| +-> replika3
+-> replika2

Anda dapat mendeteksi perbedaan pada replica3 dengan menjalankan alat pada node3, tetapi untuk mendeteksi perbedaan pada
replica2 Anda harus menjalankan alat lagi di node2. Jika Anda menjalankan alat di node1, itu akan
tidak mendeteksi perbedaan pada kedua replika.

Saat ini, alat tidak mendeteksi pengaturan ini atau memperingatkan tentang replika yang tidak dapat
dicentang (mis. replica2 saat dijalankan di node3).

Replika dalam pengaturan ini masih tunduk pada "--[no]check-binlog-format".

Master ke kluster tunggal
Adalah mungkin bagi master biasa untuk mereplikasi ke sebuah cluster, seolah-olah cluster itu
satu budak logis, seperti:

master -> node1 <-> node2 <-> node3

Alat ini mendukung pengaturan ini tetapi hanya jika dijalankan pada master dan jika semua node di
cluster konsisten dengan "replika langsung" (node1 dalam contoh ini) dari
menguasai. Misalnya, jika semua node memiliki nilai "foo" untuk baris 1 tetapi master memiliki nilai
"bar" untuk baris yang sama, perbedaan ini akan terdeteksi. Atau jika hanya node1 yang memiliki perbedaan ini,
itu juga akan terdeteksi. Tetapi jika hanya node2 atau node3 yang memiliki perbedaan ini, itu tidak akan
terdeteksi. Oleh karena itu, setup ini digunakan untuk memeriksa apakah master dan cluster sebagai
keseluruhan konsisten.

Dalam pengaturan ini, alat ini dapat secara otomatis mendeteksi "replika langsung" (node1) saat dijalankan
pada master, jadi Anda tidak harus menggunakan metode "dsn" untuk "--recursion-method"
karena node1 akan mewakili seluruh cluster, itulah sebabnya semua node lain harus
konsisten dengan itu.

Alat ini memperingatkan ketika mendeteksi pengaturan ini untuk mengingatkan Anda bahwa itu hanya berfungsi saat digunakan
seperti yang dijelaskan di atas. Peringatan ini tidak mempengaruhi status keluar alat; mereka adalah
hanya pengingat untuk membantu menghindari hasil positif palsu.

KELUARAN


Alat ini mencetak hasil tabel, satu baris per tabel:

TS ERRORS DIFFS BARIS CHUNKS DILEWATI TABEL WAKTU
10-20T08:36:50 0 0 200 1 0 0.005 db1.tbl1
10-20T08:36:50 0 0 603 7 0 0.035 db1.tbl2
10-20T08:36:50 0 0 16 1 0 0.003 db2.tbl3
10-20T08:36:50 0 0 600 6 0 0.024 db2.tbl4

Kesalahan, peringatan, dan laporan kemajuan dicetak ke kesalahan standar. Lihat juga "--tenang".

Hasil setiap tabel dicetak ketika alat selesai memeriksa jumlah tabel. Itu
kolom adalah sebagai berikut:

TS Stempel waktu (tanpa tahun) saat alat selesai menjumlahkan tabel.

GALAT
Jumlah kesalahan dan peringatan yang terjadi saat checksumming tabel. kesalahan
dan peringatan dicetak ke kesalahan standar saat tabel sedang berlangsung.

DIFF
Jumlah potongan yang berbeda dari master pada satu atau lebih replika. Jika
"--no-replicate-check" ditentukan, kolom ini akan selalu memiliki nol. Jika
"--replicate-check-only" ditentukan, maka hanya tabel dengan perbedaan yang dicetak.

ROWS
Jumlah baris yang dipilih dan dicentang dari tabel. Mungkin berbeda
dari jumlah baris dalam tabel jika Anda menggunakan opsi --where.

BAGIAN
Jumlah potongan meja yang dibagi.

DILEWATI
Jumlah potongan yang dilewati karena satu atau beberapa masalah berikut:

* MySQL tidak menggunakan --chunk-index
* MySQL tidak menggunakan indeks chunk penuh (--[no]check-plan)
* Ukuran potongan lebih besar dari --ukuran potongan * --batas ukuran potongan
* Batas waktu tunggu kunci terlampaui (--coba lagi)
* Permintaan checksum dimatikan (--coba lagi)

Pada pt-table-checksum 2.2.5, potongan yang dilewati menyebabkan "STATUS KELUAR" bukan nol.

WAKTU
Waktu berlalu saat checksumming tabel.

TABEL
Database dan tabel yang diperiksa.

Jika "--replicate-check-only" ditentukan, hanya perbedaan checksum pada replika yang terdeteksi
dicetak. Outputnya berbeda: satu paragraf per replika, satu perbedaan checksum
per baris, dan nilai dipisahkan oleh spasi:

Selisih pada h=127.0.0.1,P=12346
TABEL CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 UTAMA 1 100
db1.tbl1 6 0 1 UTAMA 501 600

Selisih pada h=127.0.0.1,P=12347
TABEL CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 UTAMA 1 100
db2.tbl2 9 5 0 UTAMA 101 200

Baris pertama paragraf menunjukkan replika dengan perbedaan. Dalam contoh ini
ada dua: h=127.0.0.1,P=12346 dan h=127.0.0.1,P=12347. Kolom-kolom tersebut adalah sebagai berikut:

TABEL
Database dan tabel yang berbeda dari master.

BINGKAH
Jumlah potongan tabel yang berbeda dari master.

CNT_DIFF
Jumlah baris potongan pada replika dikurangi jumlah baris potongan pada master.

CRC_DIFF
1 jika CRC bongkahan di replika berbeda dengan CRC bongkahan di
tuan, jika tidak 0

CHUNK_INDEX
Indeks yang digunakan untuk memotong tabel.

RENDAH_BATAS
Nilai indeks yang menentukan batas bawah potongan.

BATAS_UPPER
Nilai indeks yang menentukan batas atas potongan.

EXIT STATUS


pt-table-checksum memiliki tiga kemungkinan status keluar: nol, 255, dan nilai lainnya adalah a
bitmask dengan flag untuk masalah yang berbeda.

Status keluar nol menunjukkan tidak ada kesalahan, peringatan, atau perbedaan checksum, atau dilewati
potongan atau tabel.

Status keluar 255 menunjukkan kesalahan fatal. Dengan kata lain: alat mati atau jatuh. Itu
kesalahan dicetak ke "STDERR".

Jika status keluar bukan nol atau 255, maka nilainya berfungsi sebagai bitmask dengan ini
bendera:

ARTI NILAI BIT BENDERA
========================= =========================== ===================
KESALAHAN 1 Terjadi kesalahan yang tidak fatal
ALREADY_RUNNING 2 --file pid ada dan PID sedang berjalan
CAUGHT_SIGNAL 4 Menangkap SIGHUP, SIGINT, SIGPIPE, atau SIGTERM
NO_SLAVES_FOUND 8 Tidak ada replika atau node cluster yang ditemukan
TABLE_DIFF 16 Setidaknya satu perbedaan ditemukan
SKIP_CHUNK 32 Setidaknya satu bagian dilewati
SKIP_TABLE 64 Setidaknya satu tabel dilewati

Jika ada tanda yang disetel, status keluar akan menjadi bukan nol. Gunakan operasi "DAN" bitwise untuk
memeriksa bendera tertentu. Misalnya, jika "$exit_status & 16" benar, maka setidaknya
satu perbedaan ditemukan.

Pada pt-table-checksum 2.2.5, potongan yang dilewati menyebabkan status keluar bukan nol. Sebuah jalan keluar
status nol atau 32 setara dengan status keluar nol dengan potongan yang dilewati sebelumnya
versi alat.

PILIHAN


Alat ini menerima argumen baris perintah tambahan. Lihat "SINOPSIS" dan penggunaan
informasi untuk rincian.

--ask-lulus
grup: Koneksi

Meminta kata sandi saat menghubungkan ke MySQL.

--[no]cek-binlog-format
default: ya

Periksa apakah "binlog_format" sama di semua server.

Lihat "Replika menggunakan replikasi berbasis baris" di bawah "BATASAN".

--indeks-biner
Opsi ini mengubah perilaku "--create-replicate-table" sedemikian rupa sehingga
kolom batas atas dan bawah tabel replika dibuat dengan data BLOB
Tipe. Ini berguna jika Anda kesulitan memeriksa tabel dengan kunci
yang menyertakan tipe data biner atau yang memiliki set karakter non-standar. Melihat
"--mengulangi".

--periksa-interval
jenis: waktu; standar: 1; grup: Throttle

Waktu tidur antara pemeriksaan untuk "--max-lag".

--[tidak]periksa-rencana
default: ya

Periksa rencana eksekusi kueri untuk keamanan. Secara default, opsi ini menyebabkan pt-table-
checksum untuk menjalankan EXPLAIN sebelum menjalankan kueri yang dimaksudkan untuk mengakses sejumlah kecil
data, tetapi yang dapat mengakses banyak baris jika MySQL memilih rencana eksekusi yang buruk. Ini
sertakan kueri untuk menentukan batas potongan dan kueri potongan itu sendiri. Jika
tampaknya MySQL akan menggunakan rencana eksekusi kueri yang buruk, alat akan melewati
potongan meja.

Alat ini menggunakan beberapa heuristik untuk menentukan apakah rencana eksekusi buruk. NS
pertama adalah apakah EXPLAIN melaporkan bahwa MySQL bermaksud menggunakan indeks yang diinginkan untuk mengakses
baris. Jika MySQL memilih indeks yang berbeda, alat akan menganggap kueri tidak aman.

Alat ini juga memeriksa berapa banyak indeks yang dilaporkan MySQL yang akan digunakan untuk
pertanyaan. Output EXPLAIN menunjukkan ini di kolom key_len. Alat ini mengingat
key_len terbesar yang terlihat, dan melewatkan potongan di mana MySQL melaporkan bahwa ia akan menggunakan yang lebih kecil
awalan indeks. Heuristik ini dapat dipahami sebagai melewatkan potongan yang memiliki
rencana eksekusi yang lebih buruk daripada potongan lainnya.

Alat ini mencetak peringatan saat pertama kali sebuah potongan dilewati karena eksekusi yang buruk
rencana di setiap tabel. Potongan berikutnya dilewati secara diam-diam, meskipun Anda dapat melihat
jumlah potongan yang dilewati di kolom DILEWATI dalam output alat.

Opsi ini menambahkan beberapa pekerjaan penyiapan ke setiap tabel dan potongan. Meskipun pekerjaannya tidak
mengganggu untuk MySQL, ini menghasilkan lebih banyak perjalanan pulang pergi ke server, yang menghabiskan
waktu. Membuat potongan terlalu kecil akan menyebabkan overhead menjadi relatif lebih besar. Dia
Oleh karena itu disarankan agar Anda tidak membuat potongan terlalu kecil, karena alat ini mungkin memakan waktu
waktu yang sangat lama untuk diselesaikan jika Anda melakukannya.

--[no]periksa-replikasi-filter
standar: ya; grup: Keamanan

Jangan checksum jika ada filter replikasi yang disetel pada replika apa pun. Alatnya terlihat
untuk opsi server yang memfilter replikasi, seperti binlog_ignore_db dan
replikasi_do_db. Jika menemukan filter seperti itu, itu dibatalkan dengan kesalahan.

Jika replika dikonfigurasi dengan opsi pemfilteran apa pun, Anda harus berhati-hati agar tidak
untuk memeriksa database atau tabel apa pun yang ada di master dan bukan replikanya.
Perubahan pada tabel tersebut biasanya dapat dilewati pada replika karena
opsi pemfilteran, tetapi kueri checksum mengubah konten tabel yang
menyimpan checksum, bukan tabel yang datanya Anda checksumming. Karena itu,
kueri ini akan dieksekusi pada replika, dan jika tabel atau database Anda
checksumming tidak ada, kueri akan menyebabkan replikasi gagal. Untuk lebih
informasi tentang aturan replikasi, lihat
<http://dev.mysql.com/doc/en/replication-rules.html>.

Pemfilteran replikasi membuat tidak mungkin untuk memastikan bahwa kueri checksum tidak akan
istirahat replikasi (atau hanya gagal untuk mereplikasi). Jika Anda yakin tidak apa-apa untuk berlari
kueri checksum, Anda dapat meniadakan opsi ini untuk menonaktifkan pemeriksaan. Lihat juga
"--replika-database".

Lihat juga "CEK REPLIKA".

--periksa-budak-lag
jenis: tali; grup: Throttle

Jeda checksumming hingga lag replika ini kurang dari "--max-lag". Nilainya adalah
DSN yang mewarisi properti dari host master dan opsi koneksi
("--port", "--user", dll.). Secara default, monitor pt-table-checksum lag di semua
replika yang terhubung, tetapi opsi ini membatasi pemantauan lag ke replika yang ditentukan.
Ini berguna jika replika tertentu sengaja di-lag (dengan pt-slave-delay for
contoh), dalam hal ini Anda dapat menentukan replika normal untuk dipantau.

Lihat juga "CEK REPLIKA".

--[tidak]periksa-tabel-budak
standar: ya; grup: Keamanan

Memeriksa bahwa tabel pada slave ada dan memiliki semua checksum "--columns". Tabel
hilang pada budak atau tidak memiliki semua checksum "--kolom" dapat menyebabkan alat untuk
istirahat replikasi ketika mencoba untuk memeriksa perbedaan. Nonaktifkan pemeriksaan ini hanya jika
Anda menyadari risikonya dan yakin bahwa semua tabel pada semua budak ada dan ada
identik dengan tuannya.

--potongan-indeks
jenis: string

Lebih suka indeks ini untuk tabel chunking. Secara default, pt-table-checksum memilih yang paling
indeks yang sesuai untuk chunking. Opsi ini memungkinkan Anda menentukan indeks yang Anda
lebih suka. Jika indeks tidak ada, maka pt-table-checksum akan kembali ke
perilaku default memilih indeks. pt-table-checksum menambahkan indeks ke
checksum pernyataan SQL dalam klausa "FORCE INDEX". Berhati-hatilah saat menggunakan opsi ini;
pilihan indeks yang buruk dapat menyebabkan kinerja yang buruk. Ini mungkin yang terbaik untuk digunakan ketika
Anda checksum hanya satu tabel, bukan seluruh server.

--kolom-indeks-potongan
jenis: int

Gunakan hanya banyak kolom paling kiri dari "--chunk-index". Ini hanya berfungsi untuk
indeks gabungan, dan berguna dalam kasus di mana bug di pengoptimal kueri MySQL
(perencana) menyebabkannya memindai sejumlah besar baris alih-alih menggunakan indeks untuk menemukan
titik awal dan akhir dengan tepat. Masalah ini terkadang terjadi pada indeks dengan
banyak kolom, seperti 4 atau lebih. Jika ini terjadi, alat mungkin akan mencetak peringatan
terkait dengan opsi "--[no]check-plan". Menginstruksikan alat untuk hanya menggunakan yang pertama
N kolom indeks adalah solusi untuk bug dalam beberapa kasus.

--ukuran-potongan
jenis: ukuran; standar: 1000

Jumlah baris untuk dipilih untuk setiap kueri checksum. Sufiks yang diperbolehkan adalah k, M, G.
Anda tidak boleh menggunakan opsi ini dalam banyak kasus; lebih suka "--chunk-time" sebagai gantinya.

Opsi ini dapat mengesampingkan perilaku default, yaitu menyesuaikan ukuran potongan
secara dinamis untuk mencoba membuat potongan berjalan tepat dalam detik "--chunk-time". Kapan ini
opsi tidak diatur secara eksplisit, nilai defaultnya digunakan sebagai titik awal, tetapi setelah
itu, alat mengabaikan nilai opsi ini. Jika Anda menyetel opsi ini secara eksplisit,
namun, kemudian menonaktifkan perilaku penyesuaian dinamis dan mencoba membuat semua potongan
persis jumlah baris yang ditentukan.

Ada kehalusan: jika indeks chunk tidak unik, maka mungkin chunks
akan lebih besar dari yang diinginkan. Misalnya, jika sebuah tabel dipotong oleh indeks yang
berisi 10,000 nilai yang diberikan, tidak ada cara untuk menulis klausa WHERE yang cocok
hanya 1,000 dari nilai, dan potongan itu setidaknya berukuran 10,000 baris. Misalnya
chunk mungkin akan dilewati karena "--chunk-size-limit".

Memilih ukuran potongan kecil akan menyebabkan alat menjadi jauh lebih lambat, sebagian
karena pekerjaan pengaturan yang diperlukan untuk "--[no]check-plan".

--potongan-ukuran-batas
jenis: mengapung; standar: 2.0; grup: Keamanan

Jangan checksum bongkahan ini jauh lebih besar dari ukuran bongkahan yang diinginkan.

Ketika tabel tidak memiliki indeks unik, ukuran potongan bisa tidak akurat. Pilihan ini
menentukan batas maksimum yang dapat ditoleransi untuk ketidakakuratan. Alat ini menggunakan ke
memperkirakan berapa banyak baris dalam potongan. Jika perkiraan itu melebihi potongan yang diinginkan
ukuran dikalikan batas (dua kali lebih besar, secara default), maka alat akan melompati potongan.

Nilai minimum untuk opsi ini adalah 1, yang berarti tidak ada potongan yang lebih besar dari
"--ukuran potongan". Anda mungkin tidak ingin menentukan 1, karena baris dilaporkan oleh
JELASKAN adalah perkiraan, yang dapat berbeda dari jumlah baris sebenarnya di
bingkah. Jika alat ini melewatkan terlalu banyak potongan karena terlalu besar, Anda mungkin ingin
untuk menentukan nilai yang lebih besar dari nilai default 2.

Anda dapat menonaktifkan pemeriksaan chunk yang terlalu besar dengan menetapkan nilai 0.

--waktu-potongan
jenis: mengapung; standar: 0.5

Sesuaikan ukuran potongan secara dinamis sehingga setiap kueri checksum membutuhkan waktu lama untuk dieksekusi.

Alat ini melacak tingkat checksum (baris per detik) untuk semua tabel dan setiap tabel
secara individual. Ini menggunakan tarif ini untuk menyesuaikan ukuran potongan setelah setiap kueri checksum,
sehingga kueri checksum berikutnya membutuhkan waktu (dalam detik) ini untuk dieksekusi.

Algoritmanya adalah sebagai berikut: di awal setiap tabel, ukuran chunk adalah
diinisialisasi dari baris rata-rata keseluruhan per detik sejak alat mulai bekerja, atau
nilai "--chunk-size" jika alat belum mulai bekerja. Untuk setiap
potongan tabel berikutnya, alat menyesuaikan ukuran potongan untuk mencoba membuat kueri
berjalan dalam jumlah waktu yang diinginkan. Itu membuat rata-rata bergerak yang menurun secara eksponensial
kueri per detik, sehingga jika kinerja server berubah karena perubahan
beban server, alat ini beradaptasi dengan cepat. Ini memungkinkan alat untuk mencapai yang dapat diprediksi
kueri berjangka waktu untuk setiap tabel, dan untuk server secara keseluruhan.

Jika opsi ini disetel ke nol, ukuran potongan tidak akan disesuaikan secara otomatis, jadi kueri checksum
waktu akan bervariasi, tetapi ukuran checksum kueri tidak. Cara lain untuk melakukan hal yang sama
adalah untuk menentukan nilai untuk "--chunk-size" secara eksplisit, alih-alih meninggalkannya di
standar.

--kolom
bentuk pendek: -c; jenis: larik; grup: Filter

Checksum hanya daftar kolom yang dipisahkan koma ini. Jika sebuah tabel tidak memiliki
kolom yang ditentukan itu akan dilewati.

Opsi ini berlaku untuk semua tabel, jadi ini benar-benar hanya masuk akal saat melakukan checksum
tabel kecuali tabel memiliki kumpulan kolom yang sama.

--konfigurasi
jenis: Array; grup: Konfigurasi

Baca daftar file konfigurasi yang dipisahkan koma ini; jika ditentukan, ini harus menjadi yang pertama
pilihan pada baris perintah.

Lihat output "--help" untuk daftar file konfigurasi default.

--[no]buat-replika-tabel
default: ya

Buat database dan tabel "--replicate" jika tidak ada. Struktur dari
tabel ulangan sama dengan tabel yang disarankan yang disebutkan dalam "--replika".

--database
bentuk pendek: -d; jenis: hash; grup: Filter

Hanya checksum daftar database yang dipisahkan koma ini.

--database-regex
jenis: tali; grup: Filter

Hanya database checksum yang namanya cocok dengan regex Perl ini.

--default-file
bentuk pendek: -F; jenis: tali; grup: Koneksi

Hanya baca opsi mysql dari file yang diberikan. Anda harus memberikan nama path absolut.

--[no]meja-replika-kosong
default: ya

Hapus checksum sebelumnya untuk setiap tabel sebelum checksum tabel. Pilihan ini
tidak memotong seluruh tabel, itu hanya menghapus baris (checksum) untuk setiap tabel
tepat sebelum memeriksa tabel. Oleh karena itu, jika checksumming berhenti sebelum waktunya dan
ada data yang sudah ada sebelumnya, masih akan ada baris untuk tabel yang tidak
checksummed sebelum alat dihentikan.

Jika Anda melanjutkan dari proses checksum sebelumnya, maka catatan checksum untuk
tabel tempat alat dilanjutkan tidak akan dikosongkan.

Untuk mengosongkan seluruh tabel ulangan, Anda harus menjalankan "TRUNCATE TABLE" secara manual sebelum
menjalankan alat.

--mesin
bentuk pendek: -e; jenis: hash; grup: Filter

Hanya tabel checksum yang menggunakan mesin penyimpanan ini.

--menjelaskan
kumulatif: ya; standar: 0; grup: Keluaran

Tampilkan, tetapi jangan jalankan, kueri checksum (menonaktifkan "--[no]empty-replicate-table").
Jika ditentukan dua kali, alat benar-benar beralih melalui algoritma chunking,
mencetak nilai batas atas dan bawah untuk setiap potongan, tetapi tidak menjalankan
pertanyaan checksum.

--float-presisi
jenis: int

Presisi untuk konversi angka ke string FLOAT dan DOUBLE. Menyebabkan FLOAT dan GANDA
nilai yang akan dibulatkan ke jumlah digit yang ditentukan setelah titik desimal, dengan
itu BULAT() fungsi di MySQL. Ini dapat membantu menghindari ketidakcocokan checksum karena
representasi floating-point yang berbeda dari nilai yang sama pada MySQL yang berbeda
versi dan perangkat keras. Standarnya adalah tidak ada pembulatan; nilainya diubah menjadi
string oleh CONCAT() fungsi, dan MySQL memilih representasi string. Jika kamu
tentukan nilai 2 misalnya, maka nilai 1.008 dan 1.009 akan dibulatkan menjadi
1.01, dan akan checksum sebagai sama.

--fungsi
jenis: string

Fungsi hash untuk checksum (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, dll).

Standarnya adalah menggunakan CRC32(), tapi MD5() dan SHA1() juga berfungsi, dan Anda dapat menggunakan
fungsi sendiri, seperti UDF yang dikompilasi, jika Anda mau. Fungsi yang Anda tentukan dijalankan di
SQL, bukan di Perl, jadi harus tersedia untuk MySQL.

MySQL tidak memiliki fungsi hash bawaan yang baik dan cepat. CRC32() terlalu rawan
untuk hash tabrakan, dan MD5() dan SHA1() sangat CPU-intensif. Itu FNV1A_64() UDF
yang didistribusikan dengan Percona Server adalah alternatif yang lebih cepat. Ini sangat sederhana untuk
kompilasi dan instal; lihat header di kode sumber untuk instruksi. Jika memang
diinstal, lebih disukai daripada MD5(). Anda juga bisa menggunakan MURMUR_HASH() berfungsi jika
Anda mengkompilasi dan menginstalnya sebagai UDF; sumbernya juga didistribusikan dengan Percona
Server, dan mungkin lebih baik dari FNV1A_64().

--membantu
grup: Bantuan

Tunjukkan bantuan dan keluar.

--tuan rumah
bentuk pendek: -h; jenis: tali; default: localhost; grup: Koneksi

Host untuk terhubung.

--abaikan-kolom
jenis: Hash; grup: Filter

Abaikan daftar kolom yang dipisahkan koma ini saat menghitung checksum. Jika sebuah meja
memiliki semua kolomnya difilter oleh --ignore-columns, itu akan dilewati.

--abaikan-database
jenis: Hash; grup: Filter

Abaikan daftar database yang dipisahkan koma ini.

--ignore-database-regex
jenis: tali; grup: Filter

Abaikan database yang namanya cocok dengan regex Perl ini.

--abaikan-mesin
jenis: Hash; default: FEDERATED,MRG_MyISAM; grup: Filter

Abaikan daftar mesin penyimpanan yang dipisahkan koma ini.

--ignore-tabel
jenis: Hash; grup: Filter

Abaikan daftar tabel yang dipisahkan koma ini. Nama tabel mungkin memenuhi syarat dengan
nama basis data. Tabel "--replicate" selalu diabaikan secara otomatis.

--abaikan-tabel-regex
jenis: tali; grup: Filter

Abaikan tabel yang namanya cocok dengan regex Perl.

--max-lag
jenis: waktu; default: 1s; grup: Throttle

Jeda checksumming sampai lag semua replika kurang dari nilai ini. Setelah masing-masing
kueri checksum (setiap potongan), pt-table-checksum melihat jeda replikasi semua
replika yang terhubung, menggunakan Seconds_Behind_Master. Jika ada replika yang tertinggal
lebih dari nilai opsi ini, maka pt-table-checksum akan tidur untuk
"--check-interval" detik, lalu periksa lagi semua replika. Jika Anda menentukan
"--check-slave-lag", maka alat ini hanya memeriksa server itu untuk lag, tidak semua server.

Alat ini menunggu selamanya hingga replika berhenti tertinggal. Jika ada replika yang dihentikan,
alat menunggu selamanya sampai replika dimulai. Checksumming berlanjut setelah semua
replika berjalan dan tidak terlalu tertinggal.

Alat ini mencetak laporan kemajuan sambil menunggu. Jika replika dihentikan, ia mencetak
laporan kemajuan segera, kemudian sekali lagi pada setiap interval laporan kemajuan.

Lihat juga "CEK REPLIKA".

--beban maksimum
jenis: Array; default: Threads_running=25; grup: Throttle

Periksa SHOW GLOBAL STATUS setelah setiap potongan, dan jeda jika ada variabel status
lebih tinggi dari ambang batas. Opsi menerima daftar status MySQL yang dipisahkan koma
variabel untuk memeriksa ambang batas. Opsional "=MAX_VALUE" (atau ":MAX_VALUE") dapat
mengikuti setiap variabel. Jika tidak diberikan, alat menentukan ambang batas dengan memeriksa
nilai saat ini dan meningkatkannya sebesar 20%.

Misalnya, jika Anda ingin alat berhenti saat Threads_connected terlalu tinggi, Anda
dapat menentukan "Threads_connected", dan alat akan memeriksa nilai saat ini ketika
mulai bekerja dan tambahkan 20% ke nilai itu. Jika nilai saat ini adalah 100, maka alat
akan berhenti saat Threads_connected melebihi 120, dan melanjutkan bekerja saat di bawah 120
lagi. Jika Anda ingin menentukan ambang batas eksplisit, seperti 110, Anda dapat menggunakan salah satu dari
"Threads_connected:110" atau "Threads_connected=110".

Tujuan dari opsi ini adalah untuk mencegah pahat menambahkan terlalu banyak beban ke
server. Jika kueri checksum mengganggu, atau jika menyebabkan penguncian menunggu, maka lainnya
query di server akan cenderung memblok dan mengantri. Ini biasanya akan menyebabkan
Threads_running meningkat, dan alat ini dapat mendeteksinya dengan menjalankan SHOW GLOBAL
STATUS segera setelah setiap kueri checksum selesai. Jika Anda menentukan ambang batas untuk
variabel ini, maka Anda dapat menginstruksikan alat untuk menunggu hingga kueri berjalan
biasanya lagi. Namun, ini tidak akan mencegah antrian; itu hanya akan memberikan server
kesempatan untuk pulih dari antrian. Jika Anda melihat antrian, yang terbaik adalah mengurangi
waktu potongan.

--kata sandi
bentuk pendek: -p; jenis: tali; grup: Koneksi

Kata sandi untuk digunakan saat menghubungkan. Jika kata sandi mengandung koma, mereka harus diloloskan
dengan garis miring terbalik: "ujian\,ple"

--pid
jenis: string

Buat file PID yang diberikan. Alat tidak akan mulai jika file PID sudah ada dan
PID yang dikandungnya berbeda dari PID saat ini. Namun, jika file PID
ada dan PID yang dikandungnya tidak lagi berjalan, alat akan menimpa PID
file dengan PID saat ini. File PID dihapus secara otomatis saat alat keluar.

--plugin
jenis: string

File modul Perl yang mendefinisikan kelas "pt_table_checksum_plugin". Sebuah plugin memungkinkan Anda
untuk menulis modul Perl yang dapat terhubung ke banyak bagian pt-table-checksum. Ini
membutuhkan pengetahuan yang baik tentang konvensi Perl dan Percona Toolkit, yang berada di luar
lingkup dokumentasi ini. Silakan hubungi Percona jika Anda memiliki pertanyaan atau
Butuh bantuan.

Lihat "PLUGIN" untuk informasi lebih lanjut.

--Pelabuhan
bentuk pendek: -P; jenis: int; grup: Koneksi

Nomor port yang digunakan untuk koneksi.

--kemajuan
jenis: susunan; default: waktu, 30

Cetak laporan kemajuan ke STDERR.

Nilainya adalah daftar yang dipisahkan koma dengan dua bagian. Bagian pertama dapat berupa persentase,
waktu, atau iterasi; bagian kedua menentukan seberapa sering pembaruan harus dicetak,
dalam persentase, detik, atau jumlah iterasi. Alat ini mencetak laporan kemajuan untuk
berbagai operasi yang memakan waktu, termasuk menunggu replika untuk mengejar jika
mereka menjadi tertinggal.

--diam
bentuk pendek: -q; kumulatif: ya; standar: 0

Cetak hanya informasi yang paling penting (nonaktifkan "--progress"). Menentukan ini
opsi sekali menyebabkan alat hanya mencetak kesalahan, peringatan, dan tabel yang memiliki
perbedaan checksum.

Menentukan opsi ini dua kali menyebabkan alat hanya mencetak kesalahan. Dalam hal ini, Anda
dapat menggunakan status keluar alat untuk menentukan apakah ada peringatan atau checksum
perbedaan.

--berulang
jenis: int

Jumlah level yang akan berulang dalam hierarki saat menemukan replika. Standarnya adalah
tak terbatas. Lihat juga "--recursion-method" dan "REPLICA CHECKS".

--rekursi-metode
jenis: susunan; default: daftar proses, host

Metode rekursi yang disukai untuk menemukan replika. pt-table-checksum tampil
beberapa "PERIKSA REPLIKA" sebelum dan saat dijalankan.

Meskipun replika tidak diperlukan untuk menjalankan pt-table-checksum, alat ini tidak dapat mendeteksi
diffs pada budak yang tidak dapat ditemukan. Oleh karena itu, peringatan akan dicetak dan
"EXIT STATUS" bukan nol jika tidak ada replika yang ditemukan dan metodenya bukan "tidak ada". Jika
ini terjadi, coba metode rekursi lain, atau gunakan metode "dsn" untuk menentukan
replika untuk diperiksa.

Metode yang mungkin adalah:

PENGGUNAAN METODE
=================================================== ======
daftar proses TUNJUKKAN DAFTAR PROSES
host TUNJUKKAN HOST BUDAK
cluster TAMPILKAN STATUS SEPERTI 'wsrep\_incoming\_addresses'
dsn=DSN DSN dari sebuah tabel
tidak ada Jangan temukan budak

Metode "daftar proses" adalah default, karena "SHOW SLAVE HOSTS" tidak dapat diandalkan.
Namun, jika server menggunakan port non-standar (bukan 3306), maka metode "host"
menjadi default karena berfungsi lebih baik dalam kasus ini.

Metode "hosts" memerlukan replika untuk dikonfigurasi dengan "report_host",
"laporan_port", dll.

Metode "cluster" memerlukan cluster berdasarkan Galera 23.7.3 atau yang lebih baru, seperti
Percona XtraDB Cluster versi 5.5.29 dan di atasnya. Ini akan otomatis menemukan node di a
cluster menggunakan "SHOW STATUS LIKE 'wsrep\_incoming\_addresses'". Anda dapat menggabungkan
"cluster" dengan "processlist" dan "hosts" untuk menemukan node dan replika cluster secara otomatis,
tetapi fungsi ini bersifat eksperimental.

Metode "dsn" adalah khusus: daripada menemukan replika secara otomatis, ini
metode menentukan tabel dengan DSN replika. Alat ini hanya akan terhubung ke ini
replika. Metode ini berfungsi paling baik ketika replika tidak menggunakan nama pengguna MySQL yang sama atau
kata sandi sebagai master, atau ketika Anda ingin mencegah alat terhubung ke
replika tertentu. Metode "dsn" ditentukan seperti: "--recursion-method
dsn=h=host,D=percona,t=dsns". DSN yang ditentukan harus memiliki bagian D dan t, atau hanya a
bagian t database-qualified, yang menentukan tabel DSN. Tabel DSN harus memiliki
struktur berikut:

BUAT TABEL `dsns` (
`id` int(11) BUKAN NULL AUTO_INCREMENT,
`induk_id` int(11) NULL DEFAULT,
`dsn` varchar.dll(255) TIDAK NULL,
KUNCI UTAMA (`id`)
);

DSN diurutkan berdasarkan "id", tetapi "id" dan "parent_id" diabaikan. "dsn"
kolom berisi replika DSN seperti yang akan diberikan pada baris perintah, misalnya:
"h=replica_host,u=repl_user,p=repl_pass".

Metode "tidak ada" membuat alat mengabaikan semua budak dan node cluster. Metode ini adalah
tidak disarankan karena secara efektif menonaktifkan "PERIKSA REPLIKA" dan tidak
perbedaan dapat ditemukan. Akan tetapi, ini berguna jika Anda hanya perlu menulis checksum
pada master atau node cluster tunggal. Alternatif yang lebih aman adalah
"--no-replicate-check": alat ini menemukan replika dan node cluster, melakukan
"REPLICA CHECKS", tetapi tidak memeriksa perbedaan. Lihat "--[no]replika-periksa".

--mengulangi
jenis: tali; default: percona.checksums

Tulis hasil checksum ke tabel ini. Tabel ulangan harus memiliki struktur ini
(MAGIC_buat_replikasi):

BUAT TABEL checksum (
db ARANG(64) TIDAK NULL,
tbl ARANG(64) TIDAK NULL,
potongan INT BUKAN NULL,
chunk_time FLOAT NULL,
potongan_index Varchar(200) BATAL,
batas_bawah TEXT NULL,
TEXT NULL batas_atas,
ini_crc ARANG(40) TIDAK NULL,
this_cnt INT BUKAN NULL,
master_crc ARANG(40) BATAL,
master_cnt INT BATAL,
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP PADA UPDATE CURRENT_TIMESTAMP,
KUNCI UTAMA (db, tbl, potongan),
INDEKS ts_db_tbl (ts, db, tbl)
) MESIN=InnoDB;

Catatan: tipe data lower_boundary dan upper_boundary dapat berupa BLOB. Lihat "--binary-index".

Secara default, "--[no]create-replicate-table" adalah benar, jadi database dan tabelnya
ditentukan oleh opsi ini dibuat secara otomatis jika tidak ada.

Pastikan untuk memilih mesin penyimpanan yang sesuai untuk tabel ulangan. Jika Anda
checksumming tabel InnoDB, dan Anda menggunakan MyISAM untuk tabel ini, kebuntuan akan pecah
replikasi, karena campuran tabel transaksional dan non-transaksi di
pernyataan checksum akan menyebabkannya ditulis ke binlog meskipun memiliki
kesalahan. Kemudian akan diputar ulang tanpa kebuntuan pada replika, dan mematahkan replikasi
dengan "kesalahan berbeda pada master dan slave." Ini bukan masalah dengan pt-table-
checksum; itu masalah dengan replikasi MySQL, dan Anda dapat membaca lebih lanjut tentang itu di
panduan MySQL.

Tabel ulangan tidak pernah diperiksa (alat ini secara otomatis menambahkan tabel ini ke
"--ignore-tabel").

--[no]replika-cek
default: ya

Periksa replika untuk perbedaan data setelah menyelesaikan setiap tabel. Alat menemukan
perbedaan dengan mengeksekusi pernyataan SELECT sederhana pada semua replika yang terdeteksi. Itu
query membandingkan hasil checksum replika dengan hasil checksum master. Dia
melaporkan perbedaan dalam kolom DIFFS dari output.

--replika-cek-saja
Periksa replika untuk konsistensi tanpa menjalankan kueri checksum. Pilihan ini adalah
hanya digunakan dengan "--[no]replicate-check". Jika ditentukan, pt-table-checksum tidak
checksum setiap tabel. Ini memeriksa replika untuk perbedaan yang ditemukan sebelumnya
checksumming, dan kemudian keluar. Mungkin berguna jika Anda menjalankan pt-table-checksum dengan tenang
dalam pekerjaan cron, misalnya, dan kemudian menginginkan laporan tentang hasil pekerjaan cron,
mungkin untuk menerapkan cek Nagios.

--replika-periksa-coba lagi
jenis: int; default: 1

Coba ulangi perbandingan checksum ini berkali-kali ketika ditemukan perbedaan. Hanya bila
perbedaan tetap ada setelah jumlah pemeriksaan ini dianggap sah. Menggunakan ini
opsi dengan nilai 2 atau lebih mengurangi perbedaan palsu yang muncul saat menggunakan
opsi --resume.

--replika-database
jenis: string

GUNAKAN hanya database ini. Secara default, pt-table-checksum mengeksekusi USE untuk memilih
database yang berisi tabel yang sedang dikerjakannya. Ini adalah usaha terbaik
untuk menghindari masalah dengan filter replikasi seperti binlog_ignore_db dan
replikasi_abaikan_db. Namun, filter replikasi dapat menciptakan situasi di mana ada
hanya tidak ada satu cara yang benar untuk melakukan sesuatu. Beberapa pernyataan mungkin tidak dapat direplikasi, dan
lain mungkin menyebabkan replikasi gagal. Dalam kasus seperti itu, Anda dapat menggunakan opsi ini untuk
tentukan database default yang pt-table-checksum pilih dengan USE, dan tidak pernah berubah.
Lihat juga "--[tidak]periksa-replikasi-filter".

--melanjutkan
Lanjutkan checksumming dari potongan yang terakhir selesai (nonaktifkan
"--[tidak]meja-replika-kosong"). Jika alat berhenti sebelum memeriksa semua tabel,
opsi ini membuat checksumming dilanjutkan dari potongan terakhir dari tabel terakhir yang
jadi.

--coba lagi
jenis: int; default: 2

Coba lagi potongan ini berkali-kali ketika ada kesalahan yang tidak fatal. Kesalahan tidak fatal adalah
masalah seperti waktu tunggu kunci habis atau kueri dimatikan.

--waktu berjalan
jenis: waktu

Berapa lama untuk berlari. Standarnya adalah dijalankan sampai semua tabel telah diperiksa. Ini
akhiran nilai waktu diperbolehkan: s (detik), m (menit), h (jam), dan d (hari).
Gabungkan opsi ini dengan "--resume" untuk checksum sebanyak mungkin tabel dalam satu alokasi
waktu, melanjutkan dari tempat alat tinggalkan saat berikutnya dijalankan.

--pemisah
jenis: tali; bawaan: #

Karakter pemisah yang digunakan untuk CONCAT_WS(). Karakter ini digunakan untuk bergabung dengan
nilai kolom saat checksumming.

--set-vars
jenis: Array; grup: Koneksi

Setel variabel MySQL dalam daftar pasangan "variabel=nilai" yang dipisahkan koma ini.

Secara default, set alat:

tunggu_waktu habis=10000
innodb_lock_wait_timeout=1

Variabel yang ditentukan pada baris perintah menggantikan default ini. Sebagai contoh,
menentukan "--set-vars wait_timeout=500" mengesampingkan nilai default 10000.

Alat ini mencetak peringatan dan melanjutkan jika variabel tidak dapat disetel.

--stopkontak
Surat pendek; jenis: tali; grup: Koneksi

File soket yang akan digunakan untuk koneksi.

--tabel
bentuk pendek: -t; jenis: hash; grup: Filter

Checksum hanya daftar tabel yang dipisahkan koma ini. Nama tabel mungkin memenuhi syarat dengan
nama databasenya.

--tabel-regex
jenis: tali; grup: Filter

Hanya tabel checksum yang namanya cocok dengan regex Perl ini.

--memangkas
Add MEMANGKAS() ke kolom VARCHAR (membantu saat membandingkan 4.1 dengan >= 5.0). Ini berguna
ketika Anda tidak peduli dengan perbedaan spasi tambahan antara versi MySQL yang
bervariasi dalam penanganan spasi tambahan. MySQL 5.0 dan yang lebih baru semuanya mempertahankan trailing
spasi di VARCHAR, sementara versi sebelumnya akan menghapusnya. Perbedaan ini akan
menyebabkan perbedaan checksum palsu.

--pengguna
bentuk pendek: -u; jenis: tali; grup: Koneksi

Pengguna untuk login jika bukan pengguna saat ini.

--Versi: kapan
grup: Bantuan

Tampilkan versi dan keluar.

--[no]versi-periksa
default: ya

Periksa versi terbaru Percona Toolkit, MySQL, dan program lainnya.

Ini adalah fitur standar "periksa pembaruan secara otomatis", dengan dua tambahan
fitur. Pertama, alat ini memeriksa versi program lain di sistem lokal di
tambahan untuk versinya sendiri. Misalnya, ia memeriksa versi setiap server MySQL
itu terhubung ke, Perl, dan modul Perl DBD::mysql. Kedua, ia memeriksa dan memperingatkan
tentang versi dengan masalah yang diketahui. Misalnya, MySQL 5.5.25 memiliki bug kritis dan
dirilis ulang sebagai 5.5.25a.

Setiap pembaruan atau masalah yang diketahui dicetak ke STDOUT sebelum keluaran normal alat.
Fitur ini tidak boleh mengganggu pengoperasian normal alat.

Untuk informasi lebih lanjut, kunjungi .

--di mana
jenis: string

Lakukan hanya baris yang cocok dengan klausa WHERE ini. Anda dapat menggunakan opsi ini untuk membatasi
checksum ke hanya bagian dari tabel. Ini sangat berguna jika Anda memiliki lampiran-
hanya tabel dan tidak ingin terus-menerus memeriksa ulang semua baris; Anda bisa menjalankan pekerjaan sehari-hari
untuk hanya memeriksa baris kemarin, misalnya.

Opsi ini sangat mirip dengan opsi -w pada mysqldump. Jangan tentukan DI MANA
kata kunci. Anda mungkin perlu mengutip nilainya. Berikut ini contohnya:

pt-table-checksum --dimana "ts > CURRENT_DATE - INTERVAL 1 HARI"

REPLICA LIHAT


Secara default, pt-table-checksum mencoba menemukan dan menghubungkan ke semua replika yang terhubung ke
tuan rumah utama. Proses otomatis ini disebut "rekursi budak" dan dikendalikan oleh
opsi "--recursion-method" dan "--recurse". Alat ini melakukan pemeriksaan ini pada semua
replika:

1. "--[no]periksa-replikasi-filter"
pt-table-checksum memeriksa filter replikasi pada semua replika karena mereka dapat
mempersulit atau menghancurkan proses checksum. Secara default, alat akan keluar jika ada
filter replikasi ditemukan, tetapi pemeriksaan ini dapat dinonaktifkan dengan menentukan
"--tidak-periksa-replikasi-filter".

2. tabel "--replika"
pt-table-checksum memeriksa bahwa tabel "--replicate" ada di semua replika, selain itu
checksumming dapat merusak replikasi saat pembaruan ke tabel di master ulangan
ke replika yang tidak memiliki tabel. Pemeriksaan ini tidak dapat dinonaktifkan, dan alatnya
menunggu selamanya sampai tabel ada di semua replika, mencetak pesan "--progress"
sambil menunggu.

3. Ukuran potongan tunggal
Jika sebuah tabel dapat di-checksum dalam satu chunk pada master, pt-table-checksum akan
periksa apakah ukuran tabel pada semua replika kurang dari "--chunk-size" *
"--batas-ukuran-potongan". Ini mencegah masalah langka di mana tabel pada master berada
kosong atau kecil, tetapi pada replika jauh lebih besar. Dalam hal ini, potongan tunggal
checksum pada master akan membebani replika.

Masalah langka lainnya terjadi ketika ukuran tabel pada replika mendekati
"--ukuran-potongan" * "--batas-ukuran-potongan". Dalam kasus seperti itu, tabel lebih mungkin menjadi
dilewati meskipun aman untuk checksum dalam satu bagian. Hal ini terjadi karena
ukuran meja adalah perkiraan. Ketika perkiraan tersebut dan "--chunk-size" *
"--chunk-size-limit" hampir sama, pemeriksaan ini menjadi lebih sensitif terhadap
perkiraan margin kesalahan daripada perbedaan signifikan aktual dalam ukuran tabel.
Menentukan nilai yang lebih besar untuk "--chunk-size-limit" membantu menghindari masalah ini.

Pemeriksaan ini tidak dapat dinonaktifkan.

4. Keterlambatan
Setelah setiap potongan, pt-table-checksum memeriksa jeda pada semua replika, atau hanya
replika yang ditentukan oleh "--check-slave-lag". Ini membantu alat untuk tidak membebani
replika dengan data checksum. Tidak ada cara untuk menonaktifkan pemeriksaan ini, tetapi Anda dapat
tentukan satu replika untuk diperiksa dengan "--check-slave-lag", dan jika replika itu adalah
tercepat, ini akan membantu mencegah alat menunggu terlalu lama hingga jeda replika mereda.

5. Potongan checksum
Ketika pt-table-checksum selesai melakukan checksum pada sebuah tabel, ia menunggu checksum terakhir
chunk untuk mereplikasi ke semua replika sehingga dapat melakukan "--[no]replicate-check".
Menonaktifkan opsi itu dengan menentukan --no-replicate-check menonaktifkan pemeriksaan ini, tetapi itu
juga menonaktifkan pelaporan langsung perbedaan checksum, sehingga membutuhkan waktu sebentar
jalankan alat dengan "--replicate-check-only" untuk menemukan dan mencetak perbedaan checksum.

PLUGIN


File yang ditentukan oleh "--plugin" harus mendefinisikan kelas (yaitu paket) yang disebut
"pt_table_checksum_plugin" dengan subrutin "baru()". Alat ini akan membuat instance dari
kelas ini dan panggil semua kait yang ditentukannya. Tidak diperlukan pengait, tetapi plugin tidak
sangat berguna tanpa mereka.

Kait ini, dalam urutan ini, dipanggil jika didefinisikan:

init
sebelum_replikasi_periksa
setelah_replikasi_periksa
dapatkan_slave_lag
sebelum_checksum_tabel
setelah_checksum_tabel

Setiap kait dilewatkan argumen yang berbeda. Untuk melihat argumen mana yang diteruskan ke hook,
cari nama pengait di kode sumber alat, seperti:

# --pengait pengait
if ( $plugin && $plugin->can('init') ) {
$plugin->init(
budak => $budak,
slave_lag_cxns => $slave_lag_cxns,
repl_table => $repl_table,
);
}

Komentar "# --plugin hook" mendahului setiap panggilan hook.

Silakan hubungi Percona jika Anda memiliki pertanyaan atau membutuhkan bantuan.

DSN PILIHAN


Opsi DSN ini digunakan untuk membuat DSN. Setiap opsi diberikan seperti "opsi = nilai".
Opsi peka huruf besar/kecil, jadi P dan p bukan opsi yang sama. Tidak mungkin ada
spasi putih sebelum atau sesudah "=" dan jika nilainya mengandung spasi, itu harus dikutip.
Opsi DSN dipisahkan dengan koma. Lihat halaman manual percona-toolkit untuk detail lengkap.

· SEBUAH

dsn: rangkaian karakter; salinan: ya

Kumpulan karakter default.

· D

salinan: tidak

database tabel DSN.

· F

dsn: mysql_read_default_file; salinan: ya

File default untuk nilai koneksi.

· H

dsn: tuan rumah; salinan: ya

Hubungkan ke tuan rumah.

· P

dsn: kata sandi; salinan: ya

Kata sandi untuk digunakan saat menghubungkan. Jika kata sandi mengandung koma, mereka harus diloloskan
dengan garis miring terbalik: "ujian\,ple"

· P

dsn: pelabuhan; salinan: ya

Nomor port yang digunakan untuk koneksi.

· S

dsn: mysql_socket; salinan: tidak

File soket yang akan digunakan untuk koneksi.

· T

salinan: tidak

tabel tabel DSN.

· kamu

dsn: pengguna; salinan: ya

Pengguna untuk login jika bukan pengguna saat ini.

LINGKUNGAN


Variabel lingkungan "PTDEBUG" memungkinkan keluaran debugging verbose ke STDERR. Untuk mengaktifkan
debugging dan tangkap semua output ke file, jalankan alat seperti:

PTDEBUG=1 pt-table-checksum ... > FILE 2>&1

Hati-hati: keluaran debug sangat banyak dan dapat menghasilkan beberapa megabita keluaran.

SISTEM PERSYARATAN


Anda memerlukan Perl, DBI, DBD::mysql, dan beberapa paket inti yang harus diinstal di
versi Perl yang cukup baru.

Gunakan pt-table-checksump online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    AAX ke MP3
    AAX ke MP3
    Penggunaan: - Instal Manajer Audible
    dan buka file akun Anda. - Tanda
    masuk ke akun Anda yang dapat didengar (di
    aplikasi). Sekarang programnya bisa
    mengubahmu...
    Unduh AAX ke MP3
  • 2
    Tautan Tes
    Tautan Tes
    TestLink adalah Manajemen Tes berbasis web
    alat. Aplikasi ini menyediakan Tes
    spesifikasi, Rencana dan pelaksanaan pengujian,
    Pelaporan, Spesifikasi persyaratan
    dan ...
    Unduh TestLink
  • 3
    XDXF - Format Pertukaran Kamus XML
    XDXF - Format Pertukaran Kamus XML
    XDXF adalah proyek untuk menyatukan semua yang ada
    buka kamus dan berikan kedua pengguna
    dan pengembang dengan berbasis XML universal
    format, dapat dikonversi dari dan ke ...
    Unduh XDXF - Format Pertukaran Kamus XML
  • 4
    Transmisi Jarak Jauh GUI
    Transmisi Jarak Jauh GUI
    Transmisi Remote GUI adalah fitur
    kaya lintas platform front-end ke
    mengontrol Transmisi dari jarak jauh
    Daemon klien Bit-Torrent melalui RPC-nya
    protokol. Transmisi...
    Unduh GUI Jarak Jauh Transmisi
  • 5
    s3cmd
    s3cmd
    Alat sumber terbuka untuk mengakses Amazon S3
    penyimpanan file. S3cmd adalah perintah gratis
    alat baris dan klien untuk mengunggah,
    mengambil dan mengelola data di Amazon
    S3 dan seterusnya...
    Unduh s3cmd.dll
  • 6
    Alat Server XyZerKunG
    Alat Server XyZerKunG
    XyZerKunG ServerTool membantu Anda membuat
    server Minecraft Anda sendiri dan mainkan
    teman Anda selama beberapa menit.
    Fitur: Secara otomatis membuat
    Server MinecraftU...
    Unduh Alat Server XyZerKunG
  • Lebih banyak lagi »

Perintah Linux

Ad