Mysql數(shù)據(jù)庫(kù)的常用備份方法是使用使用實(shí)用程序mysqldump, 其命令格式如下
在遜克等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站建設(shè),遜克網(wǎng)站建設(shè)費(fèi)用合理。
# mysqldump [options] database [tables]
其參數(shù)的含義為:
options:代表mysqldump的選項(xiàng),通過(guò)mysqldump –help可以查到。
database: 代表將要備份的數(shù)據(jù)庫(kù)
tables: 代表將要備份的表,如果不指定任何表,則備份整個(gè)數(shù)據(jù)庫(kù)。
使用 mysqldump進(jìn)行備份非常簡(jiǎn)單,如果要備份數(shù)據(jù)庫(kù)” phpbb_db_backup ”,使用命令:
#mysqldump –u -p phpbb_db_backup /usr/backups/mysql/ phpbb_db_backup.2005.5.6
還可以使用gzip命令對(duì)備份文件進(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
新建一個(gè)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)
容量
已用
可用
已用%
掛載點(diǎn)
/dev/mapper/mydata-mydatalv
976M
2.6M
907M
1%
/data
將原數(shù)據(jù)庫(kù)文件復(fù)制到/data目錄下
[root@localhost
~]#
cp
-a
/var/lib/mysql
/data/
修改配置文件,將mysql數(shù)據(jù)庫(kù)文件放在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ù)庫(kù)文件已存放在了/data/mysql目錄中了
對(duì)mysql進(jìn)行鎖表備份
[root@localhost
~]#
mysql
-e
'flush
tables
with
read
lock;'
鎖表
[root@localhost
~]#
mysql
-e
'flush
logs;'
對(duì)日志進(jìn)行滾動(dòng),
[root@localhost
~]#
mysql
-e
'show
master
status;'
/root/back.$(date
+%F+%T)
[root@localhost
~]#
ls
back.2016-07-13+10:14:29
對(duì)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ù)庫(kù)文件內(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ù)庫(kù)文件的位置
[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)制日志還原快照后的操作,由下面這個(gè)文件來(lái)查看快照?qǐng)?zhí)行時(shí)二進(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)
數(shù)據(jù)備份是數(shù)據(jù)容災(zāi)的最后一道防線,即便有著兩地三中心的架構(gòu),備份也依然重要。如果備份出問(wèn)題,備份時(shí)影響了交易業(yè)務(wù),備份數(shù)據(jù)無(wú)法恢復(fù),這些也是企業(yè)難以承受的。所以選擇合適的備份工具尤為重要。
每個(gè)企業(yè)級(jí)數(shù)據(jù)庫(kù)都會(huì)有配套的備份工具,MEB(MySQL Enterprise Backup)就是MySQL企業(yè)版中非常重要的工具之一,是為企業(yè)級(jí)客戶提供的數(shù)據(jù)備份方案。
Xtrabackup一直作為MEB 開(kāi)源版?zhèn)涮ザ嬖?,從MySQL 8.0開(kāi)始情況可能會(huì)變得有所不同。
在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB備份/恢復(fù)體驗(yàn)會(huì)更好,目前xtrabackup還不支持這些特性。
MySQL 企業(yè)版還有哪些功能?
特性1:Backup Lock
8.0之前使用xtrabackup或MEB做物理備份,為了保證備份時(shí)InnoDB引擎表與其他引擎數(shù)據(jù)文件、及binlog日志的一致性會(huì)上全局讀鎖,再拷貝非InnoDB文件,這期間MySQL會(huì)變成只讀,數(shù)據(jù)無(wú)法寫(xiě)入。表數(shù)量越多,可能加上時(shí)間越長(zhǎng),如果使用的xtrabackup 不小心沒(méi)加rsync參數(shù),逐個(gè)拷貝frm文件,鎖定時(shí)間會(huì)更長(zhǎng),對(duì)業(yè)務(wù)影響較大。
我曾遇到過(guò)部署在虛擬機(jī)的實(shí)例有12000多張表,當(dāng)時(shí)使用的xtrabackup,備份腳本中沒(méi)加rsync參數(shù),結(jié)果鎖了十幾分鐘,而MEB就沒(méi)有這樣的問(wèn)題。
MySQL 8.0支持輕量級(jí)備份鎖 LOCK INSTANCE FOR BACKUP,數(shù)據(jù)字典也重構(gòu)了由InnoDB存儲(chǔ)。若不創(chuàng)建非InnoDB表,MEB默認(rèn)使用備份鎖獲取binlog日志一致性位置,并阻止DDL操作,但不影響DML操作。
只有InnoDB表,僅上備份鎖
請(qǐng)點(diǎn)擊輸入圖片描述
若有非InnoDB表,上全局鎖
請(qǐng)點(diǎn)擊輸入圖片描述
特性2:Redo Log Archiving
MEB能做到在線熱備,備份時(shí)不影響數(shù)據(jù)庫(kù)讀寫(xiě),這是利用了InnoDB事務(wù)日志,在備份期間持續(xù)監(jiān)視r(shí)edo log的變化,讀取增量變化,寫(xiě)入到ibbackup_logfile,也就不需要上鎖來(lái)保障備份一致性。(對(duì)非InnoDB的文件需要上讀鎖拷貝)
如果備份期間數(shù)據(jù)庫(kù)寫(xiě)入負(fù)載特別大,而寫(xiě)入ibbackup_logfile速度較慢,redo log size也不大,很可能會(huì)出現(xiàn)ibbackup_logfile的寫(xiě)入速度跟不上redo log記錄生成速度,redo log 空間不夠時(shí)需要覆寫(xiě)日志文件,那么來(lái)不及寫(xiě)入ibbackup_logfile的記錄會(huì)丟失,導(dǎo)致備份失敗。
MEB 4.1對(duì)此做了優(yōu)化,將redo log處理線程拆分成多線程分工合作,提高處理redo log的效率,降低了redo log覆寫(xiě)造成備份失敗的概率,但redo log新增速度和ibbackup_logfile寫(xiě)入速度懸殊太大,問(wèn)題依然會(huì)發(fā)生。
MySQL 8.0.17支持了redo log archiving 徹底解決了此問(wèn)題,備份前設(shè)置innodb_redo_log_archive_dirs,指定redo log歸檔目錄。MEB備份時(shí)自動(dòng)開(kāi)啟日志歸檔,當(dāng)checkpoint時(shí)會(huì)將舊記錄歸檔到此目錄,后續(xù)從歸檔文件中讀取redo日志記錄,避免了覆寫(xiě)可能導(dǎo)致的redo記錄丟失。
請(qǐng)點(diǎn)擊輸入圖片描述
注意:innodb_redo_log_archive_dirs 不能在數(shù)據(jù)目錄下,目錄權(quán)限要求是700
特性3:Page Tracking
Page Tracking 是為優(yōu)化增量備份效率,減少不必要的數(shù)據(jù)頁(yè)掃描。
增量備份當(dāng)前有3種掃描模式:
page-track:利用LSN精確跟蹤上次備份之后被修改頁(yè)面,僅復(fù)制這些頁(yè)面,效率最快。
optimistic:掃描上次備份之后被修改的InnoDB 數(shù)據(jù)文件中,找出并拷貝修改的頁(yè)面。依賴系統(tǒng)時(shí)間,使用存在限制。
full-scan:掃描所有InnoDB數(shù)據(jù)文件,找出并拷貝自上次備份之后修改的頁(yè)面,效率最慢
1、利用page-track增量備份,需先安裝備份組件
mysql INSTALL COMPONENT "";
2、在全備前開(kāi)啟page-track
SELECT mysqlbackup_page_track_set(true);
3、全備之后,做增量備份時(shí)指定若滿足page tracking條件,默認(rèn)會(huì)使用page-track模式,否則會(huì)使用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:基于前一次備份做增備,前一次備份可能是增備,也可能是全備。這種方式全備之間可能會(huì)有多個(gè)增備,每次增量可能比較小,但恢復(fù)時(shí)需要逐個(gè)合并。
last_full_backup:基于前一次全備做增備。這種方式增備會(huì)越往后體積可能越大,但恢復(fù)時(shí)只需要合并最后一次增量備份。
dir:基于前一次的備份目錄,前一次備份可能是增備,也可能是全備。
測(cè)試對(duì)比f(wàn)ull-scan 和page-track ,在變更頁(yè)小于總體50%的情況下 ,備份效率至少能有1倍的速度提升。
page-track 模式 磁盤讀寫(xiě)均衡,說(shuō)明讀寫(xiě)的都是修改頁(yè)面。
請(qǐng)點(diǎn)擊輸入圖片描述
full-scan模式 磁盤讀寫(xiě)差別很大,說(shuō)明讀了很多未修改的頁(yè)面。
請(qǐng)點(diǎn)擊輸入圖片描述
網(wǎng)頁(yè)題目:mysql快照備份怎么用 mysql快照讀怎么實(shí)現(xiàn)的
網(wǎng)站路徑:http://jinyejixie.com/article36/dossdsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、域名注冊(cè)、網(wǎng)站制作、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容