<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        mysqlInnodb表空間卸載、遷移、裝載的使用方法

        來源:懂視網 責編:小采 時間:2020-11-09 21:05:44
        文檔

        mysqlInnodb表空間卸載、遷移、裝載的使用方法

        mysqlInnodb表空間卸載、遷移、裝載的使用方法:條件:2臺服務器:A和B,需要A服務器上的表遷移到B服務器。Innodb表:sysUser,記錄數:351781。以下測試在MySQL 5.5.34中進行。開始處理:1:在B服務器上建立sysUser表,并且執行: 代碼如下:zjy@B : db_test 09:50:30>alter
        推薦度:
        導讀mysqlInnodb表空間卸載、遷移、裝載的使用方法:條件:2臺服務器:A和B,需要A服務器上的表遷移到B服務器。Innodb表:sysUser,記錄數:351781。以下測試在MySQL 5.5.34中進行。開始處理:1:在B服務器上建立sysUser表,并且執行: 代碼如下:zjy@B : db_test 09:50:30>alter

        條件:
        2臺服務器:A和B,需要A服務器上的表遷移到B服務器。
        Innodb表:sysUser,記錄數:351781。
        以下測試在MySQL 5.5.34中進行。
        開始處理:
        1:在B服務器上建立sysUser表,并且執行:

        代碼如下:
        zjy@B : db_test 09:50:30>alter table sysUser discard tablespace;

        2:把A服務器表的表空間(ibd)復制到B服務器的相應數據目錄。
        3:修改復制過來的ibd文件權限:

        代碼如下:
        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

        報錯了,查看錯誤日志:

        代碼如下:
        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.
        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

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

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

        代碼如下:
        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.
        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服務器上的表空間ID 為44132,而B服務器上的表空間ID為2436。(因為A是測試機子,經常做還原操作,所以表空間ID已經很大了,正常情況下。表空間ID不可能這么大。

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

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

        代碼如下:
        #!/bin/env python
        # -*- encoding: utf-8 -*-

        import MySQLdb
        import datetime

        def 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 i
                create_table(conn)
                drop_table(conn)

        也可以開啟多線程去處理,加快效率。
        當執行完之后,再重新按照上面的1-3步驟進行一次,最后再裝載:

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

        要是再提示A表空間ID大于B表的話,就再手動的按照腳本里面的方法來增加ID,這時候就只需要增加個位數就可以追上A的表空間ID了。
        總結:
        上面只是一個方法,雖然可以遷移Innodb,但是出問題之后可能會引其Innodb的頁損壞,所以最安全的還是直接用mysqldump、xtrabackup等進行遷移。
        5.6 可以不用考慮這些tablespace id,可以直接import 進來。

        代碼如下:
        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

        您可能感興趣的文章:

      1. 深度解析MySQL 5.7之臨時表空間
      2. 關于JDBC與MySQL臨時表空間的深入解析
      3. mysql 表空間及索引的查看方法
      4. 淺析mysql 共享表空間與獨享表空間以及他們之間的轉化
      5. MySQL 清除表空間碎片的實例詳解
      6. MySQL判別InnoDB表是獨立表空間還是共享表空間的方法詳解
      7. MySQL 5.7臨時表空間如何玩才能不掉坑里詳解
      8. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        mysqlInnodb表空間卸載、遷移、裝載的使用方法

        mysqlInnodb表空間卸載、遷移、裝載的使用方法:條件:2臺服務器:A和B,需要A服務器上的表遷移到B服務器。Innodb表:sysUser,記錄數:351781。以下測試在MySQL 5.5.34中進行。開始處理:1:在B服務器上建立sysUser表,并且執行: 代碼如下:zjy@B : db_test 09:50:30>alter
        推薦度:
        標簽: 遷移 mysql 表空間
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 巨胸喷奶水www永久免费| 亚洲AV综合色区无码一二三区| 4hu四虎免费影院www| 免费又黄又爽又猛的毛片| 无套内谢孕妇毛片免费看看| 国产一区二区免费在线| 免费精品久久久久久中文字幕 | 边摸边吃奶边做爽免费视频网站| 精品国产麻豆免费网站| 久久亚洲中文无码咪咪爱| 亚洲不卡无码av中文字幕| 夜夜爽妓女8888视频免费观看| 亚洲精品无码久久久久AV麻豆| 巨胸喷奶水www永久免费| 亚洲成年人在线观看| 美女被免费喷白浆视频| 亚洲人成网站色7799| 国产午夜鲁丝片AV无码免费| yellow视频免费看| 亚洲四虎永久在线播放| 久久这里只有精品国产免费10| 久久人午夜亚洲精品无码区| 亚洲福利精品一区二区三区| 18禁超污无遮挡无码免费网站| 亚洲校园春色小说| 国产亚洲精品免费| A片在线免费观看| 麻豆狠色伊人亚洲综合网站| 国产免费午夜a无码v视频| 欧洲人成在线免费| 国产精品亚洲自在线播放页码| 亚洲国产天堂久久综合| 无码国产精品一区二区免费vr | 亚洲av日韩片在线观看| 无码av免费一区二区三区| 亚洲精品二三区伊人久久| 亚洲欧洲日本在线| 青青草免费在线视频| 三级毛片在线免费观看| 亚洲偷自精品三十六区| 亚洲真人无码永久在线|