pt-online-schema-change的用法
pt-online-schema-change的用法
环境:
10.192.30.53 主库
10.192.30.60 从库
mysql版本:8.0.17
为了方便操作,简单的写了如下的脚本。
- #!/bin/bash
- # file_name: /usr/local/scripts/pt_change_online.sh
- . /etc/init.d/functions
- ##########################################################################################
- Date_Time=`date +%Y%m%d%H%M%S`
- Master_Host="10.192.30.53"
- Slave_Host="10.192.30.60"
- Port_Num=""
- User_Name="admin_m"
- Pass_word="rA75MQy*R*y@KO4z%LZe"
- Pt_Cmd="/usr/bin/pt-online-schema-change"
- MySQL_Dump_Cmd="/usr/bin/mysqldump"
- Bak_Data_Dir_="/data/backup/pt_dump/data/"
- Bak_logs_Dir="/data/backup/pt_dump/logs/"
- Db_Name="dbtest"
- Table_Name="test_article"
- Character_Name="utf8mb4"
- # sql操作中必须去掉反引号,其他ddl操作只需要替换"add column name varchar(64) NOT NULL DEFAULT '' COMMENT '用户名';" 即可,可以不同带上最后的分号
- ##########################################################################################
- function Data_table_dump(){
- "${MySQL_Dump_Cmd}" -h"${Slave_Host}" -P"${Port_Num}" -u"${User_Name}" -p"${Pass_word}" --default-character-set="${Character_Name}" --skip-tz-utc --routines --events --hex-blob --log-error="${Bak_logs_Dir}"dump_"${Date_Time}".log --set-gtid-purged=OFF --single-transaction --dump-slave= --max-allowed-packet= --max-allowed-packet= --skip-opt "${Db_Name}" "${Table_Name}">"${Bak_Data_Dir_}""${Db_Name}"_"${Table_Name}"."${Date_Time}".sql.dump
- }
- function Pirnt_Log(){
- Results=`tail - "${Bak_Data_Dir_}""${Db_Name}"_"${Table_Name}"."${Date_Time}".sql.dump | awk '{print $2,$3}'|awk '{print $1,$2}'`
- if [ "${Results}"X == "Dump completed"X ]; then
- echo " "${Bak_Data_Dir_}""${Db_Name}"_"${Table_Name}"."${Date_Time}".sql.dump Dump completed. " >>"${Bak_logs_Dir}"dump_"${Date_Time}".log
- else
- echo " "${Bak_Data_Dir_}""${Db_Name}"_"${Table_Name}"."${Date_Time}".sql.dump Dump error! " >>"${Bak_logs_Dir}"dump_"${Date_Time}".log
- fi
- }
- function Pt_Online_Change_Schema(){
- "${Pt_Cmd}" --host="${Master_Host}" --port="${Port_Num}" --user="${User_Name}" --password="${Pass_word}" --no-check-replication-filters --no-check-unique-key-change D="${Db_Name}",t="${Table_Name}" --charset="${Character_Name}" --no-check-alter --alter="
- add column name varchar() NOT NULL DEFAULT '' COMMENT '用户名';
- " --execute >>"${Bak_logs_Dir}"pt_"${Date_Time}".log
- }
- function main(){
- Data_table_dump
- Pirnt_Log
- if [ $? -eq ]; then
- Pt_Online_Change_Schema
- else
- exit
- fi
- }
- main
- # end
- ##########################################################################################
- # 准备测试表
- mysql> show create table test_article\G;
- *************************** . row ***************************
- Table: test_article
- Create Table: CREATE TABLE `test_article` (
- `id` int() unsigned NOT NULL AUTO_INCREMENT,
- `title` varchar() NOT NULL DEFAULT '' COMMENT '文章标题',
- `content` longtext NOT NULL COMMENT '资讯内容',
- `source` text NOT NULL COMMENT '来源',
- `seo_keyword` varchar() NOT NULL DEFAULT '' COMMENT '搜索引擎敏感搜索关键词',
- `seo_discrible` varchar() NOT NULL DEFAULT '' COMMENT '搜索引擎敏感描述字符串',
- `seo_title` varchar() NOT NULL DEFAULT '' COMMENT '搜索引擎敏感标题词',
- `top_column_id` int() NOT NULL DEFAULT '' COMMENT '栏目表中一级栏目id',
- `second_column_id` int() NOT NULL DEFAULT '' COMMENT '栏目表中二级栏目id',
- `img_url` varchar() NOT NULL DEFAULT '' COMMENT '缩略图url',
- `sort_value` int() NOT NULL DEFAULT '' COMMENT '排序权重,越大越靠前',
- `public_uid` int() NOT NULL DEFAULT '' COMMENT '发布人的uid',
- `state` tinyint() NOT NULL DEFAULT '' COMMENT '0已删除,1发布,2未发布',
- `reading_times` int() NOT NULL DEFAULT '' COMMENT '浏览总量',
- `tag` varchar() NOT NULL DEFAULT '' COMMENT '标签id,json字符串数组',
- `related_recommend` varchar() NOT NULL DEFAULT '' COMMENT '相关推荐,json',
- `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
- row in set (0.00 sec)
- ERROR:
- No query specified
- -- 、添加字段: alter table test_article add column name varchar() NOT NULL DEFAULT '' COMMENT '用户名';
- -- 、删除字段: alter table test_article drop column name ;
- -- 、添加普通索引: alter table test_article add index idx_name(name);
- -- 、删除普通索引: alter table test_article drop index idx_name;
- -- 、添加唯一索引: alter table test_article add unique index idx_name(name);
- -- 、删除唯一索引: alter table test_article drop index idx_name;
- -- 、修改字段长度:alter table test_article modify name varchar() NOT NULL DEFAULT '' COMMENT '用户名或者昵称';
- -- 、修改字段名称: alter table test_article change name user_name varchar() NOT NULL DEFAULT '' COMMENT '用户名';
- [root@fudao_db_cluster_003 pt_dump]# sh /usr/local/scripts/pt_change_online.sh
- mysqldump: [Warning] Using a password on the command line interface can be insecure.
- [root@fudao_db_cluster_003 pt_dump]# ll *
- data:
- total
- -rw-r--r-- root root Aug : dbtest_test_article..sql.dump
- logs:
- total
- -rw-r--r-- root root Aug : dump_20190816143119.log
- -rw-r--r-- root root Aug : pt_20190816143119.log
- [root@fudao_db_cluster_003 pt_dump]# cat logs/dump_20190816143119.log
- /data/backup/pt_dump/data/dbtest_test_article..sql.dump Dump completed.
- [root@fudao_db_cluster_003 pt_dump]# cat logs/pt_20190816143119.log
- Found slaves:
- fudao_db_cluster_003 -> 10.192.30.60:
- Will check slave lag on:
- fudao_db_cluster_003 -> 10.192.30.60:
- Operation, tries, wait:
- analyze_table, ,
- copy_rows, , 0.25
- create_triggers, ,
- drop_triggers, ,
- swap_tables, ,
- update_foreign_keys, ,
- Altering `dbtest`.`test_article`...
- Creating new table...
- Created new table dbtest._test_article_new OK.
- Altering new table...
- Altered `dbtest`.`_test_article_new` OK.
- --16T14:: Creating triggers...
- --16T14:: Created triggers OK.
- --16T14:: Copying approximately rows...
- --16T14:: Copied rows OK.
- --16T14:: Analyzing new table...
- --16T14:: Swapping tables...
- --16T14:: Swapped original and new tables OK.
- --16T14:: Dropping old table...
- --16T14:: Dropped old table `dbtest`.`_test_article_old` OK.
- --16T14:: Dropping triggers...
- --16T14:: Dropped triggers OK.
- Successfully altered `dbtest`.`test_article`.
- [root@fudao_db_cluster_003 pt_dump]#
- # 删除字段的操作,只需要修改:/usr/local/scripts/pt_change_online.sh
- 例如:
- function Pt_Online_Change_Schema(){
- "${Pt_Cmd}" --host="${Master_Host}" --port="${Port_Num}" --user="${User_Name}" --password="${Pass_word}" --no-check-replication-filters --no-check-unique-key-change D="${Db_Name}",t="${Table_Name}" --charset="${Character_Name}" --alter="
- drop column name # 修改这一行,即--alter 和 --execute之间的内容,ddl操作类似。
- " --execute >>"${Bak_logs_Dir}"pt_"${Date_Time}".log
- }
- [root@fudao_db_cluster_003 pt_dump]# cat logs/pt_20190816143538.log
- Found slaves:
- fudao_db_cluster_003 -> 10.192.30.60:
- Will check slave lag on:
- fudao_db_cluster_003 -> 10.192.30.60:
- Operation, tries, wait:
- analyze_table, ,
- copy_rows, , 0.25
- create_triggers, ,
- drop_triggers, ,
- swap_tables, ,
- update_foreign_keys, ,
- Altering `dbtest`.`test_article`...
- Creating new table...
- Created new table dbtest._test_article_new OK.
- Altering new table...
- Altered `dbtest`.`_test_article_new` OK.
- --16T14:: Creating triggers...
- --16T14:: Created triggers OK.
- --16T14:: Copying approximately rows...
- --16T14:: Copied rows OK.
- --16T14:: Analyzing new table...
- --16T14:: Swapping tables...
- --16T14:: Swapped original and new tables OK.
- --16T14:: Dropping old table...
- --16T14:: Dropped old table `dbtest`.`_test_article_old` OK.
- --16T14:: Dropping triggers...
- --16T14:: Dropped triggers OK.
- Successfully altered `dbtest`.`test_article`.
- [root@fudao_db_cluster_003 pt_dump]#
pt-online-schema-change的用法的更多相关文章
- schema change + ogg 变更手册
Check OGG until no data queuing in replication process:testRO:a)login test5 –l oggmgrb)oggc)#ggsci ...
- Online Schema Change for MySQL
It is great to be able to build small utilities on top of an excellent RDBMS. Thank you MySQL. This ...
- AppBoxFuture(四). 随需而变-Online Schema Change
需求变更是信息化过程中的家常便饭,而在变更过程中如何尽可能小的影响在线业务是比较头疼的事情.举个车联网监控的例子:原终端设备上传车辆的经纬度数据,新的终端设备支持同时上传速度数据,而旧的车辆状态表 ...
- elementUI下拉框select组件change事件用法
<el-select-custom clearable collapse-tags v-model="searchForm.cardTypeList" @change=&qu ...
- Online, Asynchronous Schema Change in F1
F1: A Distributed SQL Database That Scales http://disksing.com/understanding-f1-schema-change ma ...
- Online Schema Upgrade in MySQL Galera Cluster using TOI Method
http://severalnines.com/blog/online-schema-upgrade-mysql-galera-cluster-using-toi-method As a fo ...
- Schema 与数据类型优化
这是<高性能 MySQL(第三版)>第四章<Schema 与数据类型优化>的读书笔记. 1. 选择优化的数据类型 数据类型的选择原则: 越小越好:选择满足需求的最小类型.注意, ...
- OCP考点实战演练01-备份恢复篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练01-备份恢复篇 1.数据库开启归档 2. ...
- iDB是如何运转的 一
郑昀 创建于2015/12/2 最后更新于2015/12/4 关键词:数据库,MySQL,自动化运维,DDL,DML,SQL审核,备份,回滚,Inception,osc 提纲: 普通DBA和文艺DBA ...
- hbase-site.xml 配置详解
hbase.rootdir 这个目录是region server的共享目录,用来持久化HBase.URL需要是'完全正确'的,还要包含文件系统的scheme.例如,要表示hdfs中的'/hbase'目 ...
随机推荐
- Web前端学习书籍
<Head First HTML5 Programming> 介绍如何利用HTML5来搭建Web应用,包含JavaScript内容. <CSS禅意花园>: 不是入门的书籍,对C ...
- Dojo入门:dojo中的事件处理
JS为DOM添加事件 在原生的环境下,为DOM添加事件处理函数有多种方法: <input type="button" name="btn" value ...
- epoll 性能分析(解决占用CPU 过高问题)2
针对服务器框架Engine,在工作线程中发现该线程占用CPU过高,分析之后发现问题出在死循环那里 void cServerBase::OnProcess() { printf("cServe ...
- vtkExampleWarpVector和vtkWarpScalar
vtkWarpVector : deform geometry with vector data vtkWarpVector is a filter that modifies point coord ...
- SQL注入(bool型)
sqli-labs 靶场https://blog.csdn.net/qq_41420747/article/details/81836327 教程+靶场 1. https://blog.csdn.ne ...
- Xcode增加头文件搜索路径的方法
Xcode增加头文件搜索路径的方法 以C++工程为例: 在Build Settings 页面中的Search Paths一节就是用来设置头文件路径. 相关的配置项用红框框起来了,共有三个配置项: He ...
- 交换机安全学习笔记 第六章 IPV4 ARP攻击
ARP欺骗攻击 常用工具: dsniff(Linux/windows).ettercap(Linux/windows).cain(仅windows). ARP欺骗攻击的目的是嗅探发往某主机的所有IP ...
- Codeforces Round #589 (Div. 2) (e、f没写)
https://codeforces.com/contest/1228/problem/A A. Distinct Digits 超级简单嘻嘻,给你一个l和r然后寻找一个数,这个数要满足的条件是它的每 ...
- CSP-S 2019游记
Day 0 下午到了广州,酒店还不错,不好的是附近没有什么吃饭的地方 zyd和ljz巨神说如果上了450就女装. 晚上看了一下写过模板,本来准备敲几个新模板的的结果被卡常,心态没了.于是又把wys的卡 ...
- 如何输出opencv编译信息
本文链接:https://mangoroom.cn/opencv/how-to-print-compile-info-of-opencv.html opencv提供了一个函数,利用这个函数可以输出当前 ...