记一次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中的♣ ...
随机推荐
- Spring事务中的事务传播行为
1.支持当前事务: TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务:如果当前没有事务,则创建一个新的事务. Transaction ...
- NLP(二十一)人物关系抽取的一次实战
去年,笔者写过一篇文章利用关系抽取构建知识图谱的一次尝试,试图用现在的深度学习办法去做开放领域的关系抽取,但是遗憾的是,目前在开放领域的关系抽取,还没有成熟的解决方案和模型.当时的文章仅作为笔者的 ...
- Apache 日志记录相关设置
小编最近在配置Apache 服务器啊 就把遇到的信息给记录下来 Apache 自动生成的日志会给系统带来很大的损耗.关闭日志以后,甚至最高可以提高整体性能近40%(粗略估计) 那么如何关闭日志呢? 可 ...
- javascript Math对象 常用数字操作方法
var t='1.2'; parseInt(t) parseFloat(t)//1.2 Number(1.2)//1.2强制转换为数字 2.向上取整,有小数就整数部分加1 js: Math.ceil( ...
- [Windows]远程管理服务WinRM远程管理Windows服务器 Invalid use of command line. Type "winrm -?" for help.
运行环境 Windows 2012 R2 1. Windows需要打开WinRM服务,Server系统默认打开,默认端口5985 # WinRM服务查看 PS C:\Users\Administrat ...
- 在Ubuntu上部署一个基于webrtc的多人视频聊天服务
最近研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了 ...
- scanf函数中*修饰符的作用,如:%*d
在scanf函数中,*修饰符可以跳过所在项的输入.如下: #include <stdio.h> int main() { ; printf("请输入:"); scanf ...
- pycharm(迅雷下载链接)
pycharm2020迅雷下载链接: https://download.jetbrains.com/python/pycharm-professional-2019.3.3.exe?_ga=2.146 ...
- 流处理引擎(SPE)中的的分布式一致性语义之Exactly-Once和Effectively-Onece区别
-- At most Onece:最多一次,如果算子处理事件失败,事件将不再尝试该事件. -- At Least Onece:至少一次,如果算子处理事件失败,算子会再次尝试该处理事件,直到有一次成功. ...
- xPath和html基础扫盲
xPath:一种HTML和XML的查询语言,他能在XML和HTML的树状结构中寻找节点 安装xPath: pip方法: pip install lxml win+R:cmd 打开命令控制台: 此 ...