亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL下200GB大表備份的操作(利用傳輸表空間解決停服發(fā)版表備份問題)

 更新時間:2025年04月15日 08:45:14   作者:GreatSQL  
這篇文章主要介紹了MySQL下200GB大表備份的操作(利用傳輸表空間解決停服發(fā)版表備份問題),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

問題背景

在停服發(fā)版更新時,需對 200GB 大表(約 200 億行數(shù)據(jù))進行快速備份以預防操作失誤。

因為曾經(jīng)出現(xiàn)過有開發(fā)寫的發(fā)版語句里,UPDATE語句的WHERE條件寫錯了,原本只需要更新幾行數(shù)據(jù),最終導致更新了半張表的數(shù)據(jù)。

MySQL版本是MySQL 8.0.X,為了預防這種情況,需要對某個重要的大表進行預先備份,以便可以及時回滾,及時恢復,及時回退,對于備份方法大概有下面幾種:

方案優(yōu)點缺點
mysqldump 導出簡單易用大表導出耗時(200GB 可能需數(shù)小時)
CREATE TABLE...SELECT直接 SQL 操作數(shù)據(jù)復制慢,鎖表風險高
表空間傳輸秒級備份,零數(shù)據(jù)復制需操作系統(tǒng)權限,依賴文件拷貝
主從復制/延遲復制無需停服,恢復靈活需主從架構,維護成本高

這個場景的核心需求:停服更新的時間非常有限,比如1個小時之內(nèi)要完成更新。

操作流程

前面兩種都比較簡單,通過導數(shù)據(jù)的方法來備份舊表,萬一出現(xiàn)問題,可以使用導出來的數(shù)據(jù)進行快速恢復,第三種方法估計比較少人用,下面是具體操作方法

  • 源表與備胎表結構
-- 源表(aa)
CREATE TABLE aa (
  id int(11) DEFAULT NULL,
  sname VARCHAR(100)
) ENGINE=InnoDB;
-- 備胎表(bb)
CREATE TABLE bb (
  id int(11) DEFAULT NULL,
  sname VARCHAR(100)
) ENGINE=InnoDB;
greatsql> INSERT INTO aa SELECT 1,"nihao";

2、備胎表卸載表空間:

greatsql> ALTER TABLE bb DISCARD TABLESPACE;  -- 加鎖并生成配置文件

3、源表執(zhí)行表空間導出:

greatsql> USE school;
greatsql> FLUSH TABLES aa FOR EXPORT;   

4、拷貝表空間文件(ibd和cfg文件),然后重新賦予權限,確保導入表空間時候不會出現(xiàn)問題

$ cd /data/mysql/mysql3306/data/school
$ cp aa.ibd  bb.ibd  
$ cp aa.cfg  bb.cfg
$ chown -R mysql:mysql /data/mysql/mysql3306/data/*

5、在相同數(shù)據(jù)庫下,備胎表和源表都導入表空間

greatsql> USE school;
greatsql> UNLOCK TABLES;  
greatsql> ALTER TABLE bb IMPORT TABLESPACE;
greatsql> ALTER TABLE aa IMPORT TABLESPACE;

6、查詢表數(shù)據(jù),驗證數(shù)據(jù)一致性

greatsql> USE school;
greatsql> SELECT * FROM bb;
greatsql> SELECT * FROM aa;

查詢表數(shù)據(jù)正常,沒有任何問題

greatsql> SELECT * FROM aa;
+------+-------+
| id   | sname |
+------+-------+
|    1 | nihao |
+------+-------+
1 row in set (0.01 sec)
greatsql> SELECT * FROM bb;
+------+-------+
| id   | sname |
+------+-------+
|    1 | nihao |
+------+-------+
1 row in set (0.00 sec)

查看表的數(shù)據(jù)文件,沒什么問題

$ ll
total 228
-rw-r----- 1 mysql mysql 114688 Mar  4 16:51 aa.ibd
-rw-r----- 1 mysql mysql    781 Mar  4 16:52 bb.cfg
-rw-r----- 1 mysql mysql 114688 Mar  4 16:52 bb.ibd

7、發(fā)版更新與回滾

-- 發(fā)版操作(示例)
greatsql> UPDATE aa SET sname = 'new_value' WHERE id > 1;

8、如果發(fā)版有問題,直接交換表名,最快速度恢復整個表的數(shù)據(jù)

-- 回滾操作(交換表名)
greatsql> ALTER TABLE aa RENAME TO aa_temp; 
greatsql> ALTER TABLE bb RENAME TO aa; 

總結

整個操作最重要的是第4步,操作系統(tǒng)級別的拷貝就完成了整個表的備份,相比于數(shù)據(jù)倒來倒去在速度上要快不少。另外,第5步的備胎表也可以不用導入,只有當發(fā)現(xiàn)發(fā)版出現(xiàn)問題時候,再導入也可以。

這種方法的關鍵優(yōu)勢如下

  • 直接拷貝 .ibd 文件,無需逐行復制數(shù)據(jù)。
  • 零鎖表時間:FLUSH TABLES tablename FOR EXPORT 僅短暫加鎖(秒級)。
  • 快速恢復:通過表名交換實現(xiàn)秒級回滾。

特別適合于這幾種場景:無主從架構的單實例環(huán)境、大表快速備份、停服時間敏感。

當然,如果有主從架構的話,則更加推薦使用第四種方法,在操作上也更加可控,短時間也能保證能夠完成。

關于 GreatSQL

GreatSQL是適用于金融級應用的國內(nèi)自主開源數(shù)據(jù)庫,具備高性能、高可靠、高易用性、高安全等多個核心特性,可以作為MySQL或Percona Server的可選替換,用于線上生產(chǎn)環(huán)境,且完全免費并兼容MySQL或Percona Server。

到此這篇關于MySQL下200GB大表備份,利用傳輸表空間解決停服發(fā)版表備份問題的文章就介紹到這了,更多相關使用java代碼獲取JVM信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL 使用 ORDER BY 排序和 DELETE 刪除記錄的操作過程

    MySQL 使用 ORDER BY 排序和 DELETE 刪

    這篇文章主要介紹了MySQL 使用 ORDER BY 排序和 DELETE 刪除記錄的操作過程,即數(shù)據(jù)庫查詢與數(shù)據(jù)操作,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-11-11
  • MySQL與PHP的基礎與應用專題之增刪改查

    MySQL與PHP的基礎與應用專題之增刪改查

    MySQL是一個關系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關系型數(shù)據(jù)庫管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎應用,本篇從數(shù)據(jù)庫的增刪改查開始
    2022-02-02
  • Navicat連接MySQL時出現(xiàn)的連接失敗問題及解決

    Navicat連接MySQL時出現(xiàn)的連接失敗問題及解決

    這篇文章主要介紹了Navicat連接MySQL時出現(xiàn)的連接失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • MySQL數(shù)據(jù)庫設計概念及多表查詢和事物操作

    MySQL數(shù)據(jù)庫設計概念及多表查詢和事物操作

    數(shù)據(jù)庫設計就是根據(jù)業(yè)務系統(tǒng)具體需求,結合我們所選用的DBMS,為這個業(yè)務系統(tǒng)構造出最優(yōu)的數(shù)據(jù)存儲模型,本文給大家介紹MySQL數(shù)據(jù)庫設計概念及多表查詢和事物操作,感興趣的朋友一起看看吧
    2022-05-05
  • MySQL函數(shù)大全及用法示例分享

    MySQL函數(shù)大全及用法示例分享

    這篇文章主要介紹了MySQL的一些函數(shù)及用法示例,需要的朋友可以參考下
    2014-03-03
  • mysql主從基于docker和django實現(xiàn)讀寫分離

    mysql主從基于docker和django實現(xiàn)讀寫分離

    這篇文章主要介紹了mysql主從基于docker和django實現(xiàn)讀寫分離,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08
  • MySQL 使用DQL命令查詢數(shù)據(jù)的實現(xiàn)方法

    MySQL 使用DQL命令查詢數(shù)據(jù)的實現(xiàn)方法

    這篇文章主要介紹了MySQL 使用DQL命令查詢數(shù)據(jù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • MySQL collation方法

    MySQL collation方法

    在以前用oracle的時候,很少關于它的collation方法,但是在mysql中,這點不加注意的話,卻有可能會出現(xiàn)問題。
    2008-10-10
  • MySQL插入中文不亂碼的5種方法

    MySQL插入中文不亂碼的5種方法

    這篇文章主要介紹了MySQL 插入中文不亂碼的5種方法,需要的朋友可以參考下
    2016-06-06
  • MySQL中substr函數(shù)使用方法實例詳解

    MySQL中substr函數(shù)使用方法實例詳解

    MySQL的SUBSTR()函數(shù)可以用于從指定字符串的指定位置開始提取指定長度的字符,下面這篇文章主要給大家介紹了關于MySQL中substr函數(shù)使用方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08

最新評論