mysql遷移指定表歷史數(shù)據(jù)的多種方案
方案一:使用mysqldump導(dǎo)出導(dǎo)入
通過MySQL自帶的mysqldump工具導(dǎo)出指定表的歷史數(shù)據(jù),再導(dǎo)入到目標(biāo)數(shù)據(jù)庫。適合數(shù)據(jù)量中等且允許停機(jī)遷移的場景。
# 導(dǎo)出指定表結(jié)構(gòu)和數(shù)據(jù)(按條件篩選歷史數(shù)據(jù)) mysqldump -u username -p dbname tablename --where="create_time<'2023-01-01'" > history_data.sql # 導(dǎo)入到目標(biāo)數(shù)據(jù)庫 mysql -u username -p target_db < history_data.sql
方案二:ETL工具同步
使用Kettle、Talend等ETL工具建立數(shù)據(jù)管道,可實現(xiàn)定時增量同步。適合需要持續(xù)同步歷史數(shù)據(jù)的場景。
- 配置源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫連接
- 編寫轉(zhuǎn)換流程:添加輸入表(帶時間條件篩選)、字段映射、輸出表
- 設(shè)置定時任務(wù)或立即執(zhí)行
方案三:程序分批遷移
編寫腳本分批次查詢和插入數(shù)據(jù),避免大事務(wù)導(dǎo)致數(shù)據(jù)庫負(fù)載過高。適合大數(shù)據(jù)量遷移。
import pymysql
batch_size = 5000
src_conn = pymysql.connect(source_db_config)
dst_conn = pymysql.connect(target_db_config)
while True:
with src_conn.cursor() as cursor:
cursor.execute(f"SELECT * FROM orders WHERE order_date<'2022-01-01' LIMIT {batch_size}")
batch = cursor.fetchall()
if not batch: break
with dst_conn.cursor() as cursor:
cursor.executemany("INSERT INTO orders_archive VALUES(%s,%s,...)", batch)
dst_conn.commit()方案四:主從復(fù)制過濾
配置MySQL主從復(fù)制時設(shè)置復(fù)制過濾器,僅同步特定表的歷史數(shù)據(jù)。適合實時性要求高的場景。
# 在my.cnf中配置 replicate-wild-do-table=dbname.tablename_2020% replicate-wild-do-table=dbname.tablename_2021%
方案五:表空間傳輸
對于InnoDB引擎,可直接導(dǎo)出表空間文件快速遷移。要求MySQL版本5.6+且目標(biāo)表結(jié)構(gòu)已存在。
-- 源庫執(zhí)行 FLUSH TABLES tablename FOR EXPORT; -- 拷貝.ibd和.cfg文件到目標(biāo)服務(wù)器 -- 目標(biāo)庫執(zhí)行 ALTER TABLE tablename IMPORT TABLESPACE;
注意事項
- 大表遷移建議在低峰期進(jìn)行
- 遷移前后校驗數(shù)據(jù)量和關(guān)鍵字段一致性
- 考慮建立臨時索引加速歷史數(shù)據(jù)查詢
- 對于頻繁更新的表,遷移期間建議鎖定寫入
到此這篇關(guān)于mysql遷移指定表歷史數(shù)據(jù)的多種方案的文章就介紹到這了,更多相關(guān)mysql遷移指定表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mysql存儲過程如何實現(xiàn)歷史數(shù)據(jù)遷移
- 每天遷移MySQL歷史數(shù)據(jù)到歷史庫Python腳本
- MySQL億級數(shù)據(jù)平滑遷移雙寫方案實戰(zhàn)
- mysql數(shù)據(jù)庫遷移數(shù)據(jù)目錄至另一臺服務(wù)器詳細(xì)步驟
- Mysql遷移DM國產(chǎn)達(dá)夢數(shù)據(jù)庫完整步驟記錄
- MySQL數(shù)據(jù)庫遷移到Oracle數(shù)據(jù)庫的完整步驟記錄
- MySQL數(shù)據(jù)庫跨版本遷移的實現(xiàn)三種方式
- MySQL使用binlog日志進(jìn)行數(shù)據(jù)庫遷移和數(shù)據(jù)恢復(fù)
相關(guān)文章
Mysql8.0密碼問題mysql_native_password和caching_sha2_password詳解
這篇文章主要介紹了Mysql8.0密碼問題mysql_native_password和caching_sha2_password,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
MySQL在Linux系統(tǒng)上的完整安裝與配置流程
文章詳細(xì)介紹了在Linux系統(tǒng)中安裝和卸載MySQL或MariaDB的過程,包括切換到root用戶、檢查和卸載包、備份數(shù)據(jù)、配置源、安裝服務(wù)端和客戶端、設(shè)置密碼、檢查服務(wù)狀態(tài)以及常見問題處理等步驟,需要的朋友可以參考下2026-03-03
MYSQL必知必會讀書筆記第六章之過濾數(shù)據(jù)
本文給大家分享MYSQL必知必會讀書筆記第六章之過濾數(shù)據(jù)的相關(guān)知識,非常實用,特此分享到腳本之家平臺,供大家參考2016-05-05
MySQL8 Connection refused遠(yuǎn)程訪問失敗的解決
MySQL本地連接正常但遠(yuǎn)程不通,需檢查HOST權(quán)限是否允許遠(yuǎn)程(使用%通配符),確認(rèn)MySQL綁定地址是否為0.0.0.0,若僅監(jiān)聽本地需修改并重啟服務(wù),同時通過telnet測試本地與遠(yuǎn)程端口連通性2025-09-09
MySQL 分組函數(shù)全面詳解與最佳實踐(最新整理)
本文系統(tǒng)講解MySQL分組函數(shù)的核心用法、十大注意事項(如NULL處理、分組字段選擇等)、高級技巧(多級分組、排名計算)及性能優(yōu)化方案,結(jié)合銷售分析案例,提供分組查詢的實踐指南與常見陷阱規(guī)避建議,感興趣的朋友一起看看吧2025-06-06

