编辑: LinDa_学友 | 2018-04-30 |
开发误操作全表更新了配置表的信息,将Content 字段全部更新成了一个值 2. Content 字段包含很多特殊字符,例如换行回车制表符等等. 思路: 将开发操作时间段 binlog 解析成 text 文本,使用回滚脚本生成回滚语句,回滚数据库的表 数据. 发现问题: 1. 使用 mysqlbinlog 解析出来的 text 文件对于特殊字符的处理存在缺陷,不能正常显示特 殊符号. 2. 业务 content 包含特殊字符过于复杂,不能全面准确的替换 如下图,包含诸如此类的 windows 端存储的十六进制符 mysqlbinlog 本身对于这种字符的处理存在缺陷, 导致无法生成正确的结果, 从而使得回滚语 句生成出现问题. 对于MYSQL回滚来说 \x0[x]格式的字符串 将被当做转义插入从而变成一个非法字符 (x0[x]) 存在于表中 而mysqldump 对于这种问题的处理是没有问题的如下图 可以看到 mysqldump 出来的 SQL 文件对于这种字符的处理完全是按照 linux 端的形式展示的 下面放一张 ascii 码对照表 Linux ascii 对照表 1. C program '\X' escapes are noted. 2. 3. Oct Dec Hex Char Oct Dec Hex Char 4. -- 5.
000 0
00 NUL '\0'
100 64
40 @ 6.
001 1
01 SOH (start of heading)
101 65
41 A 7.
002 2
02 STX (start of text)
102 66
42 B 8.
003 3
03 ETX (end of text)
103 67
43 C 9.
004 4
04 EOT (end of transmission)
104 68
44 D 10.
005 5
05 ENQ (enquiry)
105 69
45 E 11.
006 6
06 ACK (acknowledge)
106 70
46 F 12.
007 7
07 BEL '\a' (bell)
107 71
47 G 13.
010 8
08 BS '\b' (backspace)
110 72
48 H 14.
011 9
09 HT '\t' (horizontal tab)
111 73
49 I 15.
012 10 0A LF '\n' (new line)
112 74 4A J 16.
013 11 0B VT '\v' (vertical tab)
113 75 4B K 17.
014 12 0C FF '\f' (form feed)
114 76 4C L 18.
015 13 0D CR '\r' (carriage ret)
115 77 4D M 19.
016 14 0E SO (shift out)
116 78 4E N 20.
017 15 0F SI (shift in)
117 79 4F O 21.
020 16
10 DLE (data link escape)
120 80
50 P 22.
021 17
11 DC1 (device control 1)
121 81
51 Q 23.
022 18
12 DC2 (device control 2)
122 82
52 R 24.
023 19
13 DC3 (device control 3)
123 83
53 S 25.
024 20
14 DC4 (device control 4)
124 84
54 T 26.
025 21
15 NAK (negative ack.)
125 85
55 U 27.
026 22
16 SYN (synchronous idle)
126 86
56 V 28.
027 23
17 ETB (end of trans. blk)
127 87
57 W 29.
030 24
18 CAN (cancel)
130 88
58 X 30.
031 25
19 EM (end of medium)
131 89
59 Y 31.
032 26 1A SUB (substitute)
132 90 5A Z 32.
033 27 1B ESC (escape)
133 91 5B [ 33.
034 28 1C FS (file separator)
134 92 5C \ '\\ ' 34.
035 29 1D GS (group separator)
135 93 5D ] 35.
036 30 1E RS (record separator)
136 94 5E ^ 36.
037 31 1F US (unit separator)
137 95 5F _ 37.
040 32
20 SPACE
140 96
60 ` 38.
041 33
21 !
141 97
61 a 39.
042 34
22 "
142 98
62 b 40.
043 35
23 #
143 99
63 c 41.
044 36
24 $
144 100
64 d 42.
045 37
25 %
145 101
65 e 43.
046 38
26 &
146 102
66 f 44.
047 39
27 ?
147 103
67 g 45.
050 40
28 (
150 104
68 h 46.
051 41
29 )
151 105
69 i 47.
052 42 2A *
152 106 6A j 48.
053 43 2B +
153 107 6B k 49.
054 44 2C ,
154 108 6C l 50.
055 45 2D -
155 109 6D m 51.
056 46 2E .
156 110 6E n 52.
057 47 2F /