================================
processlist SHOW PROCESSLIST
hosts SHOW SLAVE HOSTS
dsn=DSN DSNs from a table
none Do not find slaves
==========================================================
processlist:通过SHOW PROCESSLIST方式找到slave,为默认方式,当SHOW SLAVE HOSTS不可用时。一旦实例运行在非3306端口上时,hosts方式就会变为默认方式;
hosts:通过SHOW SLAVE HOSTS方式找到slave,hosts方式要求从库配置'--report_host'和'--report_port'这两个参数;
dsn:通过读取表中从库的DSN信息进行连接。
--recurse
指定搜寻从库的层级,默认无限级。
--set-vars
默认:
wait_timeout=10000
innodb_lock_wait_timeout=1
lock_wait_timeout=60
运行检查时指定参数值,如有多个用','(逗号)分隔。如`--set-vars=wait_timeout=5000`。
--sleep
默认值:0s
指定表变更拷贝数据时的间隔时间。
--print
打印工具执行过程中的语句到STDOUT。可以结合'--dry-run'一起使用。
--progress
打印工具执行过程的进度提示到STDERR。选项值有两部分组成,用逗号进行分隔,第一部分为百分比,时间和迭代。第二部分为根据第一部分数据更新频率,也分为百分比,时间和迭代。
--quiet,-q
不打印工具执行过程的信息到STDOUT(禁用'--progress')。但错误和警告还是打印到STDERR。
--statistics
打印内部计数的统计信息。
--version
显示工具的版本并退出。
--[no]version-check
默认值:yes
检查Percona Toolkit、MySQL和其他程序的最新版本。
DSN选项(DSN)
可以使用DSN方式来连接数据库,DSN选项为key=value
方式,在等号的两侧不能有空格出现,并且区分大小写,多个选项之前以','(逗号)隔开,主要选项如下:
- A
指定字符集
- D
指定变更表所在数据库
- t
指定需要变更的表
- h
指定要连接的HOST
- P
指定要连接的PORT
- S
指定连接所使用的SOCKET文件(Unix systems)
- u
指定连接的用户名
- p
指定连接的用户名密码
示例:
h=192.168.58.3,P=3306,D=employees,t=employees
使用限制
- 要求需要执行变更的表有主键(Primary key)或唯一索引(Unique index),否则工具会执行失败,参考选项
--alter
说明;
- 如果检测到表有外键约束(Foreign key),工具除非选项
--alter-foreign-keys-method
,否则不会执行变更;
- 如果检测到主从复制中存在过滤,则工具不会执行,参考选项
--[no]check-replication-filters
说明;
- 如果检测到主从复制有延迟,则工具有可能会暂停数据拷贝,参考选项
--max-lag
说明;
- 如果检测到连接当前服务器负载过高,则工具有可能暂停执行或中止退出,参考选项
--max-load
各--critical-load
说明。
用法示例
本文基于MySQL官方示例数据库employee:Example Databases进行测试。
-- employees:
mysql root@localhost:employees> show create table employees\G;
***************************[ 1. row ]***************************
Table | employees
Create Table | CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` enum('M','F') NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`),
KEY `idx_first_last` (`first_name`,`last_name`),
KEY `idx_birth_hire` (`birth_date`,`hire_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set
Time: 0.008s
-- dept_emp:
mysql root@localhost:employees> show create table dept_emp\G;
***************************[ 1. row ]***************************
Table | dept_emp
Create Table | CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`),
KEY `dept_no` (`dept_no`),
CONSTRAINT `dept_emp_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE,
CONSTRAINT `dept_emp_ibfk_2` FOREIGN KEY (`dept_no`) REFERENCES `departments` (`dept_no`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set
Time: 0.010s
-- departments:
mysql root@localhost:employees> show create table departments\G;
***************************[ 1. row ]***************************
Table | departments
Create Table | CREATE TABLE `departments` (
`dept_no` char(4) NOT NULL,
`dept_name` varchar(40) NOT NULL,
PRIMARY KEY (`dept_no`),
UNIQUE KEY `dept_name` (`dept_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8