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

