日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Innodb 表空间卸载、迁移、装载

發(fā)布時間:2024/7/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Innodb 表空间卸载、迁移、装载 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????? 從MySQL的Innodb特性中我們知道,Inndob的表空間有共享和獨享的特點,如果是共享的。則默認(rèn)會把表空間存放在一個文件中(ibdata1),當(dāng)開啟獨享表空間參數(shù)Innodb_file_per_table時,會為每個Innodb表創(chuàng)建一個.ibd的文件。文章討論在獨享表空間卸載、裝載、遷移Innodb表的情況。

條件:

2臺服務(wù)器:A和B,需要A服務(wù)器上的表遷移到B服務(wù)器。

Innodb表:sysUser,記錄數(shù):351781。

以下測試在MySQL 5.5.34中進(jìn)行。

開始處理:

1:在B服務(wù)器上建立sysUser表,并且執(zhí)行:

zjy@B : db_test 09:50:30>alter table sysUser discard tablespace;

2:把A服務(wù)器表的表空間(ibd)復(fù)制到B服務(wù)器的相應(yīng)數(shù)據(jù)目錄。

3:修改復(fù)制過來的ibd文件權(quán)限:

chown mysql:mysql sysUser.ibd

4:最后就開始加載:

zjy@B : db_test 10:00:03>alter table sysUser import tablespace; ERROR 1030 (HY000): Got error -1 from storage engine

報錯了,查看錯誤日志:

131112 10:05:44 InnoDB: Error: tablespace id and flags in file './db_test/sysUser.ibd' are 2428 and 0, but in the InnoDB InnoDB: data dictionary they are 2430 and 0. InnoDB: Have you moved InnoDB .ibd files around without using the InnoDB: commands DISCARD TABLESPACE and IMPORT TABLESPACE? InnoDB: Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html InnoDB: for how to resolve the issue. 131112 10:05:44 InnoDB: cannot find or open in the database directory the .ibd file of InnoDB: table `db_test`.`sysUser` InnoDB: in ALTER TABLE ... IMPORT TABLESPACE

當(dāng)遇到這個的情況:A服務(wù)器上的表空間ID 為2428,而B服務(wù)器上的表空間ID為2430。所以導(dǎo)致這個錯誤發(fā)生,解決辦法是:讓他們的表空間ID一致,即:B找出表空間ID為2428的表(CREATE TABLE innodb_monitor (a INT) ENGINE=INNODB;),修改成和sysUser表結(jié)構(gòu)一樣的的表,再import。要不就把A服務(wù)器的表空間ID增加到大于等于B的表空間ID。(需要新建刪除表來增加ID)

要是A的表空間ID大于B的表空間ID,則會有:

131112 11:01:45 InnoDB: Error: tablespace id and flags in file './db_test/sysUser.ibd' are 44132 and 0, but in the InnoDB InnoDB: data dictionary they are 2436 and 0. InnoDB: Have you moved InnoDB .ibd files around without using the InnoDB: commands DISCARD TABLESPACE and IMPORT TABLESPACE? InnoDB: Please refer to InnoDB: http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html InnoDB: for how to resolve the issue. 131112 11:01:45 InnoDB: cannot find or open in the database directory the .ibd file of InnoDB: table `db_test`.`sysUser` InnoDB: in ALTER TABLE ... IMPORT TABLESPACE

這時的情況:A服務(wù)器上的表空間ID 為44132,而B服務(wù)器上的表空間ID為2436。(因為A是測試機子,經(jīng)常做還原操作,所以表空間ID已經(jīng)很大了,正常情況下。表空間ID不可能這么大。

既然表空間ID不對導(dǎo)致這個錯誤報出,那我們手動的讓B的表空間ID追上A的表空間ID。

需要建立的表數(shù)量:44132-2436 = 41696個,才能追上。因為他本身就需要再建立一個目標(biāo)表,所以需要建立的表數(shù)量為:41695。不過安全起見,最好也不要超過41695,以防B的表空間ID超過了A,則比如設(shè)置安全的值:41690,即使B沒有到達(dá)A表空間ID的值,也應(yīng)該差不多了,可以再手動的去增加。用一個腳本跑(需要建立的表比較多),少的話完全可以自己手動去處理:

#!/bin/env python # -*- encoding: utf-8 -*-import MySQLdb import datetimedef create_table(conn):query = ''' create table tmp_1 (id int) engine =innodb'''cursor = conn.cursor()cursor.execute(query)conn.commit() def drop_table(conn):query = ''' drop table tmp_1'''cursor = conn.cursor()cursor.execute(query)conn.commit()if __name__ == '__main__':conn = MySQLdb.connect(host='B',user='zjy',passwd='123',db='db_test',port=3306,charset='utf8')for i in range(41690):print icreate_table(conn)drop_table(conn) View Code

也可以開啟多線程去處理,加快效率。

當(dāng)執(zhí)行完之后,再重新按照上面的1-3步驟進(jìn)行一次,最后再裝載:

zjy@B : db_test 01:39:23>alter table sysUser import tablespace; Query OK, 0 rows affected (0.00 sec)

要是再提示A表空間ID大于B表的話,就再手動的按照腳本里面的方法來增加ID,這時候就只需要增加個位數(shù)就可以追上A的表空間ID了。

總結(jié):

上面只是一個方法,雖然可以遷移Innodb,但是出問題之后可能會引其Innodb的頁損壞,所以最安全的還是直接用mysqldump、xtrabackup等進(jìn)行遷移。

5.6 可以不用考慮這些tablespace id,可以直接import 進(jìn)來。

2013-11-12 15:25:09 2378 [Note] InnoDB: Sync to disk 2013-11-12 15:25:09 2378 [Note] InnoDB: Sync to disk - done! 2013-11-12 15:25:09 2378 [Note] InnoDB: Phase I - Update all pages 2013-11-12 15:25:09 2378 [Note] InnoDB: Sync to disk 2013-11-12 15:25:09 2378 [Note] InnoDB: Sync to disk - done! 2013-11-12 15:25:09 2378 [Note] InnoDB: Phase III - Flush changes to disk 2013-11-12 15:25:09 2378 [Note] InnoDB: Phase IV - Flush complete

?

更多信息見:

http://www.iamcjd.com/?p=1307 p10~13

http://imysql.cn/2008_12_17_migrate_innodb_tablespace_smoothly

http://www.chriscalender.com/?p=28

轉(zhuǎn)載于:https://www.cnblogs.com/zhoujinyi/p/3419142.html

總結(jié)

以上是生活随笔為你收集整理的Innodb 表空间卸载、迁移、装载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美在线 | 国产一区二区波多野结衣 | 国产巨乳在线观看 | 日韩亚洲区| 在线免费观看视频你懂的 | 欧美高清性xxxxhd | www.av天天| 在线观看免费高清视频 | 亚洲永久在线观看 | 亚洲欧美高清视频 | 美女视频在线观看免费 | 日韩av不卡一区 | 欧美大片在线观看 | 国产欧美一区二区三区免费看 | 一级毛片儿 | 欧美中日韩在线 | 少妇高潮灌满白浆毛片免费看 | 永久黄色网址 | 我们2018在线观看免费版高清 | 日韩欧美亚洲一区二区三区 | 国产精品美女久久久久av爽 | 午夜一区 | 天堂网视频在线 | 国产亚洲精品久久 | 色999日韩| 亚洲美女屁股眼交8 | 男女无遮挡网站 | 欧美91av| 麻豆网站在线观看 | 五月六月丁香 | 成片免费观看视频 | 日皮视频免费看 | 制服师生在线 | 亚洲精品在线观 | 全国男人的天堂网 | 亚洲天堂2013 | 日本视频精品 | 亚洲国产高清在线 | 成年人a级片 | 久久久久国色av免费观看性色 | 无人在线观看高清视频 单曲 | 欧美性猛交xxxx黑人猛交 | 99久久精品日本一区二区免费 | 夜夜骑夜夜骑 | 草草草av| 激情综合网激情 | 色婷婷久久一区二区三区麻豆 | 亚洲av综合色区无码另类小说 | 亚洲伦理一区二区三区 | 操天天操 | 免费观看黄色网址 | 亚洲成人精品在线播放 | 男生捅女生肌肌 | 精品一区精品二区 | 四虎影院在线观看免费 | 午夜日韩在线 | avtt中文字幕 | 久国产视频 | 麻豆精品在线视频 | 久久久综合精品 | 靠逼在线观看 | 日韩毛片一区二区三区 | 亚洲欧洲成人精品久久一码二码 | 伊人久久香| 激情久久久 | 久久久久久久久综合 | 在线成人免费 | 欧美肉丝袜videos办公室 | 插插插av| 成人av综合| 熟妇人妻无乱码中文字幕真矢织江 | 国产一区精品在线观看 | 欧美a级成人淫片免费看 | 欧美一区二区久久 | xfplay5566色资源网站 | 人妻丝袜一区二区三区 | 国产aaa视频| 国产夫妻性生活视频 | 久久夫妻视频 | 真实乱偷全部视频 | 日韩一区二区三区免费 | 亚洲日本香蕉 | 超碰成人免费 | 亚洲αv| 曰本黄色大片 | 永久免费黄色片 | 午夜免费小视频 | 日韩一区二区三区不卡 | 国产男女猛烈无遮挡 | 篠田优在线观看 | 久久我不卡 | 欧美丰满美乳xxx高潮www | 狠狠干2017| 国产免费视频一区二区三区 | 日本女人黄色 | 欧美成人三级 | 炕上如狼似虎的呻吟声 | 欧美色图13p| 国产丝袜视频在线 |