当前位置: 首页 > news >正文

网络推广培训在哪里uc浏览器关键词排名优化

网络推广培训在哪里,uc浏览器关键词排名优化,wordpress 单栏 宽屏,怎么做网站报价表mysql 错误操作整个表全部数据后如何恢复#xff1f;#xff08;百万行SQL#xff0c;通过binlog日志恢复#xff09; 事件起因 事情起因#xff1a;以为某个表里的数据都是系统配置的数据#xff0c;没有用户数据#xff0c;一个字段需要覆盖替换为新的url链接#x…mysql 错误操作整个表全部数据后如何恢复百万行SQL通过binlog日志恢复 事件起因 事情起因以为某个表里的数据都是系统配置的数据没有用户数据一个字段需要覆盖替换为新的url链接直接写下了update t_xxx set xxx ‘https://xxxxxxxxx’ 然后执行了执行的时候IDEA还提示这是危险操作我思考了下不危险这个就是要全部覆盖然后就点击了execute确认执行于是翻车了等我覆盖完去看效果的时候惊奇的发现用户数据也被覆盖了于是去看这个表里的数据真有用户数据但是值得高兴的是全被覆盖了。。。。真是手贱啊小心了一万年还是翻车了,全覆盖了跟删了没多大区别~~~~都是闯祸 既然事情已经发生那就开始修复把~ 找Binlog文件位置 binlog文件是mysql的更新记录二进制形式。可以用于恢复数据。 这个文件每1个G为一个文件满 了就新建一个所以mysql运行久了这个binlog文件很多个每个1G建议跟我一样设置滚动删除我是最多保留最近8个。实验机器配置低~ 我的是mysql 8,ubuntu我的binlog文件在这个目录 /var/lib/mysql聪明的你一眼就能看出这个binlog 27号文件只有六百多兆序号也是最新的证明这个是最近的一个文件就是他了冲 读取指定时间范围内的数据操作DML 我直接查看了我这冤种操作的时间发现大概是7分的时候操作的覆盖调数据于是我把那一分钟里的SQL导出来自行评估时间范围导出为一个SQL文件 备注mysqlbinlog工具是mysql自带的 mysqlbinlog --base64-outputDECODE-ROWS --verbose --start-datetime2023-12-23 01:00:00 --stop-datetime2023-12-23 01:10:00 /var/lib/mysql/binlog.000027 restore.sql把导出的SQL清理数据 导出的sql我用IDEA打开的随便你用哪个好用的文本处理工具我们直接搜索set这个词就能找到SQL的最开始位置如图 例如一条 ### UPDATE xx.t_xx ### WHERE ### 11 ### 2xx ### 3NULL ### 4默认 ### 5xx ### 6xxxx ### 71 ### 81 ### 92023-08-19 15:29:58 ### 102023-08-19 18:41:06 ### SET ### 11 ### 2xx ### 3xx ### 4默认 ### 5xx ### 6xx ### 71 ### 81 ### 92023-08-19 15:29:58 ### 102023-12-23 01:07:09这个数据的格式不难看出记录了变更之前和之后的每个字段数据xx为示意作用在真实场景中就是你的真实数据字段根据顺序1一直到10证明我有10个字段然后没个字段的值都记录了整个结构为 update 表 where 每个字段的旧值 set 每个字段的新值那么我们现在开始处理数据 IDEA 对于这个26MB的文件直接变仅读模式不给我编辑于是打开了subline text这个工具处理文本 处理数据 删除update语句以外的所有无关行 找到这句错SQL的所有update语句其它无关行全部删除 我们要的核心就是这个update语句我们先掐头去尾保留中间的update,我这个文件目前有100万行~ 现在我这个文件只有那一个失误SQL执行的所有update语句总共92万行~ 去掉开头的### 直接搜索把###空格这四个字符直接替换为空字符于是电脑卡了一会电脑这会汗流浃背风扇狂扇过了会好像没响应算了撸代码解决 /*** author: humorchen* date: 2023/12/23/023 1:57* desc:**/ public class RestoreData {/*** 移除头部标识** throws Exception*/public static void removeHeadSignal() throws Exception {String file C:\\Users\\Administrator\\Desktop\\restore.sql;String newFile C:\\Users\\Administrator\\Desktop\\restore_1.sql;BufferedWriter bufferedWriter new BufferedWriter(new FileWriter(newFile));BufferedReader bufferedReader new BufferedReader(new FileReader(file));String line null;while ((line bufferedReader.readLine()) ! null) {if (line.startsWith(### )) {line line.substring(4);}bufferedWriter.write(line);bufferedWriter.write(\n);}bufferedWriter.flush();bufferedWriter.close();bufferedReader.close();}public static void main(String[] args) throws Exception {removeHeadSignal();} }set和where互换 这个互换简直不要太简单轻松的很 /*** where和set互换** throws Exception*/public static void reverseWhereAndSet() throws Exception {String file C:\\Users\\Administrator\\Desktop\\restore_1.sql;String newFile C:\\Users\\Administrator\\Desktop\\restore_2.sql;final String SET SET;final String WHERE WHERE;BufferedWriter bufferedWriter new BufferedWriter(new FileWriter(newFile));BufferedReader bufferedReader new BufferedReader(new FileReader(file));String line null;while ((line bufferedReader.readLine()) ! null) {if (line.startsWith(WHERE)) {line SET;} else if (line.startsWith(SET)) {line WHERE;}bufferedWriter.write(line);bufferedWriter.write(\n);}bufferedWriter.flush();bufferedWriter.close();bufferedReader.close();}public static void main(String[] args) throws Exception { // removeHeadSignal();reverseWhereAndSet();}字段替换 把字段数组作为参数数组传入函数然后读取多少替换为对应下表的字段名 /*** 替换字段名** param columnNames*/public static void replaceColumns(String[] columnNames) throws Exception {String file C:\\Users\\Administrator\\Desktop\\restore_2.sql;String newFile C:\\Users\\Administrator\\Desktop\\restore_3.sql;BufferedWriter bufferedWriter new BufferedWriter(new FileWriter(newFile));BufferedReader bufferedReader new BufferedReader(new FileReader(file));String line null;final String PREFIX ;final int PREFIX_LEN PREFIX.length();while ((line bufferedReader.readLine()) ! null) {// line 11if (line.length() PREFIX_LEN line.startsWith(PREFIX)) {// 等于号位置int eqIndex line.indexOf();String indexStr line.substring(PREFIX_LEN, eqIndex);if (StrUtil.isNumeric(indexStr)) {int index Integer.parseInt(indexStr) - 1;if (index 0 index columnNames.length) {// 替换字段名line line.replace(PREFIX indexStr, columnNames[index]);}}}bufferedWriter.write(line);bufferedWriter.write(\n);}bufferedWriter.flush();bufferedWriter.close();bufferedReader.close();}public static void main(String[] args) throws Exception { // removeHeadSignal(); // reverseWhereAndSet();replaceColumns(new String[]{id, title, icon, type, email, prompt, temperature, keep_context, create_time, update_time});}加,和and 看到最后你就发现只缺标点符号,;了那就加上起初想去判断代码处于update、set、where三个区域里加不同的又想到要判定最后一个不能加标点要加空格最后一个又是分号; 真麻烦直接搞个后缀数组算了反正我这个表结构是固定的于是用以下代码加上标点符号和换行。 /*** 添加,和and和;** throws Exception*/public static void addPrefix(String[] addPrefix) throws Exception {String file C:\\Users\\Administrator\\Desktop\\restore_3.sql;String newFile C:\\Users\\Administrator\\Desktop\\restore_4.sql;BufferedWriter bufferedWriter new BufferedWriter(new FileWriter(newFile));BufferedReader bufferedReader new BufferedReader(new FileReader(file));String line null;int index -1;final String UPDATE UPDATE;while ((line bufferedReader.readLine()) ! null) {if (line.startsWith(UPDATE)) {index 0;bufferedWriter.write(\n\n);;}if (index 0) {line line addPrefix[index];index;}bufferedWriter.write(line);bufferedWriter.write(\n);}bufferedWriter.flush();bufferedWriter.close();bufferedReader.close();}public static void main(String[] args) throws Exception { // removeHeadSignal(); // reverseWhereAndSet(); // replaceColumns(new String[]{id, title, icon, type, email, prompt, temperature, keep_context, create_time, update_time});addPrefix(new String[]{ , , ,, ,, ,, ,, ,, ,, ,, ,, ,, , , and , and , and , and , and , and , and , and , and , ;});}大功告成拿去执行即可 执行之前你先随机取个三条执行一下看看确认自己的SQL生产对了。 我把sql上传到了ubuntu进入mysql -uroot -p然后use xxx;source xxx.sql;执行完数据恢复了会有点久如果数据量大执行会更久。珍惜数据。。。 我这个一百万行的恢复数据SQL大约执行了3、5分钟执行完了。数据全部恢复到错误SQL前的数据了。
http://www.hkea.cn/news/14583516/

相关文章:

  • 哈尔滨住房和城乡建设厅网站网站建设方法牜金手指下拉覀
  • 简述网站设计流程wordpress商城制作
  • 网站开发项目书专业网站建设组织
  • 微信公众号php网站开发设计最好的网站
  • 深圳网站建设q479185700強网站建设投票主题
  • 网站建设目的分析wordpress专题修改
  • 网站设计语言有哪些地推拉新app推广怎么做
  • 做童鞋的一些外贸网站调用wordpress编辑器
  • 用淘宝做公司网站企业营销型网站设计
  • 沈阳网站外包公司普集网站制作
  • 网站策划方案论文工业设计本科生作品集
  • 安康市网站开发无锡网站建设推广服务
  • 南京太阳宫网站建设合工大智能院网站建设
  • 深圳微商城网站制作费用作文网课
  • 火车头采集网站做返利网站怎麼
  • 河南省住房与城乡建设部网站大兴网站开发
  • 模板手机网站建设中铁三局招聘事件
  • 企业网站建设基本标准番禺做网站
  • 网站首页的动态视频怎么做的无代码开发平台 开源
  • 国外网站建设的发展国家认可的赚钱游戏无广告
  • 湘潭交通网站游戏网站建设多少
  • 徐州新站百度快照优化电商创客网站建设方案
  • 华为公司网站建设方案网站外包 博客
  • 响应式网站开发源码爱链网买链接
  • 有口碑的郑州网站建设注册安全工程师需要什么条件
  • wordpress制作图片站wordpress模板如何安装教程
  • 做项目网站百度无广告搜索引擎
  • 四川省建设厅职业注册中心网站团购网站建站
  • 如何创建个人网站免费用户体验网站
  • 是网站推广的案例网络推广产品