簡體   English   中英

將MySQL轉儲導入到特定的表空間

[英]Import MySQL dump into a specific tablespace

Windows 7 64位MySQL 5.7

所有,

我有一台帶有兩個驅動器的服務器:C:&E:。 我想在E驅動器上創建/存儲我的所有數據庫對象(表,索引等),因為它是一個較大的磁盤。 我有一個來自以前的MySQL實例的轉儲文件,我想將其導入到位於E上的表空間(ts1)中。(實際上,我有兩個版本的轉儲文件-一個僅包含創建表/過程,另一個包含數據有沒有一種方法可以導入帶有數據的轉儲文件,以便所有對象和數據最終都位於E:上的ts1中?

我嘗試更改my.ini(cfg)文件中的datadir,但是當我嘗試重新啟動實例/服務時,它失敗(Windows告訴我該服務嘗試啟動然后停止。)

有人可以告訴我將轉儲文件導入到特定表空間的推薦方法嗎? 這是我自己的個人開發服務器,因此可以承受停機時間,可以中斷實例或可能提出的任何其他根本性解決方案。

我曾經是一名高級Oracle DBA(因此我可能不正確地考慮了表空間),但是在使用MySQL時已經“一個月大”了(因此請不要排除基本/簡單的建議)。

請幫忙。

提前致謝。

史蒂夫

不幸的是,MySQL還不支持為模式中的所有表定義默認表空間。 您只能為每個表顯式聲明一個表空間。

因此,我建議您將需要兩個轉儲文件:一個僅包含數據定義語言(DDL,即CREATE TABLE語句),另一個僅包含數據(INSERT語句)。 您可以使用mysqldump程序執行此操作,該程序具有--no-data--no-create-info 這些選項產生的轉儲文件分別僅包含DDL或僅包含INSERT語句。 有關完整的文檔,請參見https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html

然后,您可以遵循以下策略:

  1. 運行DDL轉儲文件以創建空表。

  2. 創建一個表空間 ,並使用E:驅動器上的數據文件定義它。

  3. 為每個表更改ALTER TABLE,並使它們使用E:上的新常規表空間。

  4. 運行您的數據轉儲文件以導入數據。

也許您不再能夠從以前的MySQL安裝中制作轉儲文件。 您只有當前的轉儲文件。 然后,您可能必須弄清楚如何使用文本編輯器從數據文件中分離CREATE TABLE語句,如果給它一個大文件,該文本編輯器將不會消失,否則您將無法使用sed這樣的過濾文本工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM