真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

percona-toolkit之pt-table-checksum

第一部分-簡介
pt-table-checksum通過SQL在主庫執(zhí)行數(shù)據(jù)塊的校驗(yàn),再將相同的語句傳送到從庫,并在從庫上計(jì)算數(shù)據(jù)塊的校驗(yàn),最后將主從庫相同塊的校驗(yàn)值進(jìn)行對比,辨別主從數(shù)據(jù)是否不一致。

做網(wǎng)站、網(wǎng)站設(shè)計(jì),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向上千企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

pt-table-sync用來修復(fù)主從復(fù)制數(shù)據(jù)的不一致,使得它們修復(fù)到最終一致,也可以實(shí)現(xiàn)多個(gè)實(shí)例或者是應(yīng)用雙寫或多寫的多個(gè)不相關(guān)的數(shù)據(jù)庫實(shí)例修復(fù)到一致。同時(shí)它還內(nèi)部集成了pt-table-checksum的校驗(yàn)功能,可以一邊校驗(yàn)一邊修復(fù),也可以基于pt-table-checksum的計(jì)算結(jié)果來進(jìn)行修復(fù)。

第二部分-工具的安裝

方法1-RPM安裝
    1.軟件下載:
        [root@MySQL-01 ~]# wget http://www.percona.com/downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.7-1.noarch.rpm
    2.安裝該工具依賴的軟件包:
        [root@MySQL-01 ~]# yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes -y
    3.軟件安裝:
        [root@MySQL-01 ~]# rpm -ivh percona-toolkit-2.2.7-1.noarch.rpm 
        Preparing...                ########################################### [100%]
        1:percona-toolkit        ########################################### [100%]

方法2-源碼安裝
    1.軟件下載:
        這兩個(gè)工具均包含在percona-toolkit里,線上下載地址:  https://www.percona.com/downloads/percona-toolkit/2.2.2/。
        在設(shè)備上直接下載的指令如下,下載后解壓使用:wget https://www.percona.com/downloads/percona-toolkit/2.2.2/percona-toolkit-2.2.2.tar.gz
    2、安裝依賴軟件包
        yum install perl perl-devel perl-Time-HiRes perl-DBI perl-DBD-MySQL
    3、軟件安裝
        tar zxvf percona-toolkit-2.2.13.tar.gz
        cd percona-toolkit-2.2.13
        perl Makefile.PL
        make && make install

第三部分-使用checksum檢驗(yàn)數(shù)據(jù)一致性

1、 主庫創(chuàng)建如下對象
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS percona

創(chuàng)建表
    use percona
    Create Table: CREATE TABLE `checksums` (
    `db` char(64) NOT NULL,
    `tbl` char(64) NOT NULL,
    `chunk` int(11) NOT NULL,
    `chunk_time` float DEFAULT NULL,
    `chunk_index` varchar(200) DEFAULT NULL,
    `lower_boundary` text,
    `upper_boundary` text,
    `this_crc` char(40) NOT NULL,
    `this_cnt` int(11) NOT NULL,
    `master_crc` char(40) DEFAULT NULL,
    `master_cnt` int(11) DEFAULT NULL,
    `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`db`,`tbl`,`chunk`),
    KEY `ts_db_tbl` (`ts`,`db`,`tbl`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1

如果使用系統(tǒng)自動創(chuàng)建的表
    mysql> alter table checksums modify ts timestamp not null  default current_timestamp
    如果使用已存在的數(shù)據(jù)庫,則把此表創(chuàng)建到此庫下。使用--replicate=test.checksums 進(jìn)行指定即可

2、主庫創(chuàng)建需要的用戶及授權(quán)
此用戶的是作為pt-table-checksum連接主備庫,進(jìn)行數(shù)據(jù)校驗(yàn)使用的,所已主備庫必須存在相同的且能登錄的用戶
GRANT UPDATE,INSERT,DELETE,SELECT, PROCESS, SUPER, REPLICATION SLAVE ON . TO 'procheck'@'172.31.150.37' identified by 'Mysql.37';
GRANT ALL ON percona.* TO 'procheck'@'172.31.150.37'

3、執(zhí)行命令進(jìn)行數(shù)據(jù)校驗(yàn)

執(zhí)行命令
    pt-table-checksum -u'procheck' -p'Mysql.37' -h272.31.150.37  -P 3316 --databases=agati --ignore-tables=sys_log --nocheck-binlog-format --nocheck-plan --nocheck-replication-filters  --recursion-method=processlist 

其他參數(shù)及備選參數(shù)解釋
    --u'lxh' 
    --p'Mysql.163' 
    --h 192.168.XXX.XX 主庫IP地址
    --P 3306 主庫端口
    --databases=db1  校驗(yàn)db1庫里
    --tables=tb1    的tb1表,若無此參數(shù)則校驗(yàn)全庫全表。
    --no-check-binlog-format 被檢查的主從binlog_format必須為statement,如果不是statement-based就要添加此參數(shù)
    --nocheck-plan 檢查 query的執(zhí)行計(jì)劃(優(yōu)先選擇能夠?qū)Ρ磉M(jìn)行chunk 分組的索引)
    --nocheck-replication-filters 不檢查復(fù)制過濾器,建議啟用。
    --recursion-method="processlist" 其參數(shù)有四:processlist/hosts/dsn=DSN/no,用來決定查找slave的方式是show full processlist還是show slave hosts還是命令行直接指定還是壓根就不準(zhǔn)備找從庫; 

        使用DNS方法
          配置
            CREATE TABLE `dsns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) DEFAULT NULL, `dsn` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); 
            列名的含義
            parent_id:一個(gè)需要無特別意義
            dsn:配置內(nèi)容,h表示host指slave的ip,u表示user指創(chuàng)建的檢查用戶,p指此用戶密碼,P指備庫端口

            INSERT INTO dsns (parent_id,dsn) values(1,'h=172.31.150.36,u=procheck,p=Mysql.37,P=3316');
            INSERT INTO dsns (parent_id,dsn) values(2,'h=172.29.147.32,u=procheck,p=Mysql.37,P=3376');
          使用
            --recursion-method=dsn=h=172.31.150.37,D=percona,t=dsns
            D指:存放配置表的數(shù)據(jù)庫名字
            T指:存放配置的表名字

    --set-varsinnodb_lock_wait_timeout=120鎖的超時(shí)設(shè)定, 默認(rèn)為1
    --replicate=test.checksums 用來指定存放計(jì)算結(jié)果的表名,默認(rèn)是percona.checksums,工具會默認(rèn)自動創(chuàng)建庫percona和表checksums并將checksum的檢查結(jié)果輸入到這個(gè)表中,如果自己用該參數(shù)去指定表的話,表結(jié)構(gòu)必須是上面創(chuàng)建的表結(jié)構(gòu)

4、查看校驗(yàn)結(jié)果哦
結(jié)果可以在執(zhí)行命令后出現(xiàn)
也可以查詢之前創(chuàng)建的表

檢查結(jié)果各列含義
TS        :完成檢查的時(shí)間。 
ERRORS    :檢查時(shí)候發(fā)生錯誤和警告的數(shù)量。 
DIFFS     :0表示一致,大于0表示不一致。主要看這一列有無不一致數(shù)據(jù)。
ROWS      :表的行數(shù)。 
CHUNKS    :被劃分到表中的塊的數(shù)目。 
SKIPPED   :由于錯誤或警告或過大,則跳過塊的數(shù)目。 
TIME      :執(zhí)行的時(shí)間。 
TABLE     :被檢查的表名。 

第四部份-報(bào)錯解決

問題(1)
    01-07T15:19:02 Error checksumming table test.test1: 
    Error executing checksum query: DBD::mysql::st execute failed: Field 'ts' doesn't have a default value 
    [for Statement "REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) 
    SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `select_priv`, `insert_priv`, 
    `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, 
    `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, 
    `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`,
    `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, 
    `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, 
    `password_last_changed` + 0, `password_lifetime`, `account_locked`, CONCAT(ISNULL(`authentication_string`), 
    ISNULL(`password_last_changed`), ISNULL(`password_lifetime`)))) AS UNSIGNED)), 10, 16)), 0) AS crc 
    FROM `test`.`test1` /*checksum table*/" with ParamValues: 0='test', 1='test1', 2=1, 3=undef, 4=undef, 5=undef] 
    at /usr/local/bin/pt-table-checksum line 10305.

    解決
    mysql> alter table checksums modify ts timestamp not null  default current_timestamp

網(wǎng)頁題目:percona-toolkit之pt-table-checksum
網(wǎng)址分享:http://weahome.cn/article/gcoccs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部