全栈之路 -- 多数据库合并工作的复盘笔记

简介: 需要是把数据库`a`(后台数据库)的数据都导入到数据库`b`(前台数据库)中去。计划的时候凌晨0点做,因为这个时候使用后台的人少,首先我在代码上的控制是从0点开始,所有写入操作全部不执行。然后开始倒表。 1.获取database_a数据库的所有表 mysql -uroot -P3306 data

需要是把数据库a(后台数据库)的数据都导入到数据库b(前台数据库)中去。计划的时候凌晨0点做,因为这个时候使用后台的人少,首先我在代码上的控制是从0点开始,所有写入操作全部不执行。然后开始倒表。

获取database_a数据库的所有表

mysql -uroot -P3306 database_a -e"show tables\G" |grep Tables_in_database_a |awk -F: '{print $2}' > list.txt

导出数据

for i in `cat list.txt` ;do mysqldump -uroot -P3306 database_a  $i > table_$i.sql;done

导入到database_b里面去

for i in `cat list.txt`;do mysql -uroot -P3306 database_b < table_$i.sql;done

数据库的迁移,到这里就结束了。代码里原来访问a数据库的连接,配置都需要切换到b数据库上。后来发现了一些问题。

反思与小结

没有禁止一切对旧数据库的写入操作(子项目,计划任务)

做数据库迁移的时候,只提前禁止了Web项目中数据库写入,但是忘记了计划任务里面还有很多对该数据库的写操作,而正好很多统计工作也是在凌晨之后才执行,导致数据迁移的时候有遗漏,都写到了旧的数据库中去了。

这是第二天,查看昨日一些统计分析数据时候发现的,也就是说,迁移库相关的计划任务也应该相对调整,延时执行或者记录到临时库。

遗漏了对代码里面的不规范的数据库连接操作修改

代码里有多套数据库操作类,因为整个系统代码有重写的新代码,当时只改了新版数据库操作类里面的数据库配置,没有修改老版本的数据库配置(老版本没有数专门的数据库配置文件),所以这个时候更应该全局搜索下迁移之前的数据库服务器的ip地址+端口号,以免遗漏。

这是过了几天之后,客户端在调用某个api的时候直接崩溃了发现的。也是统计相关,由于老数据库没删,所以最开始没发现,但是到了新的一周,没有新数据库入库,问题旧暴露出来了。

这个问题属于代码管理不规范造成的,但是不能忽略这个问题存在的可能性。

没有检查所有服务器对数据库权限是否正常

原来所有机器对a数据库是有权限的,其中一部分机器也对b数据库有权限的。但是有部分服务器只对a数据库就行操作,没有b数据库的权限。

这也也是过了一段时间之后,还是用户反馈打开某个界面的时候app会闪退,但是不是每次都出现,所以想到是后端某台机器出现了问题。果不其然,我一台台测试之后,发现有一台访问的时候之前做修改的一个数据库查询返回结果为空,在确定了代码是一致的情况下,最后定位为数据访问权限的问题。

目录
相关文章
|
2月前
|
Go 数据库
数据库的实现【笔记】
数据库的实现【笔记】
13 0
|
2月前
|
数据库
数据库设计【笔记】
数据库设计【笔记】
13 0
|
3月前
|
SQL 存储 数据库
【数据库SQL server】自学终极笔记
【数据库SQL server】自学终极笔记
103 0
|
4月前
|
SQL Dart 数据库
Flutter笔记: 在Flutter应用中使用SQLite数据库
Flutter笔记: 在Flutter应用中使用SQLite数据库
213 0
|
4月前
|
SQL Java 数据库连接
(数据库链接池)spring内容复习7月16日笔记
(数据库链接池)spring内容复习7月16日笔记
15 0
|
4月前
|
SQL NoSQL 关系型数据库
2021你应该会全栈 第1期 数据库概述
2021你应该会全栈 第1期 数据库概述
24 0
|
5月前
|
SQL 存储 数据库
Flask狼书笔记 | 05_数据库
5 数据库 这一章学习如何在Python中使用DBMS(数据库管理系统),来对数据库进行管理和操作。本书使用SQLite作为示例。 注:按下Ctrl+F5,或Shift+F5可以清除浏览器缓存。 5.1 数据库的分类
34 0
|
5月前
|
NoSQL 应用服务中间件 MongoDB
2023年底复盘之大厂必问面试题:Redis+MongoDB+ZK+Nginx+数据库
今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的,有需要的可以查看文末的获取方式!
|
5月前
|
NoSQL Java 应用服务中间件
2024年面试复盘大全500道:Redis+ZK+Nginx+数据库+分布式+微服务
今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的
|
5月前
|
存储 小程序 前端开发
前端知识笔记(四十六)———什么是小程序,什么是数据库
前端知识笔记(四十六)———什么是小程序,什么是数据库
23 0