找回密码
 注册
查看: 1394|回复: 4

MySQL/mariadb误删ibdata1 ib_logfile0,ib_logfile1 恢复方法

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-12-15 01:00:03 | 显示全部楼层 |阅读模式
MySQL误删ibdata1 ib_logfile0,ib_logfile1 恢复方法:& U0 E( P! u# v8 j# S

' s4 f  o# E1 L- ~# Y3 _2 P  U恢复的步骤和数据库版本没有太大关系。
( m8 L8 I& g' C( o. K在linux操作系统中,如果文件从操作系统级别别rm掉,之前打开的文件进程仍持有相应的文件句柄,
( V. o) L5 j4 t6 d/ w$ Q所指向的文件仍然可以读写,且该文件的描述符可以从/proc目录中获得(不关闭MySQLd情况下).8 c4 F1 [/ z; ^0 g/ ^; i

' ]+ F/ @1 R+ K( b在删除3个文件后,MySQLd 仍是可以运行,对外服务的,MySQL一只保持InnoDB文件打开,因此,8 \, J' x2 S5 W, p' i
在工作中有必要监控文件是否存在。
  w1 f; S% s* j/ S4 w5 D发现文件被删除之后,不能重启InnoDB,因为启动InnoDB,检测到ibdata1,ib_logfile0,ib_logfile1' _# `6 a1 t2 C0 _
不存在,所以,将创建对应的空文件,InnoDB数据字典是空的,InnoDB无法使用原先存在的ibd文件,故,
  v& Q1 ~- I5 h' h% o# {# W$ b5 `MySQL不重启,快速恢复删除的文件是可能的。2 w( c! Q5 s" P6 n: P8 F3 y

1 f% T7 I) w; _6 b% O9 t  t5 I% F+ r& V8 M在MySQLd运行过程中,ibdata1,ib_logfile0,ib_logfile1一直运行在
* Q$ Z8 x# S% L9 B* t6 H/proc/mysql.pid/fd目录下,其中vm-mysql.pid是mysql进程的PID,获取方法:
: N) x! p, K, i+ }[root@mysql ~]# ls -l /proc/$(cat /opt/mysql/data2/mysql.pid)/fd | grep -e ibdata -e ib_% d9 a% o+ e/ ]) U
lrwx------ 1 root root 64 Oct 16 14:16 10 -> /opt/mysql/data2/ib_logfile1 (deleted)' W* }( E6 z1 U1 s2 E* F
lrwx------ 1 root root 64 Oct 16 14:16 4 -> /opt/mysql/data2/ibdata1 (deleted)7 a/ A- V$ T% t0 X4 u3 L
lrwx------ 1 root root 64 Oct 16 14:16 9 -> /opt/mysql/data2/ib_logfile0 (deleted)
: c8 G& e9 D; q0 O
5 t) m9 Z$ P( H但是,我们不能简单copy回源目录中,因在buffer pool有已经修改的页,这些页没有被写入磁盘,如果改变的页
3 Z; y1 N! H0 O没有永久写入,数据将会丢失,这些导致数据损坏和丢失。
2 @) D6 ~; _+ q6 ?% ^* \同样原因,我们不能做MySQL备份,仅能coping那些文件。7 p7 e) s/ s' }; j
因此,我们必须确保所有的修改全写入磁盘中。
+ l' C5 i& `0 [( |; F; d我们现在能做的阻止写,且等待InnoDB刷新所有的页。
% E% F7 z5 \2 G# _2 \6 X) z1.为了阻止写,我们要么停止应用程序或锁表。3 ]3 _9 M: s6 J2 K" k3 A
MariaDB [(none)]> flush tables with read lock;% N  h1 p$ i8 W7 n+ M
Query OK, 0 rows affected (0.01 sec). }6 o; @$ M' X% `. I7 Y- o1 O
# s" d" i  F, C8 w, H& [% u
2. show engine innodb status 中脏页刷新到磁盘,$ |0 i1 h. T$ O1 [: ?2 r
---# J2 v. z7 D4 u* S- y
LOG
' `1 N9 U' g' ~. a  H---
# ?7 L$ B+ @  C/ ]1 B. eLog sequence number 0 50355+ O0 R+ p- H! {
Log flushed up to   0 50355$ T1 L% ]: G7 B  v. F
Last checkpoint at  0 50355
. h' f7 s- X. q0 pending log writes, 0 pending chkp writes( F& R$ b' O$ U& }
39 log i/o's done, 0.00 log i/o's/second# Y( L# L* {/ d2 @* \

: N7 d' L. l8 ?! b- P- x4 U加速脏页刷新,设置dirty pages percentage to zero:
7 o  [0 l$ b; p% F- UMariaDB [(none)]> set global innodb_max_dirty_pages_pct=0;, G8 u  C! g' X" ?: B
Query OK, 0 rows affected (0.00 sec). c8 r( y9 E+ O
. y( T  ^. n% X" y+ ?
3.确保所有后台进程已经完成自己的工作,也是重要的。
* a! R( z5 g% `' R' p注意,插入缓冲线程,它的大小等于14 x' H1 V7 j, _# f8 g( P) a/ f' [
-------------------------------------" I0 D$ `* M) y
INSERT BUFFER AND ADAPTIVE HASH INDEX9 u0 [! K' Q6 h2 R
-------------------------------------
8 r8 A7 X' m5 C- {( _5 ^Ibuf: size 1, free list len 0, seg size 2,+ p. N- h! X$ ?- l* n
0 inserts, 0 merged recs, 0 merges
% a+ v9 D3 D6 }; L8 ?+ ~$ lHash table size 34679, node heap has 1 buffer(s)- I5 K2 J; A/ W" ?2 K5 |# j
0.00 hash searches/s, 0.00 non-hash searches/s
0 s, y" i5 W3 }: d0 Y% Y* \* r9 [4 S, [" i4 u  X( N( c" K$ s
4.后台写进程purge thread,清除所有事务。( c: R7 o; T: E
------------
' g5 B& W& C0 o  qTRANSACTIONS
  \: c5 ^% i3 J% [" \------------- a* [. n5 b1 e
Trx id counter 0 784
" q6 s4 Z: M2 z. lPurge done for trx's n:o < 0 0 undo n:o < 0 03 q" _1 i& |5 |4 |( W, W! J
但是,如果上次事务没有需要清理操作Trx id计数比较大(如,SELECT),
* I' l" y6 _$ e% i! }1 t" r/ ^在这种情况下,至少要保证InnoDB不再做任何写动作。
3 V& v0 |+ F$ J5 F' [  n8 g: T--------
3 B% r' y! Z# q, I  rFILE I/O
; t; W' W; A$ T: ^--------- D9 a1 u4 m  V1 c9 ~
I/O thread 0 state: waiting for i/o request (insert buffer thread)
7 _/ Z5 R( k  c0 D( ]  QI/O thread 1 state: waiting for i/o request (log thread)/ G6 B$ {/ {* }% z" K- u
I/O thread 2 state: waiting for i/o request (read thread)$ i; h. _* g8 i
I/O thread 3 state: waiting for i/o request (write thread)2 }/ T" g% v7 L/ o# A
Pending normal aio reads: 0, aio writes: 0,& Y& e2 X. V- j, A  V1 @
ibuf aio reads: 0, log i/o's: 0, sync i/o's: 05 O8 V/ ^: a! Q+ U7 Y( K
Pending flushes (fsync) log: 0; buffer pool: 0
' ?4 M* r& }1 m0 @0 OS file reads, 81 OS file writes, 59 OS fsyncs' A! b, a' M" h1 |$ r
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
) ~' X' L0 V) o- c, @9 p5 q
. Q: k" I; L, R; w$ R& q2 W! N经历了4步,所有被修改脏页刷新到磁盘,现在开始copy InnoDB 文件到源目录:# l/ O) v" X1 h/ l
[root@mysql ~]# cp /proc/$(cat /opt/mysql/data2/mysql.pid)/fd/4 /opt/mysql/data2/ibdata1
$ H+ P+ w2 n' V& E2 X5 z# X[root@mysql ~]# cp /proc/$(cat /opt/mysql/data2/mysql.pid)/fd/9 /opt/mysql/data2/ib_logfile08 {* D, p6 h3 d0 x1 @
[root@mysql ~]# cp /proc/$(cat /opt/mysql/data2/mysql.pid)/fd/10 /opt/mysql/data2/ib_logfile1% j4 ^, P7 E- ^
# Z" |  l" L# I2 s1 Y! x& z- W
5.修改ib*所属用户
' |$ y" K8 Y  Cchown -R mysql ib*
) b. K1 l9 l! h6 c6 v  ?6 ^) {( Y
3 Q, U- B# E5 y$ C8 t0 @6.重启MySQLd8 T6 l- E* H4 m' t
........0 g7 j2 T4 B) q! W9 a* |* |$ U
& E+ f3 X- N) l& ]( _
结论:
% c3 k/ F9 H4 I5 i+ k' o: a( L1.监控InnoDB文件 ibdata 和 ib_logfile* 是否存在
  J" G$ Y( h2 v! ]: C4 x# p) {2.清楚恢复策略,否则不要重启MySQLd
+ ~. ]! _' r; J+ E* B

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-12-15 01:00:04 | 显示全部楼层
于是再/ect/my.cnf中加入max_connections=1000    wait_timeout=5这两个配置
& e2 t2 a2 A* V( g8 H5 j) e* ?* K( R* D+ M
! u9 O* y' w; R+ a# i

* _8 a5 ~, P3 q$ {( H重启mysql,启动成功,但是项目却无法打开,又重新打开mysql日志发现他一直无休止的重启,百度搜了好多办法都不行
9 J, [  o/ [8 T0 t, {5 }) R' d9 {2 U' X9 b
后来看到这段配置0 t& s' R/ N5 I0 x4 ^
8 L6 U( ]* {9 D) a, D+ F  j% G

/ Z4 I. K% _* t9 h8 M$ N) B4 a' w8 @/ N6 b
我想应该是因为文件问题导致ibdata1损坏了,然后从1 到6全部都试了一遍,效果却是然并卵+ y% @, W2 r/ H2 S; @; ~5 m* `' R
9 e$ `6 Z5 J/ `" W
到最后是这样配置的/ K$ m& A# N* Z% s  m; |& H7 `
+ L9 M9 Y# E: z. ?
https://img-blog.csdn.net/20180511171205193?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dsX2FuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70
4 Q# F) L7 n# h4 H: L
+ R- d! N; ?9 o1 _然后重启mysql没有问题,然后打开项目发现还是访问不了,后来发现tomcat停了,重启tomcat,完美解决6 S. h$ k2 A: M/ S8 S3 {

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-12-15 01:00:05 | 显示全部楼层
操作步骤:
! J& x8 i. l. ]: b* @

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-12-15 01:00:06 | 显示全部楼层

概念:& n4 J& z, X1 O( W" ^1 ~+ R! P3 r+ U4 l
事務日誌或稱redo日誌,在mysql中默認以ib_logfile0,ib_logfile1名稱存在,可以手工修改參數,調節開啟幾組日誌來服務於當前mysql數據庫,mysql采用順序,循環寫方式,每開啟一個事務時,會把一些相關信息記錄事務日誌中(記錄對數據文件數據修改的物理位置或叫做偏移量);2 z- X. K+ w; U- X* y. X: L2 S
這個系列文件個數由參數innodb_log_files_in_group控制,若設置為4,則命名為ib_logfile0~3。. D6 o6 }/ @6 i5 Q. T
這些文件的寫入是順序、循環寫的,logfile0寫完從logfile1繼續,logfile3寫完則logfile0繼續。: h6 _+ L0 \& O9 W/ A* G

3 I: P, M& Q9 V9 o- S, F) T) l作用:
$ P& S2 t* [6 e: `0 j% l! }在系統崩潰重啟時,作事務重做;在系統正常時,每次checkpoint時間點,會將之前寫入事務應用到數據文件中。- e4 J$ T; _* K" M5 v" I
4 v" s( |8 w0 L
Ib_logfile的checkpoint field
6 _" X! i' f7 @0 A  l實際上不僅要記錄checkpoint做到哪兒(LOG_CHECKPOINT_LSN),還要記錄用到了哪個位置(LOG_CHECKPOINT_OFFSET)等其他信息。所以在ib_logfile0的頭部預留了空間,用於記錄這些信息。
9 \& L8 B; l( c% R8 \6 z6 V% L$ P因此即使使用後面的logfile,每次checkpoint完成後,ib_logfile0都是要更新的。同時你會發現所謂的順序寫盤,也並不是絕對的2 j6 @8 \8 ~$ ]+ x" N4 E4 I( o
相關的一些數字8 a2 z; }4 w' V
a) InnoDB留了兩個checkpoint filed,按照註釋的解釋,目的是為了能夠“write alternately”5 S2 u, g; x* R$ i0 E
b) 每個checkpint field需要的大小空間為304字節。(相關定義在log0log.h)2 s  H9 n) V  N' ~
c) 第一個checkpoint的起始位置在ib_logfile0的第512字節(OS_FILE_LOG_BLOCK_SIZE)處;* [$ l9 S! z2 D! n* [
d) 第二個在1536 (3 * OS_FILE_LOG_BLOCK_SIZE)字節處。+ ~4 `! N" [( t: m4 b6 F) i

5 N2 V. j) H$ u& f3 P! ]
" Y+ x! S+ R1 _' K7 U2 Z8 g4 A特點:
2 Q7 x8 Y, o; c' A2 f" k. mredo log只是記錄所有innodb表數據的變化。
2 ]( M) M$ r1 L& f, Gredo log只是記錄正在執行中的dml以及ddl語句。: P# R5 U+ z+ k/ A4 I
redo log可以作為異常down機或者介質故障後的數據恢復使用

引入一個問題:在m/s環境中,innodb寫完ib_logfile後,服務異常關閉,會不會主庫能用ib_logfile恢復數據,而binlog沒寫導致從庫同步時少了這個事務?從而導致主從不一致;redo日誌寫入方式:1.ib_logfile寫入當前事務更新數據,並標上事務準備trx_prepare2.寫入bin-log3.ib_logfile當前事務提交提交trx_commit恢復方式:如果ib_logfile已經寫入事務準備,那麽在恢復過程中,會依據bin-log中該事務是否存在恢復數據。假設:1)結束後異常,因沒有寫入bin-log,從庫不會同步這個事務,主庫上,重啟時,在恢復日誌中這個事務沒有commit,即rollback這個事務.2)結束後異常,這會bin-log已經寫入,從庫會同步這個事務。主庫依據恢復日誌和bin-log,也正常恢復此事務綜上描述:bin-log寫入完成,主從會正常完成事務;bin-log沒有寫入,主從庫rollback事務;不會出現主從庫不一致問題.8 T; M6 d9 h8 v2 E% I) P
相關參數(全局&靜態):innodb_log_buffer_sizeinnodb_log_file_sizeinnodb_log_files_in_groupinnodb_log_group_home_dirinnodb_flush_log_at_trx_commitinnodb_log_buffer_size:事務日誌緩存區,可設置1M~8M,默認8M,延遲事務日誌寫入磁盤,把事務日誌緩存區想象形如"漏鬥"狀,會不停向磁盤記錄緩存的日誌記錄,而何時寫入通過參數innodb_flush_log_at_trx_commit控制,稍後解釋,啟用大的事務日誌緩存,可以將完整運行大事務日誌,' y8 {  c! j/ r2 C! o4 n" l8 |! }
暫時存放在事務緩存區中,不必(事務提交前)寫入磁盤保存,同時也起到節約磁盤空間占用;innodb_log_file_size:控制事務日誌ib_logfile的大小,範圍5MB
~4G;所有事務日誌ib_logfile0+ib_logfile1+..累加大小不能超過4G,事務日誌大,checkpoint會少,節省磁盤IO,但是大的事務日誌意味著數據庫crash時,恢復起來較慢.引入問題:修改該參數大小,導致ib_logfile文件的大小和之前存在的文件大小不匹配解決方式:在幹凈關閉數據庫情況下,刪除ib_logfile,而後重啟數據庫,會自行創建該文件;innodb_log_files_in_group:DB中設置幾組事務日誌,默認是2;innodb_log_group_home_dir:事務日誌存放目錄,不設置,ib_logfile0...存在在數據文件目錄下innodb_flush_log_at_trx_commit:控制事務日誌何時寫盤和刷盤,安全遞增:0,2,1事務緩存區:log_buffer;0:每秒一次事務緩存區刷新到文件系統,同時文件系統到磁盤同步,但是事務提交時,不會觸發log_buffer到文件系統同步;2:每次事務提交時,會把事務緩存區日誌刷新到文件系統中去,且每秒文件系統到磁盤同步;1:每次事務提交時刷新到磁盤,最安全;適用環境:0:磁盤IO能力有限,安全方便較差,無復制或復制延遲可以接受,如日誌性業務,mysql損壞丟失1s事務數據;2:數據安全性有要求,可以丟失一點事務日誌,復制延遲也可以接受,OS損壞時才可能丟失數據;1:數據安全性要求非常高,且磁盤IO能力足夠支持業務,如充值消費,敏感業務;

6 Y* n4 v4 [8 I( B# }9 B, ^+ w0 N8 m3 _9 c  J1 O! ]1 O; g

引入ib_logfile的寫入策略

1、基本概念
. o: u) M; o7 ?# ^; ha)、ib_logfile文件個數由innodb_log_files_in_group配置決定,若為2,則在datadir目錄下有兩個文件,命令從0開始,分別為ib_logfile0和ib_logfile.
- [4 f8 _& V3 L( f' A1 u3 z( Ib)、文件為順序寫入,當達到最後一個文件末尾時,會從第一個文件開始順序復用。
. t" H3 B% l9 ~# Pc)、lsn: Log Sequence Number,是一個遞增的整數。 Ib_logfile中的每次寫入操作都包含至少1個log,每個log都帶有一個lsn。在內存page修復過程中,只有大於page_lsn的log才會被使用。
! z. W$ [( R3 R# G$ k& j. Zd)、lsn的保存在全局變量log_sys中。遞增數值等於每個log的實際內容長度。即如果新增的一個log長度是len,則log_sys->lsn += len.; t0 q3 Q; V3 s5 S% F* V' i, K
e)、ib_logfile每次寫入以512(OS_FILE_LOG_BLOCK_SIZE)字節為單位。實際寫入函數 log_group_write_buf (log/log0log.c)
* k) t5 s  W$ Kf)、每次寫盤後是否flush,由參數innodb_flush_log_at_trx_commit控制。- |# z$ d' V# T2 m1 _1 P' e
" r$ e' |5 b: A6 g9 ]
2 n: j2 o6 @; t  q* n
2、log_sys介紹5 |" T- ]& i8 W( O( H, K: N
log_sys是一個全局內存結構。以下說明幾個成員的意義。' K* ]3 S  n1 ^3 e! `6 [

lsn表示已經分配的最後一個lsn的值。
written_to_all_lsnn表示實際已經寫盤的lsn。需要這個值是因為並非每次生成log後就寫盤。
flushed_to_disk_lsn表示刷到磁盤的lsn。需要這個值是因為並非每次寫盤後就flush。
buf待寫入的內容保存在buf中
buf_sizebuf的大小。由配置中innodb_log_buffer_size決定,實際大小為innodb_log_buffer_size /16k * 16k。
buf_next_to_writebuf中下一個要寫入磁盤的位置
buf_freebuf中實際內容的最後位置。當buf_free> buf_next_to_write時,說明內存中還有數據未寫盤。


/ c& o+ T9 G/ A9 t" B- i7 V, _
- a  S, |5 s8 V+ Q$ b
* _) J5 }5 K) B5 a3、相關更新- w( B7 Q( K8 k4 J( Y
用一個簡單的更新語句來說明log_sys以及ib_logfile的更新內容的過程。假設我們的更新只涉及到非索引的固定長度字段。
' G  W+ S7 b: W. i3 \' K8 Ga) 在bufferpool中寫入undo log。 對於一個單一的語句,需要先創建一個undolog頭。8 W+ \/ N+ b; X2 W6 T3 k1 C5 A
b) 在bufferpool中寫入undo log的實際內容。
1 S$ i2 R. \% l& L9 O% |c) 在log_sys->buf中寫入buffer page的更新內容。此處保存了更新的完整信息。
3 {  h: G' d6 }d) 在log_sys->buf中寫入啟動事務(trx_prepare)的日誌
# w7 o. K1 V4 {$ Ve) 將c、d更新的log內容寫入ib_logfile中。
# L6 s" a4 M. p& B( W2 q- P. Sf) 在log_sys->buf中寫入事務結束(trx_commit)的日誌! a8 G& d$ ]( R6 Y
g) 將f步驟的log內容寫入ib_logfile中。
6 `9 B# J' y9 v9 @' L1 o5 M4 T+ {, z# ^1 `6 T6 b0 ]$ u
4、說明
9 O3 P5 `+ d- ]  y2 Y9 @a) 完成上述所有操作時,數據文件還沒有更新。+ }; |. `- h( J% R; w/ r' H2 [6 K
b) 每次寫入log_sys->buf時同時更新lsn和buf_free。 每次寫ib_logfile時同時更新written_to_all_lsn和buf_next_to_write;
& a% J. D  m3 b) s. C5 Fc) 每次寫ib_logfile時以512字節為對齊,如需寫入600字節,則實際寫入1k。寫到最後一個文件末尾則從第一個文件重復使用。( p" R. e7 T7 n5 G6 A; X$ z3 J
d) 從上述流程看到,在a~d過程中若出現異常關閉,由於沒有寫入到磁盤中,因此整個事務放棄;若在e剛完成時出現異常關閉,雖然事務內容已經寫盤,但沒有提交。在重啟恢復的時候,發現這個事務還沒有提交,邏輯上整個事務放棄。 (重啟日誌中會有Found 1 prepared transaction(s) in InnoDB字樣)。在g完成後出現異常關閉,則能夠在重啟恢復中正常提交。
. F' I  y* e, r9 D6 _, q
4 p  E$ m3 d  ~0 x$ k% E- D在e和f之間會寫mysql的bin-log,若bin-log寫完前異常關閉,事務無效,bin-log寫入成功後,則異常重啟後能夠根據bin-log恢復事務的修改。
, ?" @# \0 m: V' v& \: u4 `8 y6 b' n3 ?+ W- N: v0 |1 X6 f8 x
e) 若涉及到索引更新,在步驟c之後會增加索引更新的log。由於索引可能有merge過程,因此在merge過程中會另外增加寫入一個log。但事務完全提交仍在步驟g中。索引的更新由於已經寫盤,並不會因此丟失。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-12-15 01:00:07 | 显示全部楼层
ib_logfile0 记录系统的回滚,重做日志。* Y, B  I) {# v/ D2 P0 c

( D5 q) F+ c* n7 n% U4 Amysql-bin.000011 系统的所有更新记录。) I4 H" J/ b2 z$ r' X* B
' J/ i# z" c. E
/ L& h; d( i, m
如果需要更详细的则建议看一下数据库原理方面的教材,应该有一个章节讲这个redo,undo 日志的。 8 y/ T. [3 y% i! j
,ib_logfile0是重做日志,记录的是文件的物理更改         
( Y2 n4 O3 H  X& t0 v, O0 O- Cmysql-bin.000011是数据库更新日志  记录的是逻辑更改
. x' V$ h* b( A; y3 k
: @4 Y5 A7 W4 L9 \,
0 r4 o  \. Z! f- |  yib_logfile0是重做日志,也就是 在你修改数据之前,会先把 修改的操作 作为日志先记录下来。0 z" U8 ^: e& g5 I2 V
        
$ j8 N. `, c5 ^mysql-bin.000011是二进制日志,格式是二进制的,但是这个日志更加有用,比如 在我们做 数据库的主从复制时,这个二进制日志就是关键,mysql会把日志发送到slave,salve会接收日志,然后解析日志,把里面的sql语句重新应用到数据库里,于是就能同步数据了。9 T0 S+ O( ?+ v8 {: s
,ib_logfile0:记录的是redo log和undo log的信息,这里记录的基本是commit之前的数据。% W- m# W; f4 y) s+ w
9 A; c) _3 p+ L7 `! M, X  j
mysql-bin.000011:记录的是已经执行完毕的对数据库的dml和ddl信息,这里记录的基本是commit之后的数据信息。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:10 , Processed in 0.035916 second(s), 29 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表