當我們不小心清空了mysql數(shù)據(jù)庫中的表時,如果沒有備份,就很容易造成數(shù)據(jù)丟失, 對于這種情況,下面是幾種恢復方式:
1. 使用undo表空間
# 修改my.cnf文件,增加參數(shù)undo_tablespaces,指定undo表空間目錄 [mysqld] ... undo_tablespaces = /path/to/directory ... # 重啟mysql服務 systemctl restart mysqld.service # 創(chuàng)建一張新表,名稱和清空的表相同,使用命令顯示undo文件序號 USE dbname; CREATE TABLE table_name LIKE table_name_bak; # table_name_bak為備份表的名稱 SELECT * FROM information_schema.INNODB_SYS_TABLES WHERE NAME LIKE '%table_name%'\G; # 復制undo文件到新表的目錄下,并更改ownership(所屬者),并讓新表解鎖 cp /path/to/ibdata1 /path/to/directory/ chown mysql:mysql /path/to/ibdata1 echo "unlock tables;" | mysql -uroot -p
2. 使用binlog日志
# 在清空表之前備份一份binlog FLUSH BINARY LOGS; # 查看binlog文件列表 SHOW BINARY LOGS; # 找到清空表的binlog文件名稱和位置 # 使用mysqlbinlog命令解析該文件并恢復 mysqlbinlog /path/to/binlog_filename | mysql -uroot -p
3. 使用數(shù)據(jù)恢復工具
如果以上方法都不行的話,可以考慮一些第三方數(shù)據(jù)恢復工具,比如Recuva、EaseUS Data Recovery等。
上一篇css圖片漸變色代碼
下一篇css圖片溢出水平