pt-table-checksumあるライブラリに対してデータ検証を行う
背景:
私たちは今、オンラインマスターライブラリ(Aと略称する)の6つの予備ライブラリのうちの1つのライブラリ(Bと略称する)に対してデータ検査を行う必要があります.
方法:pt-table-checksumツール
<1>最初のステップはdsnsを構成する必要があります.これにより、バックアップチェックを指定できます.
Aライブラリ上のライブラリで、
CREATE TABLE `dsns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) DEFAULT NULL, `dsn` varchar(255) NOT NULL, PRIMARY KEY (`id`) );
INSERT INTO dsns (parent_id,dsn) values(1, "h=B,u=root,p=******,P=****");
<2>第2ステップ設定チェックスクリプト
次のように行います.
メインライブラリerror.log:
質問:a.実行時にBライブラリの遅延は指定された範囲内で厳格に制御できますが、他のライブラリの遅延は大きいです.
b.他のライブラリにchecksumsテーブルのコピーを無視させることを考えているが、コピーテーブルを無視するにはライブラリを再起動する必要がある.
c.binlogモードはmixedなので、メインライブラリerror.logは間違いを報告します
--王トラ
私たちは今、オンラインマスターライブラリ(Aと略称する)の6つの予備ライブラリのうちの1つのライブラリ(Bと略称する)に対してデータ検査を行う必要があります.
方法:pt-table-checksumツール
<1>最初のステップはdsnsを構成する必要があります.これにより、バックアップチェックを指定できます.
Aライブラリ上のライブラリで、
CREATE TABLE `dsns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) DEFAULT NULL, `dsn` varchar(255) NOT NULL, PRIMARY KEY (`id`) );
INSERT INTO dsns (parent_id,dsn) values(1, "h=B,u=root,p=******,P=****");
<2>第2ステップ設定チェックスクリプト
--databases #
--max-lag=10 #
--nocheck-replication-filters #
--no-check-binlog-format # binlog
--ignore-tables #
--recursion-method=dsn=h=B,D=***,t=dsns #dsns
--chunk-size # 1000,
次のように行います.
pt-table-checksum h='A',u='****',p='******',P=3306 --databases=*** --max-lag=10 --nocheck-replication-filters --no-check-binlog-format --replicate=***.checksums --ignore-tables=album_useralbum,album_photoexif --recursion-method=dsn=h=B,D=***,t=dsns 1>>/tmp/checksum_1.log 2>>/tmp/checksum_1.log
メインライブラリerror.log:
160111 23:03:11 [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the
SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. Statement: REPLACE INTO `***`.`checksums` (db, tbl, chunk, chunk_index, lower_bo
undary, upper_boundary, this_cnt, this_crc) SELECT 'qyer', 'plan_onedayevent_h_15', '11', 'PRIMARY', '138128303', '150253579', COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `id`, `
plan_id`, `uid`, `play_time`, `typeid`, `catetypeid`, `pid`, `title`, `type`, `badword_level`, `oneday_id`, `badword`, `starthours`, `startminutes`, `endhours`, `endminutes`, `budgetid`, `textsids`, `hav_c
ron`, `addtime`, `updatetime`, `coord`, `address`, `rafill_reason`, `pid_old`, ……
質問:a.実行時にBライブラリの遅延は指定された範囲内で厳格に制御できますが、他のライブラリの遅延は大きいです.
b.他のライブラリにchecksumsテーブルのコピーを無視させることを考えているが、コピーテーブルを無視するにはライブラリを再起動する必要がある.
c.binlogモードはmixedなので、メインライブラリerror.logは間違いを報告します
--王トラ