记一次mysql的问题处理@20181225
需求:由于某种原因,导致一次分库分表的环境中ddl添加字段和索引没有完全成功,比如100个分库,只有部分修改成功,需要将没有修改成功的库和表找出来,在手动去执行。
由于线上环境,这里模拟还原一下该问题的情景。就是有4个database,每个database有2张表,只有部分表上面ddl添加字段成功。
root@lxd-vm1/[(none)] ::>create database db1;
Query OK, row affected (0.02 sec) root@lxd-vm1/[(none)] ::>create database db2;
Query OK, row affected (0.00 sec) root@lxd-vm1/[(none)] ::>create database db3;
Query OK, row affected (0.00 sec) root@lxd-vm1/[(none)] ::>create database db4;
Query OK, row affected (0.00 sec) root@lxd-vm1/[(none)] ::>use db1;
Database changed
root@lxd-vm1/[db1] ::>create table t1(id int);
Query OK, rows affected (0.03 sec) root@lxd-vm1/[db1] ::>create table t2(id int);
Query OK, rows affected (0.03 sec) root@lxd-vm1/[db1] ::>use db2;
Database changed
root@lxd-vm1/[db2] ::>create table t3(id int);
Query OK, rows affected (0.02 sec) root@lxd-vm1/[db2] ::>create table t4(id int);
Query OK, rows affected (0.03 sec) root@lxd-vm1/[db2] ::>use db3;
Database changed
root@lxd-vm1/[db3] ::>create table t5(id int);
Query OK, rows affected (0.03 sec) root@lxd-vm1/[db3] ::>create table t6(id int);
Query OK, rows affected (0.05 sec) root@lxd-vm1/[db3] ::>use db4;
Database changed
root@lxd-vm1/[db4] ::>create table t7(id int);
Query OK, rows affected (0.04 sec) root@lxd-vm1/[db4] ::>create table t8(id int);
Query OK, rows affected (0.02 sec) root@lxd-vm1/[db4] ::>use db3;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
root@lxd-vm1/[db3] ::>alter table t5 add column name varchar();
Query OK, rows affected (0.06 sec)
Records: Duplicates: Warnings: root@lxd-vm1/[db3] ::>use db1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
root@lxd-vm1/[db1] ::>alter table t2 add column name varchar();
Query OK, rows affected (0.04 sec)
Records: Duplicates: Warnings: root@lxd-vm1/[db1] ::>
信息确认,只有db1.t2和db3.t5的表上面ddl修改成功了
root@lxd-vm1/[(none)] ::>select distinct table_schema,table_name from information_schema.columns where column_name='name' and table_schema like 'db%' and table_name like 't%';
+--------------+------------+
| table_schema | table_name |
+--------------+------------+
| db1 | t2 |
| db3 | t5 |
+--------------+------------+
rows in set (0.00 sec)
问题处理脚本
/opt/mysql5720/bin/mysql -uroot -proot -h5.5.5. -P3306 >/dev/null -Nse "select distinct concat(table_schema,'.',table_name)
from information_schema.columns
where column_name='name'
and table_schema like 'db%'
and table_name like 't%' order by concat(table_schema,'.',table_name) ;" > have.txt /opt/mysql5720/bin/mysql -uroot -proot -h5.5.5. -P3306 >/dev/null -Nse "select distinct concat(table_schema,'.',table_name)
from information_schema.columns
where table_schema like 'db%'
and table_name like 't%' order by concat(table_schema,'.',table_name);" > all.txt cat all.txt | while read line
do
echo $line | grep $line have.txt > /dev/null
if [[ $? -ne ]];then
echo $line >> no.txt
fi
done cat no.txt | while read line
do /opt/mysql5720/bin/mysql -uroot -proot -h5.5.5. -P3306 >/dev/null -Nse "alter table $line add column name varchar(20);"
if [[ $? -eq ]];then
echo "$line alter successed"
fi
done
rm -rf all.txt
rm -rf have.txt
rm -rf no.txt
执行上面的脚本
[mysql@lxd-vm1@/home/mysql]$ sh t1.sh
db1.t1 alter successed
db2.t3 alter successed
db2.t4 alter successed
db3.t6 alter successed
db4.t7 alter successed
db4.t8 alter successed
验证,所有的库对应的表上都有需求中的字段:
root@lxd-vm1/[(none)] ::>select distinct table_schema,table_name from information_schema.columns where column_name='name' and table_schema like 'db%' and table_name like 't%';
+--------------+------------+
| table_schema | table_name |
+--------------+------------+
| db1 | t1 |
| db1 | t2 |
| db2 | t3 |
| db2 | t4 |
| db3 | t5 |
| db3 | t6 |
| db4 | t7 |
| db4 | t8 |
+--------------+------------+
rows in set (0.00 sec)
记一次mysql的问题处理@20181225的更多相关文章
- 记一次 mysql 启动没反应
记一次 mysql 启动没反应 ,重启linux又可以启动 vim /var/log/mysqld.log 2018-02-04 13:22:49 28507 [ERROR] InnoDB: Cann ...
- 记一次MySQL表分区操作
最近一次日常迭代中,业务线需要对一张大表进行联合查询,查询性能可想而知,测试过程中服务接口直接响应超时,导致服务不可用,最后临时对该表进行分区操作,暂时缓解性能问题.由于是第一次操作表分区,姑且记录一 ...
- 记一次mysql数据库被勒索(中)
背景在上一篇文章里面已经提过了. 现在面临的问题是nextcloud没有mysql数据库,用不起来了. 因为文件没丢,一种方法是启动新的mysql数据库,把文件重新提交一次. 为了程序员的面子,没有选 ...
- 记一次mysql数据库被勒索(下)
背景: nextcloud的mysql数据库被黑,删库勒索.参考:记一次mysql数据库被勒索(上) mysql数据库恢复成功,nextcloud还是无法连接.参考:记一次mysql数据库被勒索(中) ...
- 记一次mysql事务未提交导致锁未释放的问题
记一次mysql事务未提交导致锁未释放的问题 ## 查看未提交的事务(3秒内未操作的事务) SELECT p.ID AS conn_id, P.USER AS login_user, P.HOST A ...
- 【夯实Mysql基础】记一次mysql语句的优化过程
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...
- 记一次MYSQL更新优化
引言 今天(August 5, 2015 5:34 PM)在给数据库中一张表的结构做一次调整,添加了几个字段,后面对之前的数据进行刷新,刷新的内容是:对其中的一个已有字段url进行匹配,然后更新新加的 ...
- 记一次mysql故障恢复
事情要从俩月前的一个坑说起,一台新的测试服务器,新项目一元夺宝用的. 配置aws上的一台云主机,系统盘8G,一块300G的云硬盘. 拿到机器后,另一运维小哥安装php,nginx,mysql等软件. ...
- 记一次MySql入库后,文本出现乱码的问题
最近采用ADO.NET开发了一个工具,解析了一条如下的日志并入库(MySql) -- :: [INFO] roleName=♣丶伊诺,orderId=,price= 发现入库后的roleName中的♣ ...
随机推荐
- Dubbo(五):Dubbo中的URL统一资源模型与Dubbo协议
一.URL简介 URL也就是Uniform Resource Locator,中文叫统一资源定位符.Dubbo中无论是服务消费方,或者服务提供方,或者注册中心.都是通过URL进行定位资源的.所以今天来 ...
- 罗德里格斯旋转公式(Rodrigues' rotation formula)推导
本文综合了几个相关的维基百科,加了点自己的理解,从比较基础的向量投影和叉积讲起,推导出罗德里格斯旋转公式.公式比较繁杂,如有错误,欢迎评论区指出. 对于向量的三维旋转问题,给定旋转轴和旋转角度,用罗德 ...
- UnityTips:不要在发布版本中实现OnGUI方法
0x00 问题 不知道大家是否在调试Unity应用性能的时候发现过一条常见的Marker:UIEvents.IMGUIRenderOverlays. 很多情况下,这条叫做UIEvents.IMGUIR ...
- [redis读书笔记] 第二部分 集群
1. 一个集群会包含多个节点(一个节点就是一个reid是服务器),CLUST MEET <ip><port>可以添加一个node到集群,命令执行后,两个node之间就会进行握手 ...
- SqlServer触发器的基础知识
触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...
- shell脚本 inotify + rsync 同步脚本
1.这是很简单的一个 文件监控+触发同步脚本 监控一台服务器下的一个文件夹,发生改变则向另一个个文件夹进行同步. 具体的inotify命令 rsync命令 可以看linux分类下的介绍 inoti ...
- oracle系列练习题
刚学习Oracle,老师给我们布置了一些题目来练习. 题目: 创建四个表,并录入数据 1.student表 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, ...
- Linux下使用Nginx
模拟tomcat集群 1.下载tomcat7,/usr/local下新建目录tomcat,将tomcat7剪切到/usr/local/tomcat wget http://mirror.bit.edu ...
- python3-cookbook笔记:第八章 类与对象
python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...
- css如何玩转有序无序列表项list样式
在无序列表ul>li中,无线列表的标志是出现在各列表前面的圆点.在有序列表ol>li中,前面默认带有数字,如何修改列表前面的项目符号,只需要通过list-style调整就好,常见的符号有( ...