當前位置:首頁 » 數據倉庫 » mysql復製表中的資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql復製表中的資料庫

發布時間: 2023-08-10 15:50:55

1. 如何將mysql的一個完整資料庫全部復制到另外一個資料庫

如果從庫上表 t 數據與主庫不一致,導致復制錯誤,整個庫的數據量很大,重做從庫很慢,如何單獨恢復這張表的數據?通常認為是不能修復單表數據的,因為涉及到各表狀態不一致的問題。下面就列舉備份單表恢復到從庫會面臨的問題以及解決辦法:

場景 1

如果復制報錯後,沒有使用跳過錯誤、復制過濾等方法修復主從復制。主庫數據一直在更新,從庫數據停滯在報錯狀態(假設 GTID 為 aaaa:1-100)。

修復步驟:

  • 在主庫上備份表 t (假設備份快照 GTID 為 aaaa:1-10000);

  • 恢復到從庫;

  • 啟動復制。

  • 這里的問題是復制起始位點是 aaaa:101,從庫上表 t 的數據狀態是領先其他表的。aaaa:101-10000 這些事務中只要有修改表 t 數據的事務,就會導致復制報錯 ,比如主鍵沖突、記錄不存在(而 aaaa:101 這個之前復制報錯的事務必定是修改表 t 的事務)

    解決辦法:啟動復制時跳過 aaaa:101-10000 這些事務中修改表 t 的事務。

    正確的修復步驟:

    1. 在主庫上備份表 t (假設備份快照 GTID 為 aaaa:1-10000),恢復到從庫;

    2. 設置復制過濾,過濾表 t:

  • CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');

  • 3. 啟動復制,回放到 aaaa:10000 時停止復制(此時從庫上所有表的數據都在同一狀態,是一致的);

  • START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';

  • 4. 刪除復制過濾,正常啟動復制。

    注意事項:這里要用 mysqlmp --single-transaction --master-data=2,記錄備份快照對應的 GTID

    場景 2

    如果復制報錯後,使用跳過錯誤、復制過濾等辦法修復了主從復制。主、從庫數據一直在更新。

    修復步驟:

  • 在主庫上備份表 t (假設備份快照 GTID為 aaaa:1-10000);

  • 停止從庫復制,GTID為 aaaa:1-20000;

  • 恢復表 t 到從庫;

  • 啟動復制。

  • 這里的問題是復制起始位點是 aaaa:20001,aaaa:10000-20000 這些事務將不會在從庫上回放,如果這裡面有修改表 t 數據的事務,從庫上將丟失這部分數據。

    解決辦法:從備份開始到啟動復制,鎖定表 t,保證 aaaa:10000-20000 中沒有修改表 t 的事務。

    正確修復步驟:

  • 對表 t 加讀鎖;

  • 在主庫上備份表 t;

  • 停止從庫復制,恢復表 t;

  • 啟動復制;

  • 解鎖表 t。

  • 如果是大表,這里可以用可傳輸表空間方式備份、恢復表,減少鎖表時間。

2. 如何復制MySQL資料庫或表到另外一台伺服器

使用這種方法前,我們需要先下載一個MySQL客戶端工具SqlYog。點擊這里下載並安裝x0dx0ax0dx0a下面我們開始復制資料庫:x0dx0a1、打開SqlYog community Edition,分別在不同的選項卡中打開源資料庫伺服器與目標資料庫伺服器,這一點很重。x0dx0ax0dx0a在源資料庫伺服器選項卡中你將看到所有資料庫列表。x0dx0a2、在需要復制遷移的資料庫上右擊,在彈出菜單中選擇「Copy Database to Different Host/Database」x0dx0a3、在彈出對話框中,我們能看到源資料庫伺服器及目標伺服器,在左邊,通過勾選復選框來選擇需要復制遷移的對象,如表、函數、觸發器等,也可以選擇所有對象。x0dx0a4、在右邊選擇需要遷移的目標伺服器或資料庫x0dx0a5、根據你的需要選擇復制類型:「Structure and Data」或「Structure only」,即「結構和數據」或「僅結構」。x0dx0a6、選擇結束後點擊「Copy」按鈕開始復制,知道數據遷移結束。

3. mysql把一個資料庫中的數據復制到另一個資料庫中的表 2個表結構相同

1、使用軟體Navicat就可遷移復制資料庫,打開Navicat,右鍵點擊左邊空白的地方,點擊New Connection下的MySQL,創建一個伺服器的連接,下面將演示把本地的數據遷移到伺服器:

4. MySQL如何復製表中的一條記錄並插入

1、打開navicat軟體,打開要復製表的資料庫,如下圖所示:

5. 怎麼才能完整復制MySQL資料庫

有兩種辦法。

1、在B機器上裝mysql。
將A機器上的mysql/data下的你的資料庫目錄整個拷貝下來。
將B機器上的mysql服務停止。
找到B機器上的mysql/data目錄,將你拷貝的目錄粘貼進去,然後啟動mysql服務就可以了。
2、使用SQL語句備份和恢復
你可以使用SELECT INTO OUTFILE語句備份數據,並用LOAD DATA INFILE語句恢復數據。這種方法只能導出數據的內容,不包括表的結構,如果表的結構文件損壞,你必須要先恢復原來的表的結構。
語法:
SELECT * INTO {OUTFILE ¦ DUMPFILE} 』file_name』 FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 』file_name.txt』 [REPLACE ¦ IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE 』file_name』
在dos命令提示符下使用mysqlmp命令進行備份.
如下:
C:\Documents and Settings\Administrator>mysqlmp yinshi >c:\\backup.txt -uroot
-p12142022