成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度解析Percona Toolkit工具集

原創 精選
數據庫
Percona Toolkit是一套專業的MySQL和MariaDB數據庫管理工具,涵蓋了從性能優化到數據同步和備份恢復的多個方面。

作者 | 吳守陽

審校 | 重樓

介紹

Percona Toolkit是一套專業的MySQL和MariaDB數據庫管理工具,涵蓋了從性能優化到數據同步和備份恢復的多個方面。本文將深入探討Percona Toolkit工具集的核心功能和使用場景,幫助你更好地理解和利用這些強大的數據庫工具。

主要功能和用途

性能優化和分析:

  • 使用pt-query-digest分析慢查詢,優化數據庫性能。
  • 使用pt-index-usage檢查和優化索引的使用情況。

數據歸檔:

  • 使用pt-archiver歸檔和清理歷史數據。

數據同步和比較:

  • 使用pt-table-checksum檢查表之間的數據一致性。
  • 使用pt-table-sync在數據庫服務器之間同步表數據。

Schema變更:

  • 使用pt-online-schema-change在線執行表結構更改,避免表鎖定問題。

實用工具:

  • 使用pt-config-diff比較MySQL配置文件的不同之處。
  • 使用pt-mysql-summary生成MySQL服務器的摘要信息,方便日常管理和監控。

Percona Toolkit工具

1.pt-align

作用:對齊查詢輸出,方便人們閱讀和分析。

示例

echo -e "col1 col2\nval1 val2" | pt-align

2.pt-archiver

作用:從MySQL表中歸檔舊數據,以保持表的高性能。

參數:

--limit10000 每次取1000行數據用pt-archive處理
--txn-size 1000 設置1000行為一個事務提交一次
--where‘id<3000‘ 設置操作條件
--progress5000 每處理5000行輸出一次處理信息
--statistics 輸出執行過程及最后的操作統計。(只要不加上--quiet,默認情況下pt-archive都會輸出執行過程的)
--charset=UTF8 指定字符集為UTF8
--bulk-delete 批量刪除source上的舊數據(例如每次1000行的批量刪除操作)
--bulk-insert 批量插入數據到dest主機 (看dest的general log發現它是通過在dest主機上LOAD DATA LOCAL INFILE插入數據的)
--replace 將insert into 語句改成replace寫入到dest庫
--sleep120 每次歸檔了limit個行記錄后的休眠120秒(單位為秒)
--file‘/root/test.txt‘
--purge 刪除source數據庫的相關匹配記錄
--header 輸入列名稱到首行(和--file一起使用)
--no-check-charset 不指定字符集
--check-columns 檢驗dest和source的表結構是否一致,不一致自動拒絕執行(不加這個參數也行。默認就是執行檢查的)
--no-check-columns 不檢驗dest和source的表結構是否一致,不一致也執行(會導致dest上的無法與source匹配的列值被置為null或者0)
--chekc-interval 默認1s檢查一次
--local 不把optimize或analyze操作寫入到binlog里面(防止造成主從延遲巨大)
--retries 超時或者出現死鎖的話,pt-archiver進行重試的間隔(默認1s)
--no-version-check 目前為止,發現部分pt工具對阿里云RDS操作必須加這個參數
--analyze=ds 操作結束后,優化表空間(d表示dest,s表示source)
--no-delete 表示不刪除原來的數據,注意:如果不指定此參數,所有處理完成后,都會清理原表中的數據

示例:

  • 將表中小于2018-07-01時間的數據進行歸檔,不刪除原表記錄pt-archiver --source h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t4 --dest h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t5 --no-check-charset --where 'day<"2018-07-01"' --progress 5000 --no-delete --limit=10000 --statistics
  • 將表中小于2018-07-01時間的數據進行歸檔,刪除原表記錄,優化表空間(因為這種操作費時間,并且需要你提前預估有足夠的磁盤空間用于拷貝表)pt-archiver --source h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t4 --dest h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t5 --no-check-charset --where 'day<"2018-07-01"' --progress 5000 --purge --check-columns --analyze=ds --limit=10000 --statistics
  • 用于把數據導出文件,不用刪除原表中數據 pt-archiver --source h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t4 --no-check-charset --where 'day<"2018-06-01"' --progress 4000 --no-delete --file "/tmp/pt-archiver.dat" --header --limit=10000
  • 將表中小于2018-07-01時間的數據進行歸檔,每10000條一次刪除原表記錄pt-archiver --source h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t4 --dest h=192.168.153.148,P=3306,u=mss,p=mss,D=d1,t=t5 --no-check-charset --where 'day<"2018-07-01"' --progress 5000 --bulk-delete --limit=10000 --statistics
  • 將表中6個月前的數據歸檔pt-archiver --source h=host,D=db,t=table --dest h=host,D=db,t=archive_table --where "created < NOW() - INTERVAL 6 MONTH"

3.pt-config-diff

作用:比較兩個MySQL配置文件并顯示差異。

示例:

pt-config-diff /etc/my.cnf /etc/mysql/my.cnf

4.pt-deadlock-logger

作用:記錄MySQL中的死鎖事件。

參數:

 --ask-pass            Prompt for a password when connecting to MySQL
  --charset=s       -A  Default character set
  --clear-deadlocks=s   Use this table to create a small deadlock
  --columns=A           The columns are: (default server, ts, thread, txn_id,
                        txn_time, user, hostname, ip, db, tbl, idx, lock_type,
                        lock_mode, wait_hold, victim, query)
  --config=A            Read this comma-separated list of config files; if
                        specified, this must be the first option on the command
                        line
  --create-dest-table   Create the table specified by --dest
  --daemonize           Fork to the background and detach from the shell
  --database=s      -D  Connect to this database
  --defaults-file=s -F  Only read mysql options from the given file
  --dest=d              DSN for where to store deadlocks; specify at least a
                        database (D) and table (t)
  --help                Show help and exit
  --host=s          -h  Connect to host
  --interval=m          How often to check for deadlocks (default 30).
                        Optional suffix s=seconds, m=minutes, h=hours, d=days;
                        if no suffix, s is used.
  --iterations=i        How many times to check for deadlocks
  --log=s               Print all output to this file when daemonized
  --numeric-ip          Express IP addresses as integers
  --password=s      -p  Password to use when connecting
  --pid=s               Create the given PID file
  --port=i          -P  Port number to use for connection
  --quiet               Do not deadlocks; only print errors and warnings to
                        STDERR
  --run-time=m          How long to run before exiting.  Optional suffix s=
                        seconds, m=minutes, h=hours, d=days; if no suffix, s is
                        used.
  --set-vars=A          Set the MySQL variables in this comma-separated list of
                        variable=value pairs
  --socket=s        -S  Socket file to use for connection
  --tab                 Use tabs to separate columns instead of spaces
  --user=s          -u  User for login if not current user
  --version             Show version and exit
  --[no]version-check   Check for the latest version of Percona Toolkit, MySQL,
                        and other programs (default yes)

示例:

pt-deadlock-logger h=host1 --iterations 1
pt-deadlock-logger --user=username --password=password
pt-deadlock-logger h=host1 --dest h=host2,D=percona_schema,t=deadlocks

5.pt-diskstats

作用:收集和顯示磁盤I/O統計信息。

示例:

pt-diskstats --devices sda,sdb --interval 1

6.pt-duplicate-key-checker

作用:查找和報告重復的MySQL索引。

參數:

Options:

  --all-structs         Compare indexes with different structs (BTREE, HASH,
                        etc)
  --ask-pass            Prompt for a password when connecting to MySQL
  --charset=s       -A  Default character set
  --[no]clustered       PK columns appended to secondary key is duplicate (
                        default yes)
  --config=A            Read this comma-separated list of config files; if
                        specified, this must be the first option on the command
                        line
  --databases=h     -d  Check only this comma-separated list of databases
  --defaults-file=s -F  Only read mysql options from the given file
  --engines=h       -e  Check only tables whose storage engine is in this comma-
                        separated list
  --help                Show help and exit
  --host=s          -h  Connect to host
  --ignore-databases=H  Ignore this comma-separated list of databases
  --ignore-engines=H    Ignore this comma-separated list of storage engines
  --ignore-order        Ignore index order so KEY(a,b) duplicates KEY(b,a)
  --ignore-tables=H     Ignore this comma-separated list of tables
  --key-types=s         Check for duplicate f=foreign keys, k=keys or fk=both (
                        default fk)
  --password=s      -p  Password to use when connecting
  --pid=s               Create the given PID file
  --port=i          -P  Port number to use for connection
  --set-vars=A          Set the MySQL variables in this comma-separated list of
                        variable=value pairs
  --socket=s        -S  Socket file to use for connection
  --[no]sql             Print DROP KEY statement for each duplicate key (
                        default yes)
  --[no]summary         Print summary of indexes at end of output (default yes)
  --tables=h        -t  Check only this comma-separated list of tables
  --user=s          -u  User for login if not current user
  --verbose         -v  Output all keys and/or foreign keys found, not just
                        redundant ones
  --version             Show version and exit
  --[no]version-check   Check for the latest version of Percona Toolkit, MySQL,
                        and other programs (default yes)

示例:

pt-duplicate-key-checker --user=username --password=password

7.pt-fifo-split

作用:將輸入文件分割成多個文件,并按FIFO順序處理。

示例:

pt-fifo-split --lines 1000 input.txt

8.pt-find

作用:查找和列出符合條件的MySQL表。

示例:

pt-find --user=username --password=password --database=db --engine=InnoDB

9.pt-fingerprint

作用:將SQL查詢規范化為指紋形式,以便對類似查詢進行分組和統計。

參數:

  --match-embedded-numbers  Match numbers embedded in words and replace as
                            single values
  --match-md5-checksums     Match MD5 checksums and replace as single values
  --query=s                 The query to convert into a fingerprint

示例:

pt-fingerprint --query="SELECT * FROM users WHERE id = 123 AND username = 'johndoe';"
輸出:SELECT * FROM users WHERE id = ? AND username = ?;

10.pt-fk-error-logger

作用:記錄MySQL中的外鍵錯誤。

示例:

pt-fk-error-logger --user=username --password=password

11.pt-galera-log-explainer

作用:分析和解釋Galera Cluster的日志文件。

示例:

pt-galera-log-explainer --file /path/to/galera.log

12.pt-heartbeat

作用:監控和報告MySQL復制延遲。

示例:

pt-heartbeat --update --database=test --table=heartbeat --interval=1 --user=username --password=password

13.pt-index-usage

作用:分析和報告MySQL表的索引使用情況。

參數:

--ask-pass 連接到 MySQL 時提示輸入密碼
--charset=s -A 默認字符集
--config=A 讀取這個逗號分隔的配置文件列表;如果指定此選項,它必須是命令行上的第一個選項
--create-save-results-database 如果 --save-results-database 不存在,則創建它
--[no]create-views 為 --save-results-database 示例查詢創建視圖
--database=s -D 連接到的數據庫
--databases=h -d 只從這個逗號分隔的數據庫列表中獲取表和索引
--databases-regex=s 只從名稱匹配這個 Perl 正則表達式的數據庫中獲取表和索引
--defaults-file=s -F 只從指定的文件中讀取 MySQL 選項
--drop=H 僅建議刪除這些類型的未使用索引(默認非唯一)
--empty-save-results-tables 刪除并重新創建 --save-results-database 中所有已存在的表
--help 顯示幫助信息并退出
--host=s -h 連接到的主機
--ignore-databases=H 忽略這個逗號分隔的數據庫列表
--ignore-databases-regex=s 忽略名稱匹配這個 Perl 正則表達式的數據庫
--ignore-tables=H 忽略這個逗號分隔的表名列表
--ignore-tables-regex=s 忽略名稱匹配這個 Perl 正則表達式的表
--password=s -p 連接時使用的密碼
--port=i -P 連接使用的端口號
--progress=a 將進度報告打印到 STDERR(默認 time,30)
--quiet -q 不打印任何警告
--[no]report 打印 --report-format 的報告(默認是)
--report-format=A 目前只有一個報告:drop_unused_indexes(默認 drop_unused_indexes)
--save-results-database=d 將結果保存到這個數據庫的表中
--set-vars=A 在這個逗號分隔的變量=值列表中設置 MySQL 變量
--socket=s -S 連接使用的套接字文件
--tables=h -t 只從這個逗號分隔的表列表中獲取索引
--tables-regex=s 只從名稱匹配這個 Perl 正則表達式的表中獲取索引
--user=s -u 登錄時使用的用戶,如果不是當前用戶
--version 顯示版本信息并退出
--[no]version-check 檢查 Percona Toolkit、MySQL 和其他程序的最新版本(默認是)

示例:

pt-index-usage --user=username --password=password --database=db slow.log

14.pt-ioprofile

作用:記錄并顯示進程的I/O活動。

示例:

pt-ioprofile --pid 1234

15.pt-k8s-debug-collector

作用:收集Kubernetes集群的調試信息。

參數:

--ask-pass 連接到 MySQL 時提示輸入密碼
--charset=s -A 默認字符集
--config=A 讀取這個逗號分隔的配置文件列表;如果指定此選項,它必須是命令行上的第一個選項
--create-save-results-database 如果 --save-results-database 不存在,則創建它
--[no]create-views 為 --save-results-database 示例查詢創建視圖
--database=s -D 連接到的數據庫
--databases=h -d 只從這個逗號分隔的數據庫列表中獲取表和索引
--databases-regex=s 只從名稱匹配這個 Perl 正則表達式的數據庫中獲取表和索引
--defaults-file=s -F 只從指定的文件中讀取 MySQL 選項
--drop=H 僅建議刪除這些類型的未使用索引(默認非唯一)
--empty-save-results-tables 刪除并重新創建 --save-results-database 中所有已存在的表
--help 顯示幫助信息并退出
--host=s -h 連接到的主機
--ignore-databases=H 忽略這個逗號分隔的數據庫列表
--ignore-databases-regex=s 忽略名稱匹配這個 Perl 正則表達式的數據庫
--ignore-tables=H 忽略這個逗號分隔的表名列表
--ignore-tables-regex=s 忽略名稱匹配這個 Perl 正則表達式的表
--password=s -p 連接時使用的密碼
--port=i -P 連接使用的端口號
--progress=a 將進度報告打印到 STDERR(默認 time,30)
--quiet -q 不打印任何警告
--[no]report 打印 --report-format 的報告(默認是)
--report-format=A 目前只有一個報告:drop_unused_indexes(默認 drop_unused_indexes)
--save-results-database=d 將結果保存到這個數據庫的表中
--set-vars=A 在這個逗號分隔的變量=值列表中設置 MySQL 變量
--socket=s -S 連接使用的套接字文件
--tables=h -t 只從這個逗號分隔的表列表中獲取索引
--tables-regex=s 只從名稱匹配這個 Perl 正則表達式的表中獲取索引
--user=s -u 登錄時使用的用戶,如果不是當前用戶
--version 顯示版本信息并退出
--[no]version-check 檢查 Percona Toolkit、MySQL 和其他程序的最新版本(默認是)

示例

pt-k8s-debug-collector --namespace default

16.pt-kill

作用:查找并終止符合條件的MySQL會話。

參數:

- `--ask-pass` 連接到MySQL時提示輸入密碼
- `--charset=s -A` 默認字符集
- `--config=A` 讀取這個以逗號分隔的配置文件列表;如果指定,這必須是命令行上的第一個選項
- `--create-log-table` 如果不存在,創建--log-dsn表
- `--daemonize` 后臺運行并從shell分離
- `--database=s -D` 用于連接的數據庫
- `--defaults-file=s -F` 僅從指定文件讀取MySQL選項
- `--filter=s` 丟棄該Perl代碼未返回true的事件
- `--group-by=s` 將匹配應用于按此SHOW PROCESSLIST列分組的每類查詢
- `--help` 顯示幫助并退出
- `--host=s -h` 連接到主機(默認localhost)
- `--interval=m` 檢查要殺死的查詢的頻率。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--json` 以JSON格式打印已殺死的查詢,必須與--print一起使用
- `--json-fields=s` 指定在使用--json時要包含在JSON輸出中的額外鍵值對列表,參數值的格式必須為:
- `--kill-busy-commands=s` 組:操作(默認Query)
- `--log=s` 在后臺運行時將所有輸出打印到該文件
- `--log-dsn=d` 將每個被殺死的查詢存儲在此DSN中
- `--password=s -p` 連接時使用的密碼
- `--pid=s` 創建給定的PID文件
- `--port=i -P` 用于連接的端口號
- `--query-id` 打印剛被殺死的查詢的ID
- `--rds` 表示問題實例位于Amazon RDS上
- `--run-time=m` 運行多長時間后退出。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--sentinel=s` 如果此文件存在則退出(默認/tmp/pt-kill-sentinel)
- `--set-vars=A` 在這個以逗號分隔的變量=值對列表中設置MySQL變量
- `--slave-password=s` 設置用于連接從庫的密碼
- `--slave-user=s` 設置用于連接從庫的用戶
- `--socket=s -S` 用于連接的套接字文件
- `--stop` 通過創建--sentinel文件停止運行實例
- `--[no]strip-comments` 從PROCESSLIST的Info列中移除SQL注釋(默認yes)
- `--user=s -u` 登錄用戶(如果不是當前用戶)
- `--verbose -v` 打印正在執行的操作信息到STDOUT
- `--version` 顯示版本并退出
- `--[no]version-check` 檢查Percona Toolkit、MySQL和其他程序的最新版本(默認yes)
- `--victims=s` 每類匹配的查詢中將被殺死的查詢(默認oldest)
- `--wait-after-kill=m` 殺死一個查詢后等待,然后再查找更多要殺死的查詢。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--wait-before-kill=m` 殺死一個查詢前等待。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s

操作:

- `--execute-command=s` 當查詢匹配時執行此命令
- `--fingerprint` 修改--print行為,強制顯示查詢指紋而不是原始查詢
- `--kill` 殺死匹配查詢的連接
- `--kill-query` 殺死匹配查詢
- `--print` 打印匹配查詢的KILL語句;不實際殺死查詢

類匹配:

- `--any-busy-time=m` 如果任何查詢運行時間超過此時間,則匹配查詢類。“超過”意味著如果您指定10秒,例如,只有在至少有一個查詢運行時間超過10秒時,類才會匹配。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--each-busy-time=m` 如果每個查詢運行時間超過此時間,則匹配查詢類。“超過”意味著如果您指定10秒,例如,只有當每個查詢運行時間超過10秒時,類才會匹配。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--query-count=i` 如果類中至少有這么多查詢,則匹配查詢類

查詢匹配:

- `--busy-time=m` 匹配運行時間超過此時間的查詢。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--idle-time=m` 匹配空閑/睡眠時間超過此時間的查詢。可選后綴s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用s
- `--ignore-command=s` 忽略Command匹配此Perl正則表達式的查詢
- `--ignore-db=s` 忽略db(數據庫)匹配此Perl正則表達式的查詢
- `--ignore-host=s` 忽略Host匹配此Perl正則表達式的查詢
- `--ignore-info=s` 忽略Info(查詢)匹配此Perl正則表達式的查詢
- `--[no]ignore-self` 不要殺死pt-kill自己的連接(默認yes)
- `--ignore-state=s` 忽略State匹配此Perl正則表達式的查詢(默認Locked)
- `--ignore-user=s` 忽略User匹配此Perl正則表達式的查詢
- `--match-all` 匹配所有未被忽略的查詢
- `--match-command=s` 僅匹配Command匹配此Perl正則表達式的查詢
- `--match-db=s` 僅匹配db(數據庫)匹配此Perl正則表達式的查詢
- `--match-host=s` 僅匹配Host匹配此Perl正則表達式的查詢
- `--match-info=s` 僅匹配Info(查詢)匹配此Perl正則表達式的查詢
- `--match-state=s` 僅匹配State匹配此Perl正則表達式的查詢
- `--match-user=s` 僅匹配User匹配此Perl正則表達式的查詢
- `--replication-threads` 允許匹配和殺死復制線程
- `--test-matching=a` 包含PROCESSLIST快照的文件,以測試匹配選項

示例:

pt-kill --busy-time 60 --user=username --password=password

17.pt-mext

作用:擴展Percona Toolkit的功能,通過加載外部模塊。

示例:

pt-mext /path/to/module.pm

18.pt-mongodb-index-check

作用:檢查MongoDB中的索引并報告不必要的索引。

參數:

- `-h, --help` 顯示上下文相關的幫助信息
- `--version` 顯示版本信息
- `--all-databases` 檢查所有數據庫(不包括系統數據庫)
- `--databases=DATABASES,...` 要檢查的數據庫列表,用逗號分隔
- `--all-collections` 檢查選定數據庫中的所有集合
- `--collections=COLLECTIONS,...` 要檢查的集合列表,用逗號分隔
- `--mongodb.uri=mongodb://host:port/admindb?options` 連接URI
- `--json` 以JSON格式顯示輸出

示例:

pt-mongodb-index-check --uri mongodb://localhost:27017

19.pt-mongodb-query-digest

作用:分析和報告MongoDB查詢日志。

示例:

pt-mongodb-query-digest /path/to/mongodb.log

20.pt-mongodb-summary

作用:提供MongoDB服務器的摘要信息。

示例:

pt-mongodb-summary --uri mongodb://localhost:27017

21.pt-mysql-summary

作用:提供MySQL服務器的摘要信息。

示例:

pt-mysql-summary --user=username --password=password

22.pt-online-schema-change

作用:在線修改MySQL表的結構,而不會造成服務中斷。

參數:

- `--alter=s` 進行架構修改,不包括 ALTER TABLE 關鍵字
- `--alter-foreign-keys-method=s` 修改外鍵引用新表的方法
- `--[no]analyze-before-swap` 在交換新舊表之前對新表執行 ANALYZE TABLE(默認是)
- `--ask-pass` 連接 MySQL 時提示輸入密碼
- `--channel=s` 使用復制通道連接服務器時使用的通道名稱
- `--charset=s, -A` 默認字符集
- `--[no]check-alter` 解析指定的 --alter 并嘗試警告可能的意外行為(默認是)
- `--[no]check-foreign-keys` 檢查自引用外鍵(默認是)
- `--check-interval=m` 檢查 --max-lag 之間的休眠時間(默認 1),可選后綴 s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用 s
- `--[no]check-plan` 檢查查詢執行計劃的安全性(默認是)
- `--[no]check-replication-filters` 如果在任何服務器上設置了任何復制過濾器,則中止(默認是)
- `--check-slave-lag=s` 暫停數據復制,直到此副本的延遲小于 --max-lag
- `--[no]check-unique-key-change` 如果 --alter 指定的語句嘗試添加唯一索引,則避免 pt-online-schema-change 運行(默認是)
- `--chunk-index=s` 為塊表選擇優先的索引
- `--chunk-index-columns=i` 使用 --chunk-index 的最多左列數
- `--chunk-size=z` 每個復制塊選擇的行數(默認 1000)
- `--chunk-size-limit=f` 不要復制比期望塊大小大很多的塊(默認 4.0)
- `--chunk-time=f` 動態調整塊大小,以便每個數據復制查詢執行時間為該值(默認 0.5)
- `--config=A` 讀取此逗號分隔的配置文件列表;如果指定,則必須是命令行上的第一個選項
- `--critical-load=A` 在每個塊之后檢查 SHOW GLOBAL STATUS,并在負載過高時中止(默認 Threads_running=50)
- `--data-dir=s` 使用 DATA DIRECTORY 特性在不同分區上創建新表
- `--database=s, -D` 連接到此數據庫
- `--default-engine` 從新表中刪除 ENGINE
- `--defaults-file=s, -F` 僅從給定文件讀取 MySQL 選項
- `--[no]drop-new-table` 如果復制原始表失敗,則刪除新表(默認是)
- `--[no]drop-old-table` 重命名原始表后刪除它(默認是)
- `--[no]drop-triggers` 刪除舊表上的觸發器。--no-drop-triggers 強制 --no-drop-old-table(默認是)
- `--dry-run` 創建并修改新表,但不創建觸發器、復制數據或替換原始表
- `--execute` 表明您已閱讀文檔并希望修改表
- `--[no]fail-on-stopped-replication` 如果復制停止,則失敗并顯示錯誤(退出狀態 128),而不是等待復制重新啟動(默認是)
- `--force` 如果使用 alter-foreign-keys-method=none 可能會破壞外鍵約束,此選項將繞過確認
- `--help` 顯示幫助并退出
- `--host=s, -h` 連接到主機
- `--max-flow-ctl=f` 類似于 --max-lag 但用于 PXC 集群
- `--max-lag=m` 暫停數據復制,直到所有副本的延遲小于此值(默認 1s)。可選后綴 s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,則使用 s
- `--max-load=A` 在每個塊之后檢查 SHOW GLOBAL STATUS,并在任何狀態變量超過其閾值時暫停(默認 Threads_running=25)
- `--new-table-name=s` 在交換前的新表名稱。%T 替換為原始表名稱(默認 %T_new)
- `--null-to-not-null` 允許將允許 NULL 值的列修改為不允許 NULL 值的列
- `--only-same-schema-fks` 僅檢查與原始表位于同一模式的外鍵
- `--password=s, -p` 連接時使用的密碼
- `--pause-file=s` 當指定的文件存在時,執行將暫停
- `--pid=s` 創建給定的 PID 文件
- `--plugin=s` 定義 pt_online_schema_change_plugin 類的 Perl 模塊文件
- `--port=i, -P` 使用的連接端口號
- `--preserve-triggers` 保留舊觸發器
- `--print` 將 SQL 語句打印到 STDOUT
- `--progress=a` 復制行時將進度報告打印到 STDERR(默認 time,30)
- `--quiet, -q` 不打印消息到 STDOUT(禁用 --progress)
- `--recurse=i` 發現副本時遞歸的層次數
- `--recursion-method=a` 發現副本的首選遞歸方法(默認 processlist,hosts)
- `--remove-data-dir` 如果原始表是使用 DATA DIRECTORY 特性創建的,則刪除它,并在 MySQL 默認目錄中創建新表而不創建新的 isl 文件(默認否)
- `--reverse-triggers` 警告!此選項在開始復制之前在新表上創建反向觸發器
- `--set-vars=A` 在此逗號分隔的變量=值對列表中設置 MySQL 變量
- `--skip-check-slave-lag=d` 檢查從庫延遲時跳過的 DSN
- `--slave-password=s` 設置連接從庫時使用的密碼
- `--slave-user=s` 設置連接從庫時使用的用戶
- `--sleep=f` 復制每個塊后休眠的時間(以秒為單位)(默認 0)
- `--socket=s, -S` 使用的連接套接字文件
- `--statistics` 打印內部計數器的統計信息
- `--[no]swap-tables` 交換原始表和新的修改表(默認是)
- `--tries=a` 嘗試關鍵操作的次數
- `--user=s, -u` 登錄用戶(如果不是當前用戶)
- `--version` 顯示版本并退出
- `--[no]version-check` 檢查 Percona Toolkit、MySQL 和其他程序的最新版本(默認是)

示例:

pt-online-schema-change --user=username --password=password --alter "ADD COLUMN new_col INT" D=db,t=table

23.pt-pg-summary

作用:提供PostgreSQL服務器的摘要信息。

示例:

pt-pg-summary

24.pt-pmp

作用:生成進程的MySQL性能剖析報告。

示例:

pt-pmp --pid 1234

25.pt-query-digest

作用:分析和匯總MySQL查詢日志,以找出慢查詢和高負載查詢。

參數:

--ask-pass                   提示輸入連接到MySQL時的密碼
--attribute-aliases=a        屬性|別名列表,默認為 db|Schema
--attribute-value-limit=i    屬性值的合理限制,默認為 0
--charset=s              -A  默認字符集
--config=A                   讀取此逗號分隔的配置文件列表;如果指定,必須作為命令行的第一個選項
--[no]continue-on-error      即使出現錯誤也繼續解析,默認為 yes
--[no]create-history-table   如果不存在,則創建 --history 表,默認為 yes
--[no]create-review-table    如果不存在,則創建 --review 表,默認為 yes
--daemonize                  后臺運行并從 shell 中分離出來
--database=s             -D  連接到此數據庫
--defaults-file=s        -F  僅從給定文件中讀取 MySQL 選項
--embedded-attributes=a      兩個 Perl 正則表達式模式,用于捕獲嵌入在查詢中的偽屬性
--expected-range=a           當條目多于或少于預期時解釋條目,默認為 5,10
--explain=d                  使用此 DSN 運行對示例查詢的 EXPLAIN 并打印結果
--filter=s                   丟棄此 Perl 代碼返回 false 的事件
--group-by=A                 按此屬性的事件分組,默認為 fingerprint
--help                       顯示幫助并退出
--history=d                  保存每個查詢類的指標到指定表中
--host=s                 -h  連接到此主機
--ignore-attributes=a        不聚合這些屬性,默認為 arg, cmd, insert_id, ip, port, Thread_id, timestamp, exptime, flags, key, res, val, server_id, offset, end_log_pos, Xid
--inherit-attributes=a       如果丟失,則從最后一個擁有它們的事件繼承這些屬性,默認為 db,ts
--interval=f                 查詢進程列表的輪詢頻率,單位為秒,默認為 0.1
--iterations=i               循環收集和報告的次數,默認為 1
--limit=A                    限制輸出到給定的百分比或計數,默認為 95%:20
--log=s                      當守護程序時將所有輸出打印到此文件
--max-hostname-length=i      在報告中截斷主機名到此長度,0=不截斷,默認為 10
--max-line-length=i          在報告中截斷行到此長度,0=不截斷,默認為 74
--order-by=A                 按此屬性和聚合函數排序事件,默認為 Query_time:sum
--outliers=a                 按屬性:百分位:計數報告異常值,默認為 Query_time:1:10
--output=s                   如何格式化和打印查詢分析結果,默認為 report
--password=s             -p  連接時使用的密碼
--pid=s                      創建指定的 PID 文件
--port=i                 -P  連接使用的端口號
--preserve-embedded-numbers  在指紋查詢時保留數據庫/表名中的數字
--processlist=d              使用此 DSN 的進程列表輪詢查詢,默認間隔為 sleep
--progress=a                 打印進度報告到 STDERR,默認為 time,30
--read-timeout=m             等待輸入事件的時間,默認為 0,可選的后綴 s=秒,m=分鐘,h=小時,d=天
--[no]report                 打印每個 --group-by 屬性的查詢分析報告,默認為 yes
--report-all                 報告所有查詢,甚至已經審查過的
--report-format=A            打印查詢分析報告的這些部分,默認為 rusage,date,hostname,files,header,profile,query_report,prepared
--report-histogram=s         繪制此屬性值的分布圖,默認為 Query_time
--resume=s                   如果指定,工具將上次的文件偏移量寫入指定的文件名
--review=d                   保存查詢類以供稍后審查,并不報告已經審查過的類
--run-time=m                 每次迭代運行的時間,默認為時鐘,可選的后綴 s=秒,m=分鐘,h=小時,d=天
--run-time-mode=s            設置 --run-time 操作的值,默認為 clock
--sample=i                   過濾每個查詢的前 N 個事件,默認為 0
--set-vars=A                 設置這些 MySQL 變量的值,以逗號分隔的變量=值對
--show-all=H                 顯示這些屬性的所有值
--since=s                    解析此日期之后的查詢,默認為解析自此日期起的查詢
--slave-password=s           設置用于連接到從服務器的密碼
--slave-user=s               設置用于連接到從服務器的用戶
--socket=s               -S  使用的連接套接字文件
--timeline                   顯示事件的時間線
--type=A                     解析的輸入類型,默認為 slowlog
--until=s                    解析此日期之前的查詢,默認為解析直到此日期的查詢
--user=s                 -u  登錄時使用的用戶,如果不是當前用戶
--variations=A               報告這些屬性值的變化數量
--version                    顯示版本并退出
--[no]version-check          檢查 Percona Toolkit、MySQL 和其他程序的最新版本,默認為 yes
--[no]vertical-format        在報告的 SQL 查詢中輸出一個尾隨 "\G",默認為 yes
--watch-server=s             告訴 pt-query-digest 解析 tcpdump 時觀察的服務器 IP 地址和端口(例如 "10.0.0.1:3306");忽略所有其他服務器
```

示例:

pt-query-digest /path/to/slow.log

26.pt-secure-collect

作用:收集和報告MySQL的安全信息。

示例:

pt-secure-collect --user=username --password=password

27.pt-show-grants

作用:顯示MySQL用戶的權限。

示例:

pt-show-grants --user=username --password=password

28.pt-sift

作用:收集和分析MySQL服務器的性能數據。

示例:

pt-sift --user=username --password=password

29.pt-slave-delay

作用:延遲MySQL復制以創建時間點恢復的機會。

示例:

pt-slave-delay --delay 1h --user=username --password=password

30.pt-slave-find

作用:查找MySQL復制拓撲中的所有從庫。

示例:

pt-slave-find --user=username --password=password

31.pt-slave-restart

作用:監控并自動重啟MySQL復制從庫。

示例:

pt-slave-restart --user=username --password=password

32.pt-stalk

作用:在檢測到MySQL服務器的問題時收集診斷數據。

示例:

pt-stalk --user=username --password=password

33.pt-summary

作用:提供MySQL服務器的摘要信息。

示例:

pt-summary

34.pt-table-checksum

作用:生成MySQL表的校驗和以檢測復制中的數據差異。

參數:

--binary-index                   修改 --create-replicate-table 行為,使復制表的上限和下限列使用 BLOB 數據類型
--channel=s                      連接到服務器時使用的復制通道名稱
--[no]check-binlog-format        檢查所有服務器的 binlog_format 是否相同(默認為 yes)
--[no]check-plan                 檢查查詢執行計劃是否安全(默認為 yes)
--chunk-index=s                  首選用于分塊表的索引
--chunk-index-columns=i          使用索引的左側這么多列來分塊表
--chunk-size=z                   每個校驗查詢選擇的行數(默認為 1000)
--chunk-time=f                   動態調整分塊大小,使每個校驗查詢執行時間為指定秒數(默認為 0.5)
--[no]create-replicate-table     如果不存在,則創建 --replicate 數據庫和表(默認為 yes)
--disable-qrt-plugin             禁用 QRT(查詢響應時間)插件(如果已啟用)
--[no]empty-replicate-table      在對表進行校驗之前刪除先前的校驗結果(默認為 yes)
--fail-on-stopped-replication    如果復制已停止,則報錯退出(退出狀態碼 128),而不是等待復制重新啟動
--float-precision=i              FLOAT 和 DOUBLE 數字到字符串轉換的精度
--function=s                     校驗和的哈希函數(FNV1A_64、MURMUR_HASH、SHA1、MD5、CRC32 等)
--pause-file=s                   當指定的文件存在時,執行將暫停
--pid=s                          創建指定的 PID 文件
--plugin=s                       定義 pt_table_checksum_plugin 類的 Perl 模塊文件
--progress=a                     將進度報告打印到 STDERR(默認為 time,30)
--quiet                      -q  僅打印最重要的信息(禁用 --progress)(默認為 0)
--recurse=i                      在發現復制時遞歸的層級數
--recursion-method=a             發現復制時的首選遞歸方法(默認為 processlist,hosts)
--replicate=s                    將校驗結果寫入此表(默認為 percona.checksums)
--[no]replicate-check            在完成每個表后,檢查復制是否存在數據差異(默認為 yes)
--replicate-check-only           僅檢查復制是否一致,而不執行校驗查詢
--replicate-check-retries=i      當遇到差異時,重試校驗比較此次數(默認為 1)
--replicate-database=s           僅使用此數據庫
--resume                         從上次完成的塊繼續校驗(禁用 --[no]empty-replicate-table)
--retries=i                      當遇到非致命錯誤時,重試此次數(默認為 2)
--run-time=m                     運行時間,可選的后綴 s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,默認為 s
--separator=s                    用于 CONCAT_WS() 的分隔符字符(默認為 #)
--skip-check-slave-lag=d         跳過檢查從庫延遲的 DSN
--slave-password=s               設置用于連接到從庫的密碼
--slave-skip-tolerance=f         當一個主表標記為僅在一個塊中進行校驗,但從庫表超過此的最大接受大小時,跳過此表(默認為 1.0)
--slave-user=s                   設置用于連接到從庫的用戶
--trim                           對 VARCHAR 列添加 TRIM()(在比較 4.1 和 >= 5.0 時有幫助)
--truncate-replicate-table       在開始校驗之前截斷復制表
--[no]version-check              檢查最新版本的 Percona Toolkit、MySQL 和其他程序(默認為 yes)
--where=s                        僅執行匹配此 WHERE 子句的行

Config:
--config=A                       讀取此逗號分隔的配置文件列表;如果指定,必須作為命令行的第一個選項

Connection:
--ask-pass                       連接到 MySQL 時提示輸入密碼
--defaults-file=s            -F  僅從給定文件中讀取 MySQL 選項
--host=s                     -h  要連接的主機(默認為 localhost)
--password=s                 -p  連接時使用的密碼
--port=i                     -P  連接使用的端口號
--set-vars=A                     設置這些 MySQL 變量的值,以逗號分隔的變量=值對
--socket=s                   -S  使用的連接套接字文件
--user=s                     -u  如果不是當前用戶,則登錄使用的用戶

Filter:
--columns=a                  -c  僅校驗此逗號分隔的列
--databases=h                -d  僅校驗此逗號分隔的數據庫
--databases-regex=s              僅校驗數據庫名稱與此 Perl 正則表達式匹配的數據庫
--engines=h                  -e  僅校驗使用這些存儲引擎的表
--ignore-columns=H               在計算校驗和時忽略此逗號分隔的列
--ignore-databases=H             忽略此逗號分隔的數據庫
--ignore-databases-regex=s       忽略名稱與此 Perl 正則表達式匹配的數據庫
--ignore-engines=H               忽略此逗號分隔的存儲引擎(默認為 FEDERATED,MRG_MyISAM)
--ignore-tables=H                忽略此逗號分隔的表
--ignore-tables-regex=s          忽略名稱與此 Perl 正則表達式匹配的表
--tables=h                   -t  僅校驗此逗號分隔的表
--tables-regex=s                 僅校驗名稱與此 Perl 正則表達式匹配的表

示例:

pt-table-checksum --user=username --password=password

35.pt-table-sync

作用:同步MySQL表的數據,以修復復制中的數據差異。

參數:

--algorithms=s              比較表時使用的算法優先級順序(默認為 Chunk,Nibble,GroupBy,Stream)
--ask-pass                  連接到 MySQL 時提示輸入密碼
--bidirectional             啟用第一個和后續主機之間的雙向同步
--[no]bin-log               記錄到二進制日志(SET SQL_LOG_BIN=1)(默認為 yes)
--buffer-in-mysql           指示 MySQL 在其內存中緩沖查詢
--[no]buffer-to-client      在比較時逐行從 MySQL 獲取行(默認為 yes)
--channel=s                 連接到使用復制通道的服務器時的通道名稱
--charset=s             -A  默認字符集
--[no]check-child-tables    檢查 --execute 是否會對子表產生不利影響(默認為 yes)
--[no]check-master          使用 --sync-to-master 時,嘗試驗證檢測到的主服務器是否真正是主服務器(默認為 yes)
--[no]check-slave           檢查目標服務器是否為從服務器(默認為 yes)
--[no]check-triggers        檢查目標表上是否定義了觸發器(默認為 yes)
--chunk-column=s            使用此列對表進行分塊
--chunk-index=s             使用此索引對表進行分塊
--chunk-size=s              每個分塊的行數或數據大小(默認為 1000)
--columns=a             -c  僅比較此逗號分隔的列
--config=A                  讀取此逗號分隔的配置文件列表;如果指定,必須作為命令行的第一個選項
--conflict-column=s         在雙向同步期間,當行沖突時比較此列
--conflict-comparison=s     選擇具有此屬性的 --conflict-column 作為源
--conflict-error=s          如何報告無法解決的沖突和沖突錯誤(默認為 warn)
--conflict-threshold=s      一個 --conflict-column 必須超過另一個的量
--conflict-value=s          對于某些 --conflict-comparison,使用此值
--databases=h           -d  僅同步此逗號分隔的數據庫
--defaults-file=s       -F  僅從給定文件中讀取 MySQL 選項
--dry-run                   分析,確定要使用的同步算法,打印并退出
--engines=h             -e  僅同步使用此逗號分隔的存儲引擎的表
--execute                   執行查詢以使表具有相同的數據
--explain-hosts             打印連接信息并退出
--float-precision=i         FLOAT 和 DOUBLE 數字到字符串轉換的精度
--[no]foreign-key-checks    啟用外鍵檢查(SET FOREIGN_KEY_CHECKS=1)(默認為 yes)
--function=s                用于校驗和的哈希函數
--help                      顯示幫助信息并退出
--[no]hex-blob              HEX() BLOB、TEXT 和 BINARY 列(默認為 yes)
--host=s               -h  要連接的主機
--ignore-columns=H          在比較中忽略此逗號分隔的列名
--ignore-databases=H        忽略此逗號分隔的數據庫
--ignore-engines=H          忽略此逗號分隔的存儲引擎(默認為 FEDERATED,MRG_MyISAM)
--ignore-tables=H           忽略此逗號分隔的表
--[no]index-hint            在分塊和行查詢中添加 FORCE/USE INDEX 提示(默認為 yes)
--lock=i                    鎖定表:0=無,1=每個同步周期,2=每個表,3=全局
--lock-and-rename           鎖定源和目標表,同步后交換名稱
--password=s            -p  連接時使用的密碼
--pid=s                     創建指定的 PID 文件
--port=i                -P  連接使用的端口號
--print                     打印解決差異的查詢
--recursion-method=a        用于查找從服務器的首選遞歸方法(默認為 processlist,hosts)
--replace                   將所有 INSERT 和 UPDATE 語句寫為 REPLACE
--replicate=s               同步在此表中列出為不同的表
--set-vars=A                設置此逗號分隔的變量=值對的 MySQL 變量
--slave-password=s          設置用于連接到從服務器的密碼
--slave-user=s              設置用于連接到從服務器的用戶
--socket=s             -S  使用的連接套接字文件
--sync-to-master            將 DSN 視為從服務器,并將其同步到其主服務器
--tables=h             -t  僅同步此逗號分隔的表
--timeout-ok                如果 --wait 失敗,則繼續
--[no]transaction           使用事務而不是 LOCK TABLES
--trim                      在 BIT_XOR 和 ACCUM 模式下 TRIM() VARCHAR 列
--[no]unique-checks         啟用唯一鍵檢查(SET UNIQUE_CHECKS=1)(默認為 yes)
--user=s               -u  如果不是當前用戶,則登錄使用的用戶
--verbose               -v  打印同步操作的結果
--version                   顯示版本信息并退出
--[no]version-check         檢查最新版本的 Percona Toolkit、MySQL 和其他程序(默認為 yes)
--wait=m               -w  等待從服務器追上它們的主服務器的時間。可選的后綴 s=秒,m=分鐘,h=小時,d=天;如果沒有后綴,默認為 s
--where=s                   WHERE 子句,用于將同步限制為表的一部分
--[no]zero-chunk            添加一個用于具有零或等效于零值的行的分塊(默認為 yes)

示例:

pt-table-sync --user=username --password=password

36.pt-table-usage

作用:分析MySQL查詢日志以報告表的使用情況。

示例:

pt-table-usage --user=username --password=password slow.log

37.pt-upgrade

作用:分析MySQL查詢日志以檢測升級到新版本后的潛在問題。

示例:

pt-upgrade --user=username --password=password /path/to/slow.log

38.pt-variable-advisor

作用:檢查MySQL服務器的變量設置,并給出優化建議。

示例:

pt-variable-advisor --user=username --password=password

39.pt-visual-explain

作用:生成MySQL查詢計劃的可視化解釋。

示例:

pt-visual-explain "SELECT * FROM users WHERE id = 1"

注意事項

  • 安全性:使用工具時需謹慎,避免對生產環境造成負面影響。
  • 版本兼容性:確保工具版本與MySQL版本兼容。
  • 配置文件:使用配置文件能夠方便地管理和調整參數。

總結

Percona Toolkit工具集是管理和優化MySQL和MariaDB數據庫的強大工具,能夠幫助數據庫管理員和開發人員提升工作效率,優化數據庫性能,確保數據的完整性和一致性。通過本文的介紹和解析,相信你能更全面地理解和應用這些工具,從而更好地管理和維護數據庫系統。

作者介紹

吳守陽,51CTO社區編輯,擁有8年DBA工作經驗,熟練管理MySQL、Redis、MongoDB等開源數據庫。精通性能優化、備份恢復和高可用性架構設計。善于故障排除和自動化運維,保障系統穩定可靠。具備良好的團隊合作和溝通能力,致力于為企業提供高效可靠的數據庫解決方案。

責任編輯:華軒 來源: 51CTO
相關推薦

2015-07-28 17:51:07

2015-03-04 14:12:58

數據庫mysql工作量

2009-07-31 16:21:23

ibmdwToolkit

2024-05-06 00:00:00

GAC代碼緩存

2025-04-02 03:55:00

MCPAI智能體

2024-09-09 00:00:07

2023-02-24 07:48:20

PHPGo服務

2024-01-11 12:14:31

Async線程池任務

2011-06-24 12:50:37

OracleMySQLMySQL Migra

2023-03-27 08:12:40

源碼場景案例

2023-10-10 11:02:00

LSM Tree數據庫

2013-12-09 10:34:12

2023-03-06 11:13:20

Spring注解加載

2023-03-13 08:12:25

@DependsOn源碼場景

2009-12-10 09:15:52

Google Web GWT 2.0

2019-03-06 09:55:54

Python 開發編程語言

2009-12-14 17:14:08

Ruby文件操作

2011-06-27 09:15:21

QT Creator

2011-07-29 15:09:48

iPhone Category

2011-07-01 14:39:08

Qt Quick
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频1区| 亚洲精品国产电影 | 午夜日韩视频 | 精品久久久久久久久久久下田 | 毛片一级片 | 91在线视频国产 | 日韩一二区 | 久久久久久高潮国产精品视 | 国产在线观看av | 人人澡视频| 国产传媒在线观看 | 黄色网址在线免费播放 | 一区在线免费视频 | 久艹网站 | japanhd成人 | 精品国产乱码久久久久久蜜退臀 | 精品免费国产一区二区三区 | 婷婷久| 天天操夜夜爽 | 毛片1| 欧美日韩专区 | 91国内精精品久久久久久婷婷 | 精品国产乱码久久久久久丨区2区 | 国产精品免费视频一区 | 欧美日韩精品在线免费观看 | 91久久久久久久久久久 | 精品国产不卡一区二区三区 | 国产亚洲欧美另类一区二区三区 | 日韩一区二 | 亚洲国产欧美在线 | 欧美精品一区二区三区在线播放 | 狠狠干天天干 | 亚洲女人天堂成人av在线 | 一区二区三区亚洲 | 日本在线观看视频 | 亚洲在线一区二区 | 欧美一级艳情片免费观看 | 国产精品欧美一区二区三区 | 国产精品18久久久久久久 | 高清一区二区三区 | 免费观看一级视频 |