MySQL備份還原

来源:https://www.cnblogs.com/xzy-blog/archive/2018/01/17/8302927.html
-Advertisement-
Play Games

mysql備份還原 1.1 備份恢復-說明 運維工作的核心簡單概括就兩件事: 第一個:是保護公司的數據. 第二個:是讓網站能7*24小時提供服務(用戶體驗)。 1.1.1 備份簡介 1.2 mysqldump備份工具詳解 mysql原生自帶很好用的邏輯備份工具 1.2.1 mysqldump常用參數 ...


mysql備份還原

1.1 備份恢復-說明

運維工作的核心簡單概括就兩件事:

第一個:是保護公司的數據.
第二個:是讓網站能7*24小時提供服務(用戶體驗)。

1.1.1 備份簡介

邏輯備份(文本表示:SQL 語句)
物理備份(數據文件的二進位副本)
基於快照的備份
基於複製的備份
增量備份(刷新二進位日誌)

1.2 mysqldump備份工具詳解

mysql原生自帶很好用的邏輯備份工具

1.2.1 mysqldump常用參數

備份出來的xxx.sql文件,裡面是創建與更新的SQL語句。

-A ; --all-databases 全庫備份參數
-B  :建議加上此參數,可接一個或多個庫(表)
註意: A與B最好不要同時使用。
-B會在備份.sql中自動增加create和use語句,若不-B需要進入mysql創建庫和use庫。 -d 僅表結構 -t 僅數據 --compact 減少無用數據輸出(調試) -R, --routines備份存儲過程和函數數據 --triggers備份觸發器數據 冗餘的兩個參數 -l 單表備份時使用 -x 在做全庫備份時使用 --master-data={1|2} 告訴你備份後時刻的binlog位置。 2 註釋 1 非註釋,要執行(主從複製) --single-transaction 只支持innodb引擎,支持熱備。 會單獨開啟一個事務進行備份,利用事務的快照技術實現的。

 

1.2.2 邏輯備份-SQL

#導出單個資料庫 (建議加B)
[root@db02 data]# mysqldump -uroot -p123456 -B world >/tmp/world.sql
#導出多個資料庫 (必須加B)
[root@db02 data]# mysqldump -uroot -p123456 -B world mysql >111.sql
#導出單個資料庫表 (不能加B)
[root@db02 data]# mysqldump -uroot -p123456 world city >111.sql
#導出所有資料庫 (-A或--all-databases)
[root@db02 data]# mysqldump -u root -p123456 -A >all.sql
# 備份-常規參數 (binlog位置、熱備-快照)
[root@db02 data]# mysqldump -A -R --triggers --master-data=2 --single-transaction  |gzip >/opt/alL_$(date +%F).sql.gz

 

1.2.3 增量備份-binlog

     增量數據就是指上一次全量備份數據之後到下一次全備之前資料庫所更新的數據

對於mysqldump, binlog就是增量數據.

增量備份實現

# 準備工作
開啟二進位日誌
vi /etc/my.cnf
log-bin=/data/mysql/mysql-bin  #在全局打開binlog
set sql_log_bin=0   #在會話級別修改為臨時關閉
# 全備份
mysqldump -B --master-data=2 --single-transaction oldboy|gzip>/data/backup/oldboy_$(date +%F).sql.gz
# 增量備份 (將之後的binlog->.sql文件)
zcat oldboy_2017-06-22.sql.gz >oldboy_2017-06-22.sql
sed -n '22p' oldboy_2017-06-22.sql    #查看號
# binlog->.sql文件
mysqlbinlog -d oldboy --start-position=339 oldboy-bin.000008 -r bin.sql 

 

1.2.4 還原(恢復)

法一:source  (推薦)
# 加+B選項
mysql> source /tmp/world.sql
# 不加+B選項
[root@db02 ~]# mysql -uroot -p66666
mysql> create database xzy;
mysql> use xzy
mysql> source /tmp/world.sql

法二:命令行 <
mysql> create database xzy;
[root@db02 ~]# mysql -uroot -p666666 xzy < /tmp/world.sql

 

1.3 Xtrabackup 備份工具詳解

1.3.1 xtrabackup簡介

xtrabackup是Percona公司CTO Vadim參與開發的一款基於InnoDB具有開源免費,支持線上熱備,備份恢復速度快,占用磁碟空間小等特點

 

xtrabackup熱備原理(保證數據一致性)-innodb引擎

     在數據還有修改操作的時刻,直接將數據文件中的數據頁備份,並將備份過程中的redo和undo一併備走(回滾或前滾)。恢復時,只要保證備份出來的數據頁LSN能和redo LSN匹配,達到數據的一致。

對於myisam表,實現自動鎖表拷貝文件。

1.3.2 mysqldump與xtrabackup特點對比

mysqldump不足:

mysqldump備份方式是採用的邏輯備份,其最大的缺陷是備份和恢復速度較慢,如果資料庫大於50G,mysqldump備份就不太適合。

Xtrabackup優點

 1)備份速度快,物理備份可靠

 2)備份過程不會打斷正在執行的事務(無需鎖表)

 3)能夠基於壓縮等功能節約磁碟空間和流量

 4)自動備份校驗

 5)還原速度快

 6)可以流傳將備份傳輸到另外一臺機器上

 

1.3.3 安裝

# 安裝依賴包
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
# 下載安裝包
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

 

1.3.4 xtrabackup 備份恢復

1、備份
#  首次-全量備份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp /server/backup/base_full
# 第一次增量備份-(基於第一次全量)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp --incremental-basedir=/server/backup/base_full --incremental /server/backup/one_inc
# 第二次增量備份,(基於第一次增量)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp --parallel=3 --incremental-basedir=/server/backup/one_inc/ --incremental /server/backup/two_inc


2、準備增量恢復:
# 應用全備日誌(--apply-log,暫時不需要做回滾操作--redo-only)
innobackupex --apply-log --use-memory=32M --redo-only /server/backup/base_full/
# 合併第一次增量到全備中
innobackupex --apply-log --use-memory=32M --redo-only --incremental-dir=/server/backup/one_inc /server/backup/base_full/
#合併第二次增量到全備中 (不加--redo-only)
innobackupex --apply-log --use-memory=32M --incremental-dir=/server/backup/two_inc /server/backup/base_full/
#
innobackupex --apply-log /backup/full

# 確認binlog起點
cat /backup/xbackup/inc2/xtrabackup_binlog_info 
 mysql-bin.000001    1121
# 截取到drop操作之前的binlog
mysqlbinlog  --start-position=1121 /tmp/mysql-bin.000003 
找到drop之前的event和postion號做日誌截取,假如 1437
mysqlbinlog  --start-position=1121 --stop-position=1437    /tmp/mysql-bin.000003 >/tmp/incbinlog.sql


關閉資料庫
/etc/init.d/mysqld stop

刪除/移動MySQL所有數據
cd /application/mysql/data/
rm -rf *

恢複數據
恢復xtrabackup數據
innobackupex --copy-back /backup/xbackup/full/
chown -R mysql.mysql /application/mysql/data/
/etc/init.d/mysqld start
恢復binlog
set sql_log_bin=0
source /tmp/incbinlog.sql

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在上一章,使uboot能夠支持nor、nand 本節繼續修改讓uboot支持DM9000C網卡,便可以通過網路來傳輸文件 首先uboot已帶有dm9000網卡的驅動,位於drivers/net/下的dm9000x.h、dm9000x.c 1.DM9000C介紹 參考之前寫的移植DM9000C驅動章節 ...
  • 名詞區分:sync:同步async:非同步rsync:遠程同步 rsync 特點:1,可以鏡像保存整個目錄樹和文件系統2,容易做到保留原有的許可權(permission,mode),owner,group,時間(修改時間,modify time),軟硬鏈接,文件acl,文件attributes等3,傳輸 ...
  • 三、技巧 1、1=1,1=2 的使用,在 SQL 語句組合時用的較多 “where 1=1” 是表示選擇全部 “where 1=2”全部不選, 如:if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @t ...
  • 下麵是這本書序言中的大部分內容,本人的英文水平有限,有理解不到位的地方還請大家指教,這算是自己對這本書的筆記和總結。 數據是當今系統設計中許多挑戰的中心,一些難以解決的問題如系統的可擴展性,一致性,可靠性,有效性和可維護性等需要弄清楚。 另外,我們已經有了各式各樣的工具,包括關係型資料庫,NoSQL ...
  • 1、資料庫操作 1.1、連接mysql伺服器 mysql -u root( 用戶名 ) -p 1.2、退出mysql命令提示窗 exit 1.3、查看版本 SELECT VERSION(); 1.4、列出資料庫列表 SHOW DATABASES; 1.5、創建資料庫 CREATE DATABASE ...
  • 各位小伙伴,又到了本期分享大數據技術的時間,本次給大伙帶來的是Elasticsearch這個技術,閑話不多聊,我們開始進入正題。 一、什麼是elasticsearch Elasticsearch是一個基於Lucene的實時的分散式搜索和分析 引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠, 快 ...
  • 一,首先想到: 1,關鍵字distinct 2,group by 3,MAX,MIN這樣的函數被稱為聚集函數,和GROUP搭配起來用 但均無法實現,執行結果如下 舉例: 表名:OffsiteOutreachTeam_List 欄位:CORPADDLEVEL(獲取該欄位不重覆數據),CHANNELCO ...
  • 一 新的可視化工具 因為前文所提到的,看不到外部伺服器和外部表的問題,我更換了可視化工具。 好用的新工具PostgreSQL Maestro! 當然如此好用的工具不是免費的,如果想免費使用還請自己去找,本文不提供此類下載。 二 在.NET項目中訪問postgreSql資料庫 2.1 第三方類庫 Np ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...