闯祸了,生产环境执行了DDL操作《死磕MySQL系列 十四》(2)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 闯祸了,生产环境执行了DDL操作《死磕MySQL系列 十四》

然后使用scp直接把虚拟机的文件传输到主机上,执行命令为scp percona-toolkit-3.2.0-1.el7.x86_64.rpm root@ip:/


使用语法非常简单scp local_file remote_username@remote_ip:remote_folder


local_file :本地文件


remote_username:远程用户名


remote_ip:远程机器IP地址


remote_folder 远程目录


执行完成后需要输入服务器密码,然后等待传输完成就可以在服务器上看到对应的文件


这里分别在虚拟机、服务器查看了文件大小,文件是没有一点问题的


image.png

image.png




到这里对于pt-online-schema-change的安装才完成,接下来重试之前执行的命令


./bin/pt-online-schema-change --charset=utf8 --no-version-check --user="root" --password="Fang1996" --host="127.0.0.1" D="kaka",t=evt_sms --alter "add column email varchar(255) not null default '' after phone" --print --execute


image.png

image.png


以上就是修改成功的信息,可以看到处理数据有46W,基本是毫无压力,建议大家实测一下


可以看到要加的email字段已经加上了,这个就是我们想要的结果


image.png


四、简化pt-online-schema-change的执行命令

在执行修改表结构命令时输入了很多配置信息, 这些信息可以放在脚本里边复用的


image.png


#!/bin/bash
database=$1
table=$2
alter_conment=$3
pt_host='127.0.0.1'
pt_user='root'
pt_pwd='Fang1996'
echo "$table"
echo "$alter_conment"
/bin/pt-online-schema-change --charset=utf8 --no-version-check --user=${pt_user} --password=${pt_pwd} --host=${pt_host} P=3306,D=$database,t=$table --alter "${alter_conment}" --print --execute



那么使用pt-online-schema-change则可以这样写


sh pt.sh kaka evt_sms "add column kaka1 varchar(255) default '咔咔'"


这里给大家提供了添加字段的方法,修改、删除都是一致的,只需要把对应的语句放到引号里边即可


在这里你会发现只有进到脚本的目录才能执行对应的脚本,那么如何让你的脚本可以在任意地方都可以执行呢?


五、总结

本期文章给大家详细说明了为什么不建议大家直接在线DDL,因为会阻塞SQL导致业务停摆


给大家介绍了第三方脚本pt-online-schema-change的安装、使用,使用还是非常简单的,参数也只给大家说明了常用的,如果要放到生产环境使用,你需要把所有的参数都简单过一遍。


最后用一个脚本优化了修改表信息时需要输入的一大堆重复信息。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
关系型数据库 MySQL
【mysql技巧】如何在这个mysql语句执行前加个前提,也就是只有表里没有相同数据才进行添加插入操作
【mysql技巧】如何在这个mysql语句执行前加个前提,也就是只有表里没有相同数据才进行添加插入操作
10 1
|
5天前
|
SQL 存储 关系型数据库
|
8天前
|
关系型数据库 MySQL 数据库
『Django』模型入门教程-操作MySQL
一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对应数据库中的一个表,类的属性对应表中的列。通过定义模型,Django 的 ORM(Object-Relational Mapping)可以将 Python 对象映射到数据库表,并提供一套 API 来进行数据库操作。 本文介绍模型的用法。
|
11天前
|
SQL 存储 关系型数据库
MySQL基础(一) 前置安装以及DDL详解
MySQL基础(一) 前置安装以及DDL详解
15 1
|
18天前
|
SQL 关系型数据库 MySQL
MySQL Online DDL原理解读
MySQL Online DDL原理解读
24 3
|
17天前
|
SQL 关系型数据库 MySQL
MySQL Online DDL(Data Definition Language)
MySQL Online DDL(Data Definition Language)
30 1
|
6天前
|
SQL 存储 关系型数据库
MySQL数据库—初识数据库 | DDL语句 | DML语句
MySQL数据库—初识数据库 | DDL语句 | DML语句
|
9天前
|
关系型数据库 MySQL 分布式数据库
PolarDB操作报错合集之无法创建mysql的连接池什么导致的
在使用阿里云的PolarDB(包括PolarDB-X)时,用户可能会遇到各种操作报错。下面汇总了一些常见的报错情况及其可能的原因和解决办法:1.安装PolarDB-X报错、2.PolarDB安装后无法连接、3.PolarDB-X 使用rpm安装启动卡顿、4.PolarDB执行UPDATE/INSERT报错、5.DDL操作提示“Lock conflict”、6.数据集成时联通PolarDB报错、7.编译DN报错(RockyLinux)、8.CheckStorage报错(源数据库实例被删除)、9.嵌套事务错误(TDDL-4604)。
|
9天前
|
SQL 算法 关系型数据库
MySQL Online DDL原理解读
MySQL Online DDL原理解读
|
11天前
|
SQL 算法 关系型数据库
MySQL Online DDL详解:从历史演进到原理及使用
MySQL Online DDL详解:从历史演进到原理及使用