mysql快照備份怎么用 mysql快照讀怎么實現(xiàn)的

如何對mysql備份

Mysql數(shù)據(jù)庫的常用備份方法是使用使用實用程序mysqldump, 其命令格式如下

在遜克等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、做網(wǎng)站 網(wǎng)站設(shè)計制作按需網(wǎng)站開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),遜克網(wǎng)站建設(shè)費用合理。

# mysqldump [options] database [tables]

其參數(shù)的含義為:

options:代表mysqldump的選項,通過mysqldump –help可以查到。

database: 代表將要備份的數(shù)據(jù)庫

tables: 代表將要備份的表,如果不指定任何表,則備份整個數(shù)據(jù)庫。

使用 mysqldump進(jìn)行備份非常簡單,如果要備份數(shù)據(jù)庫” phpbb_db_backup ”,使用命令:

#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/ phpbb_db_backup.2005.5.6

還可以使用gzip命令對備份文件進(jìn)行壓縮:

#mysqldump phpbb_db_backup | gzip /usr/backups/mysql/ phpbb_db_backup.2005.5.6。gz

恢復(fù)數(shù)據(jù)使用命令:

#mysql –u -p phpbb_db_backup /usr/backups/mysql/phpbb_db_backup.2005

MySQL使用LVM快照實現(xiàn)備份

新建一個lvm磁盤,這里我建的lv為mydatalv,掛載到了/data下

[root@localhost

~]#

lvs

LV

VG

Attr

LSize

Pool

Origin

Data%

Meta%

Move

Log

Cpy%Sync

Convert

mydatalv

mydata

-wi-ao----

1.00g

[root@localhost

~]#

df

-h

文件系統(tǒng)

容量

已用

可用

已用%

掛載點

/dev/mapper/mydata-mydatalv

976M

2.6M

907M

1%

/data

將原數(shù)據(jù)庫文件復(fù)制到/data目錄下

[root@localhost

~]#

cp

-a

/var/lib/mysql

/data/

修改配置文件,將mysql數(shù)據(jù)庫文件放在lvm盤中,二進(jìn)制文件放在非lvm盤的/var/lib/mysql/目錄下

[root@ns1

~]#

vim

/etc/my.cnf

[mysqld]

log_bin=/var/lib/mysql/mysql-bin

datadir=/data/mysql

[root@localhost

~]#

service

mariadb

restart

[root@localhost

~]#

ls

/data/mysql

aria_log.00000001

ibdata1

ib_logfile1

mysql-bin.000001

mysql-bin.000003

performance_schema

aria_log_control

ib_logfile0

mysql

mysql-bin.000002

mysql-bin.index

test

可以看到重啟后數(shù)據(jù)庫文件已存放在了/data/mysql目錄中了

對mysql進(jìn)行鎖表備份

[root@localhost

~]#

mysql

-e

'flush

tables

with

read

lock;'

鎖表

[root@localhost

~]#

mysql

-e

'flush

logs;'

對日志進(jìn)行滾動,

[root@localhost

~]#

mysql

-e

'show

master

status;'

/root/back.$(date

+%F+%T)

[root@localhost

~]#

ls

back.2016-07-13+10:14:29

對lv創(chuàng)建快照

[root@localhost

~]#

lvcreate

-L

1G

-n

mysqlback

-p

r

-s

/dev/mydata/mydatalv

釋放鎖

[root@localhost

~]#

mysql

-e

'unlock

tables;'

在別的磁盤上創(chuàng)建備份目錄,只讀掛載快照后備份至備份目錄

[root@localhost

~]#

mkdir

/myback

[root@localhost

~]#

mount

-r

/dev/mydata/mysqlback

/mnt

[root@localhost

~]#

cp

-a

/mnt/mysql

/myback

修改表內(nèi)容,然后刪除掉數(shù)據(jù)庫文件內(nèi)容即/data/mysql中的內(nèi)容

[root@localhost

~]#

mysql

MariaDB

[hellodb]

use

hellodb;

MariaDB

[hellodb]

insert

into

classes

(class,numofstu)

values

('xxoo',39);

[root@localhost

~]#

rm

-rf

/data/*

修改配置文件中二進(jìn)制日志和數(shù)據(jù)庫文件的位置

[root@localhost

~]#

vim

/etc/my.cnf

[mysqld]

log_bin=/data/mysql/mysql-bin

datadir=/data/mysql

利用/myback/中的內(nèi)容還原

[root@localhost

~]#

cp

-a

/myback/*

/data/

[root@localhost

~]#

service

mariadb

restart

利用二進(jìn)制日志還原快照后的操作,由下面這個文件來查看快照執(zhí)行時二進(jìn)制日志的位置

[root@localhost

~]#

cat

back.2016-07-13+10\:14\:29

File

Position

Binlog_Do_DB

Binlog_Ignore_DB

mysql-bin.000014

245

將000014中245之后的操作做成sql文件,進(jìn)行還原

[root@localhost

~]#

mysqlbinlog

--start-position=245

/var/lib/mysql/mysql-bin.000014

binlog.sql

[root@localhost

~]#

mysql

/root/binlog.sql

查看恢復(fù)情況

[root@localhost

~]#

mysql

MariaDB

[(none)]

use

hellodb;

MariaDB

[hellodb]

select

*

from

classes;

+---------+----------------+----------+

|

ClassID

|

Class

|

NumOfStu

|

+---------+----------------+----------+

|

1

|

Shaolin

Pai

|

10

|

|

2

|

Emei

Pai

|

7

|

|

3

|

QingCheng

Pai

|

11

|

|

4

|

Wudang

Pai

|

12

|

|

5

|

Riyue

Shenjiao

|

31

|

|

6

|

Lianshan

Pai

|

27

|

|

7

|

Ming

Jiao

|

27

|

|

8

|

Xiaoyao

Pai

|

15

|

|

9

|

xxoo

|

39

|

+---------+----------------+----------+

9

rows

in

set

(0.00

sec)

mysql到底如何備份

數(shù)據(jù)備份是數(shù)據(jù)容災(zāi)的最后一道防線,即便有著兩地三中心的架構(gòu),備份也依然重要。如果備份出問題,備份時影響了交易業(yè)務(wù),備份數(shù)據(jù)無法恢復(fù),這些也是企業(yè)難以承受的。所以選擇合適的備份工具尤為重要。

每個企業(yè)級數(shù)據(jù)庫都會有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業(yè)版中非常重要的工具之一,是為企業(yè)級客戶提供的數(shù)據(jù)備份方案。

Xtrabackup一直作為MEB 開源版?zhèn)涮ザ嬖?,從MySQL 8.0開始情況可能會變得有所不同。

在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB備份/恢復(fù)體驗會更好,目前xtrabackup還不支持這些特性。

MySQL 企業(yè)版還有哪些功能?

特性1:Backup Lock

8.0之前使用xtrabackup或MEB做物理備份,為了保證備份時InnoDB引擎表與其他引擎數(shù)據(jù)文件、及binlog日志的一致性會上全局讀鎖,再拷貝非InnoDB文件,這期間MySQL會變成只讀,數(shù)據(jù)無法寫入。表數(shù)量越多,可能加上時間越長,如果使用的xtrabackup 不小心沒加rsync參數(shù),逐個拷貝frm文件,鎖定時間會更長,對業(yè)務(wù)影響較大。

我曾遇到過部署在虛擬機(jī)的實例有12000多張表,當(dāng)時使用的xtrabackup,備份腳本中沒加rsync參數(shù),結(jié)果鎖了十幾分鐘,而MEB就沒有這樣的問題。

MySQL 8.0支持輕量級備份鎖 LOCK INSTANCE FOR BACKUP,數(shù)據(jù)字典也重構(gòu)了由InnoDB存儲。若不創(chuàng)建非InnoDB表,MEB默認(rèn)使用備份鎖獲取binlog日志一致性位置,并阻止DDL操作,但不影響DML操作。

只有InnoDB表,僅上備份鎖

請點擊輸入圖片描述

若有非InnoDB表,上全局鎖

請點擊輸入圖片描述

特性2:Redo Log Archiving

MEB能做到在線熱備,備份時不影響數(shù)據(jù)庫讀寫,這是利用了InnoDB事務(wù)日志,在備份期間持續(xù)監(jiān)視redo log的變化,讀取增量變化,寫入到ibbackup_logfile,也就不需要上鎖來保障備份一致性。(對非InnoDB的文件需要上讀鎖拷貝)

如果備份期間數(shù)據(jù)庫寫入負(fù)載特別大,而寫入ibbackup_logfile速度較慢,redo log size也不大,很可能會出現(xiàn)ibbackup_logfile的寫入速度跟不上redo log記錄生成速度,redo log 空間不夠時需要覆寫日志文件,那么來不及寫入ibbackup_logfile的記錄會丟失,導(dǎo)致備份失敗。

MEB 4.1對此做了優(yōu)化,將redo log處理線程拆分成多線程分工合作,提高處理redo log的效率,降低了redo log覆寫造成備份失敗的概率,但redo log新增速度和ibbackup_logfile寫入速度懸殊太大,問題依然會發(fā)生。

MySQL 8.0.17支持了redo log archiving 徹底解決了此問題,備份前設(shè)置innodb_redo_log_archive_dirs,指定redo log歸檔目錄。MEB備份時自動開啟日志歸檔,當(dāng)checkpoint時會將舊記錄歸檔到此目錄,后續(xù)從歸檔文件中讀取redo日志記錄,避免了覆寫可能導(dǎo)致的redo記錄丟失。

請點擊輸入圖片描述

注意:innodb_redo_log_archive_dirs 不能在數(shù)據(jù)目錄下,目錄權(quán)限要求是700

特性3:Page Tracking

Page Tracking 是為優(yōu)化增量備份效率,減少不必要的數(shù)據(jù)頁掃描。

增量備份當(dāng)前有3種掃描模式:

page-track:利用LSN精確跟蹤上次備份之后被修改頁面,僅復(fù)制這些頁面,效率最快。

optimistic:掃描上次備份之后被修改的InnoDB 數(shù)據(jù)文件中,找出并拷貝修改的頁面。依賴系統(tǒng)時間,使用存在限制。

full-scan:掃描所有InnoDB數(shù)據(jù)文件,找出并拷貝自上次備份之后修改的頁面,效率最慢

1、利用page-track增量備份,需先安裝備份組件

mysql INSTALL COMPONENT "";

2、在全備前開啟page-track

SELECT mysqlbackup_page_track_set(true);

3、全備之后,做增量備份時指定若滿足page tracking條件,默認(rèn)會使用page-track模式,否則會使用full-scan模式,也可以指定--incremental=page-track。

mysqlbackup --incremental-backup-dir=backup_incr --trace=3 --incremental=page-track --incremental-base=history:last_full_backup backup

incremental-base有3種選擇

last_backup:基于前一次備份做增備,前一次備份可能是增備,也可能是全備。這種方式全備之間可能會有多個增備,每次增量可能比較小,但恢復(fù)時需要逐個合并。

last_full_backup:基于前一次全備做增備。這種方式增備會越往后體積可能越大,但恢復(fù)時只需要合并最后一次增量備份。

dir:基于前一次的備份目錄,前一次備份可能是增備,也可能是全備。

測試對比full-scan 和page-track ,在變更頁小于總體50%的情況下 ,備份效率至少能有1倍的速度提升。

page-track 模式 磁盤讀寫均衡,說明讀寫的都是修改頁面。

請點擊輸入圖片描述

full-scan模式 磁盤讀寫差別很大,說明讀了很多未修改的頁面。

請點擊輸入圖片描述

網(wǎng)頁題目:mysql快照備份怎么用 mysql快照讀怎么實現(xiàn)的
網(wǎng)站路徑:http://muchs.cn/article36/dossdsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站域名注冊、網(wǎng)站制作、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化