设为首页 加入收藏

TOP

Percona-Toolkit 之 pt-online-schema-change 总结(四)
2019-09-17 18:54:07 】 浏览:177
Tags:Percona-Toolkit pt-online-schema-change 总结
================================ 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

使用限制

  1. 要求需要执行变更的表有主键(Primary key)或唯一索引(Unique index),否则工具会执行失败,参考选项--alter说明;
  2. 如果检测到表有外键约束(Foreign key),工具除非选项--alter-foreign-keys-method,否则不会执行变更;
  3. 如果检测到主从复制中存在过滤,则工具不会执行,参考选项--[no]check-replication-filters说明;
  4. 如果检测到主从复制有延迟,则工具有可能会暂停数据拷贝,参考选项--max-lag说明;
  5. 如果检测到连接当前服务器负载过高,则工具有可能暂停执行或中止退出,参考选项--max-load--critical-load说明。

用法示例

  • 测试数据准备

本文基于MySQL官方示例数据库employeeExample 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
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/11/11
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[MySQL] mysql int后面的数字与前.. 下一篇MongoDB数据库发展历程及商业模式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目