新建空的資料庫, 匯入上述表結構
刪除對應的表空間, 將表對應的ibd檔案複製到資料目錄下
重新插入表空間
mysql
備份var目錄, 初始化資料庫mysqld --initialize-insecure
通過mysqlfrm可以從frm中獲取表結構
新建空的資料庫, 匯入上述表結構
刪除對應的表空間, 將表對應的ibd檔案複製到資料目錄下
重新插入表空間
# 原始碼安裝
python setup.py install
# 檢視表結構
# 新增mysql例項來恢復, 能輸出編碼
# --port 必須和3306不同
mysqlfrm --server=root:rootpassword@localhost:3306 wehospital:t_bind.frm --port=3307
# 通過引數--diagnostic 來恢復
mysqlfrm --diagnostic .t_bind.frm
# 匯出所有表結構到檔案
mysqlfrm --server=root:[email protected] --port 3307 ./*.frm >paycenter.sql
# 因為在命令中使用了資料庫命令, 刪除第一行警告
sed -i "1d" paycenter.sql
# 在建立表結構語句結尾加上;
sed -i "s/.*engine=.*/&;/" paycenter.sql
raise errors.internalerror(「unread result found」)
# /usr/local/lib/python2.7/site-packages/mysql/utilities/common/server.py line 1327 增加
cur = self.db_conn.cursor(buffered=
true
)
『ascii』 codec can』t decode byte 0xe8 in position 10
importsys
reload
(sys)
# sys.setdefaultencoding('utf8')
sys.setdefaultencoding(
'gb18030'
)
create database if not exists `paycenter` default character set utf8 collate utf8_general_ci;
cat paycenter.sql |mysql -uroot -p paycenter
刪除對應的表空間
-- 在資料庫檔案下執行
alter
table t_account discard
tablespace
;
拷貝ibd檔案, 需要修改許可權為mysql:mysql
ls *.frm|awk -f "." ''
-- 在資料庫檔案下執行
alter
table t_account import
tablespace
;
frm和 ibd恢復資料
昨日晚上開發告訴我不小心truncate兩個表的資料,要求還原。結果在阿里雲上找到了備份內容,結果是物理備份檔案.frm ibd。心中一萬個草泥馬啊。沒辦法,開始還原吧。1 檢視測試機mysql配置檔案位置 root localhost mysql which mysqld usr sbin mys...
mysql由 frm和 ibd恢復資料
資料小常識 frm存放資料庫的表結構 ibd存放資料內容 1 建立資料庫 2 建立需要恢復的表 這樣就會在對應的資料庫下產生.frm和.ibd檔案 跳坑 建立表時候的字段和需要被恢復的表的一致 3 執行 alter table 表名字 discard tablespace 比如 alter tabl...
通過日誌恢復資料庫
建立測試資料庫test create database test onprimary name test data.mdf filename d test data.mdf logon name test data.ldf filename d test data.ldf 建立測試表 create ...