




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫運維與管理項目5備份與恢復(fù)MySQL數(shù)據(jù)庫教學(xué)目標(biāo)知識目標(biāo)掌握MySQL備份的概念和分類掌握mysqldump命令的使用方法掌握PerconaXtraBackup工具的使用方法掌握數(shù)據(jù)庫遷移的概念掌握MySQL數(shù)據(jù)表的導(dǎo)出和導(dǎo)入方法素養(yǎng)目標(biāo)提高安全防范意識加強規(guī)范操作意識能力目標(biāo)能使用mysqldump命令備份和恢復(fù)數(shù)據(jù)能使用PerconaXtraBackup實現(xiàn)熱備份能基于crontab實現(xiàn)自動備份作業(yè)能基于各種命令實現(xiàn)數(shù)據(jù)表的導(dǎo)入和導(dǎo)出項目5
備份與恢復(fù)MySQL數(shù)據(jù)庫項目場景:天天電器商場的服務(wù)器已使用多年。由于服務(wù)器硬件故障率高,經(jīng)常會導(dǎo)致數(shù)據(jù)丟失,受到各部門抱怨。但公司近期沒有設(shè)備更新計劃,信息部門決定實施一個自動的備份方案,當(dāng)服務(wù)器重裝的時候能重新加載備份數(shù)據(jù)。數(shù)據(jù)備份一、備份的分類1、按照備份的方法分類按照備份的方法(是否需要數(shù)據(jù)庫離線),可以將備份分為熱備份、冷備份和溫備份。(1)熱備份(HotBackup)。熱備份可以在數(shù)據(jù)庫運行中直接進行,對正在運行的數(shù)據(jù)庫操作沒有任何的影響,數(shù)據(jù)庫的讀寫操作可以正常執(zhí)行。(2)冷備份(ColdBackup)。冷備份必須在數(shù)據(jù)庫停止運行的情況下進行,數(shù)據(jù)庫的讀寫操作不能執(zhí)行。這種備份方式非常簡單,一般只需要復(fù)制相關(guān)的數(shù)據(jù)庫物理文件即可。(3)溫備份(WarmBackup)。溫備份是在數(shù)據(jù)庫運行過程中進行的,但是會對當(dāng)前數(shù)據(jù)庫的操作有所影響,溫備份時僅支持讀操作,不支持寫操作。數(shù)據(jù)備份2、按照備份的數(shù)據(jù)庫內(nèi)容分類
按照備份的數(shù)據(jù)庫內(nèi)容來分類,備份又可以分為完全備份和部分備份。1.完全備份。完全備份是指對數(shù)據(jù)庫進行完整的備份,即備份整個數(shù)據(jù)庫,如果數(shù)據(jù)較多則會占用較多的時間和較大的空間。2.部分備份。部分備份是指備份部分?jǐn)?shù)據(jù)庫內(nèi)容(例如,只備份一個表)。部分備份又分為增量備份和差異備份。增量備份需要使用專業(yè)的備份工具。增量備份是指在上次完全備份的基礎(chǔ)上,對更改的數(shù)據(jù)進行備份。注意:在MySQL中,進行不同方式的備份前,還要考慮存儲引擎是否支持,例如MyISAM存儲引擎不支持熱備份,只支持溫備份和冷備份;而InnoDB存儲引擎則支持熱備份、溫備份和冷備份。備份的數(shù)據(jù)和備份工具二、備份的數(shù)據(jù)一般情況下,需要備份的數(shù)據(jù)分為以下幾種。(1)表數(shù)據(jù)。(2)二進制日志、InnoDB事務(wù)日志。(3)代碼(存儲過程、存儲函數(shù)、觸發(fā)器、事件調(diào)度器)。(4)服務(wù)器配置文件。備份的數(shù)據(jù)和備份工具三、備份的工具以下是幾種常用的備份工具。(1)mysqldump:邏輯備份工具,適用于所有的存儲引擎,支持溫備份、完全備份、部分備份,對于InnoDB存儲引擎支持熱備份。(2)cp、tar等歸檔復(fù)制工具:物理備份工具,適用于所有的存儲引擎,支持冷備份、完全備份、部分備份。(3)lvm2snapshot:借助文件系統(tǒng)管理工具進行備份。(4)XtraBackup:一款由Percona公司提供的非常強大的InnoDB/XtraDB熱備份工具,支持完全備份、增量備份。使用mysqldump命令備份
MySQL主要提供了mysqldump命令用于實現(xiàn)備份。使用mysqldump命令備份一個數(shù)據(jù)庫的語法格式如下。mysqldump-uusername-pdbname[tbname...]>filename.sqlusername:賬戶名稱。dbname:需要備份的數(shù)據(jù)庫名稱。tbname:數(shù)據(jù)庫中需要備份的數(shù)據(jù)表名稱,可以指定多個數(shù)據(jù)表。省略該參數(shù)時,會備份整個數(shù)據(jù)庫。>:用來告訴mysqldump命令,將備份數(shù)據(jù)表的定義和數(shù)據(jù)寫入指定的備份文件。filename.sql:備份文件的名稱,文件名前面可以加絕對路徑。通常將數(shù)據(jù)庫備份成一個擴展名為.sql的文件。使用mysqldump命令備份下面通過示例來介紹mysqldump命令的基本使用方法。1.備份單個數(shù)據(jù)庫信息,命令語法格式如下。mysqldump-u賬戶名-p密碼--databases數(shù)據(jù)庫>/保存路徑/文件名.sql例如,備份data數(shù)據(jù)庫,賬戶名是root,密碼是root,備份到當(dāng)前文件夾的1.sql文件中,命令如下。mysqldump-uroot-proot--databasesdata>1.sql2.備份全部數(shù)據(jù)庫信息,命令語法格式如下。mysqldump-u賬戶名-p密碼--all-databases>/保存路徑/文件名.sql例如,備份全部數(shù)據(jù)庫,賬戶名是root,密碼是root,備份到當(dāng)前文件夾的2.sql文件中,命令如下。mysqldump-uroot-proot--all-databases>2.sql3.備份某一個數(shù)據(jù)表,命令語法格式如下。mysqldump-u賬戶名-p密碼數(shù)據(jù)庫名表名>/保存路徑/文件名.sql例如,備份data數(shù)據(jù)庫中的users表,賬戶名是root,密碼是root,備份到當(dāng)前文件夾的3.sql文件中,命令如下。mysqldump-uroot-prootdatausers>3.sql使用PerconaXtraBackup工具快速備份備份操作示例(1)全庫備份——備份所有數(shù)據(jù)庫,存放在以時間命名的目錄下。innobackupex會在指定存放數(shù)據(jù)的目錄下用當(dāng)前時間作為名稱創(chuàng)建一個目錄,所有生成的備份文件都會存放在這個目錄下,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock/data/backup/當(dāng)出現(xiàn)“completedOK!”則表示備份完成。(2)全庫備份——備份所有數(shù)據(jù)庫,并指定目錄的名稱。在使用innobackupex進行備份時,可以使用--no-timestamp參數(shù)來阻止它自動創(chuàng)建一個以時間命名的目錄,如此一來,innobackupex將會創(chuàng)建一個backup_dir目錄來存儲備份數(shù)據(jù),命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--no-timestamp/data/backup/backup_dir使用PerconaXtraBackup工具快速備份備份操作示例(3)全庫備份——備份所有數(shù)據(jù)庫,并打包。--stream=tar參數(shù)表示流式備份的格式,備份完成之后以指定格式存儲到標(biāo)準(zhǔn)輸出,目前只支持tar和xbstream格式,命令如下。shell>innobackupex--defaluts-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--stream=tar--no-timestamp/home/data/backup1>/home/data/backup/xtra_backup20210329.tar上述代碼中,“1>”代表標(biāo)準(zhǔn)輸出(stdout),“>”前面不加1,具有同樣效果;“2>”代表標(biāo)準(zhǔn)錯誤(stderr)。(4)全庫備份——備份所有數(shù)據(jù)庫,并壓縮打包。命令如下。shell>innobackupex--defaluts-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--stream=tar--no-timestamp/home/data/backup|gzip>/home/data/backup/150_backup.tar.gz解壓PerconaXtraBackup的備份文件,必須使用tar和-i參數(shù)。例如,可以先創(chuàng)建解壓的目錄150_backup,然后解壓到此目錄。解壓備份文件的命令如下。shell>tar-zixvf150_backup.tar.gz-C./150_backup使用PerconaXtraBackup工具快速備份備份操作示例(5)全庫備份——備份到遠(yuǎn)程并壓縮。命令如下。shell>innobackupex--defaluts-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--stream=tar/home/data/backup|sshroot@192.168.2.151"gzip>/home/data/150_backup/150_backup.tar.gz"(6)備份指定數(shù)據(jù)庫。例如,備份數(shù)據(jù)庫A和B,使用--databases參數(shù)指定數(shù)據(jù)庫,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--databases="AB"--no-timestamp/data/backup/backup_database(7)備份不同數(shù)據(jù)庫下的不同表。還是使用--databases參數(shù),指定數(shù)據(jù)庫中的表,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--databases="A.hrms_aoB.checktype"--no_x0002_timestamp/data/backup/backup_tables使用PerconaXtraBackup工具快速備份備份操作示例(8)備份一個數(shù)據(jù)庫下的表。例如,備份A數(shù)據(jù)庫下以h開頭的表,使用--include參數(shù),該參數(shù)使用正則表達式匹配表的名字,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--include="A.h"--no-timestamp/data/backup/backup_tables(9)增量備份。使用--incremental-basedir和--incremental參數(shù)來進行增量備份,命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--user=root--password=xxx--socket=/var/lib/mysql/mysql.sock--no-timestamp--incremental-basedir=/data/backup/backup_dir--incremental/data/backup/increment_data/上述代碼中,--incremental-basedir表示完全備份目錄;--incremental表示增量備份目錄。數(shù)據(jù)恢復(fù)一、使用mysql命令恢復(fù)在MySQL中,可以使用mysql命令來恢復(fù)備份的數(shù)據(jù)。mysql命令可以執(zhí)行備份文件中的CREATE語句和INSERT語句,也就是說,mysql命令可以通過CREATE語句來創(chuàng)建數(shù)據(jù)庫和表,通過INSERT語句來插入備份的數(shù)據(jù)。mysql命令語法格式如下。mysql-uusername-P[dbname]<filename.sql上述語法格式中的參數(shù)說明如下。username表示賬戶名稱。dbname表示數(shù)據(jù)庫名稱,該參數(shù)是可選參數(shù)。如果filename.sql文件為執(zhí)行mysqldump命令創(chuàng)建的包含創(chuàng)建數(shù)據(jù)庫語句的文件,則執(zhí)行mysql命令時不需要指定數(shù)據(jù)庫名稱。如果指定的數(shù)據(jù)庫名稱不存在則將會報錯。filename.sql表示備份文件的名稱。下面介紹mysql命令的使用方法。數(shù)據(jù)恢復(fù)1.恢復(fù)所有數(shù)據(jù)庫例如,恢復(fù)all.sql文件中的所有數(shù)據(jù)庫,命令如下。mysql-uroot-p<C:\all.sql2.恢復(fù)到指定數(shù)據(jù)庫例如,將node.sql文件導(dǎo)入ss數(shù)據(jù)庫,賬戶名為root,密碼為root,命令如下。mysql-uroot-prootss<node.sql3.通過source導(dǎo)入數(shù)據(jù)庫首先通過mysql命令登錄數(shù)據(jù)庫,在mysql命令提示符下執(zhí)行source命令。source命令語法格式是:source路徑/文件名.sql。例如,將node.sql文件導(dǎo)入ss數(shù)據(jù)庫,賬戶名為root,密碼為root,命令如下。shell>mysql-uroot–prootmysql>usessmysql>sourcenode.sql數(shù)據(jù)恢復(fù)二、直接復(fù)制到數(shù)據(jù)庫目錄采用直接復(fù)制數(shù)據(jù)的方式可以將數(shù)據(jù)文件直接復(fù)制到MySQL的數(shù)據(jù)庫目錄下。通過這種方式恢復(fù)數(shù)據(jù)時,必須保證兩個MySQL的主版本號是相同的,因為只有兩個MySQL的主版本號相同時,才能保證這兩個MySQL數(shù)據(jù)庫的文件類型是相同的,而且,這種方式對復(fù)制使用MyISAM存儲引擎的表比較有效。在Linux系統(tǒng)下數(shù)據(jù)庫目錄通常在/var/lib/mysql、/user/local/mysql/data或/user/local/mysql/var這3個目錄下。上述位置只是數(shù)據(jù)庫目錄常用的位置,具體位置要根據(jù)MySQL安裝時設(shè)置的位置確定。三、XtraBackup快速恢復(fù)1.恢復(fù)完全備份需要說明的是,進行數(shù)據(jù)恢復(fù)時,需要關(guān)閉MySQL服務(wù)器,而且數(shù)據(jù)目錄必須是空的,因為執(zhí)行innobackupex--copy-back命令不會覆蓋已存在的文件。數(shù)據(jù)恢復(fù)(1)準(zhǔn)備完全備份命令示例:shell>innobackupex--apply-log/data/backup/2021-11-08_09-41-06(2)恢復(fù)命令示例:shell>innobackupex--defaults-file=/usr/local/mysql/f--copy-back/data/backup/2021-11-08_09-41-06/注意:恢復(fù)到指定目錄,需要在f文件中進行配置,例如datadir=/data/mysql這個配置項就指明了MySQL的數(shù)據(jù)目錄是/data/mysql目錄??偨Y(jié)恢復(fù)完全備份的兩個要點。(1)數(shù)據(jù)目錄必須為空。除非指定innobackupex--force-non-empty-directorires參數(shù),否則--copy-backup參數(shù)不會覆蓋已存在的文件。(2)在恢復(fù)之前,必須關(guān)閉MySQL實例,不能將一個運行中的MySQL實例還原到數(shù)據(jù)目錄中。數(shù)據(jù)恢復(fù)2.恢復(fù)增量備份準(zhǔn)備增量備份與準(zhǔn)備完全備份有一些不同,具體如下。(1)需要在每個備份(包括完全備份和各個增量備份)上,將已經(jīng)提交的事務(wù)進行重放。重放之后,所有的備份數(shù)據(jù)將合并到完全備份數(shù)據(jù)上。(2)基于所有的備份將未提交的事務(wù)進行回滾。第一步:通過--apply-log參數(shù)進行完全備份,命令如下。shell>innobackupex--apply-log--redo-only/data/backup/backup_dir第二步:把增量備份數(shù)據(jù)合并到完全備份數(shù)據(jù)上,命令如下。shell>innobackupex--apply-log--redo-only/data/backup/backup_dir--incremental_x0002_dir=/data/backup/increment_data待增量備份數(shù)據(jù)合并到完全備份數(shù)據(jù)上,再查看xtrabackup_checkpoints文件,代碼如下。數(shù)據(jù)恢復(fù)[root@report-serverbackup_dir]#morextrabackup_checkpointsbackup_type=log-appliedfrom_lsn=0to_lsn=48526869189
#與增量備份上的LSN一致last_lsn=48526869189compact=0recover_binlog_info=0backup_type=incrementalfrom_lsn=48526868973#上次完全備份上的LSNto_lsn=48526869189#增量備份的截止LSNlast_lsn=48526869189compact=0recover_binlog_info=0查看增量備份上的xtrabackup_checkpoints文件,內(nèi)容如下數(shù)據(jù)恢復(fù)第三步:回滾完全備份,命令如下。shell>innobackupex--apply-log/data/backup/backup_dir第四步:恢復(fù)命令如下。shell>innobackupex--defaults-file=/usr/local/mysql/f--copy-back/data/backup/backup_dir進入數(shù)據(jù)目錄,修改權(quán)限,命令如下。shell>chown-Rmysql:mysql*啟動MySQL服務(wù),檢查數(shù)據(jù)是否恢復(fù)成功。數(shù)據(jù)庫遷移一、相同版本MySQL之間的數(shù)據(jù)庫遷移這類的數(shù)據(jù)庫遷移較簡單。其遷移過程就是普通的數(shù)據(jù)備份與數(shù)據(jù)恢復(fù)操作。安全、常用的方法是使用mysqldump命令導(dǎo)出數(shù)據(jù),然后在目標(biāo)數(shù)據(jù)庫服務(wù)器使用mysql命令導(dǎo)入數(shù)據(jù),最終完成整個數(shù)據(jù)庫遷移過程。例:要將主機上的MySQL數(shù)據(jù)庫全部遷移到主機上,只需在主機上執(zhí)行如下命令。shell>mysqldump-h-uroot-ppassworddbname|mysql-h-uroot-ppassword上述的命令中,導(dǎo)出的數(shù)據(jù)直接通過管道“|”導(dǎo)入目標(biāo)數(shù)據(jù)庫系統(tǒng);dbname為要遷移的數(shù)據(jù)庫名稱,如果需要遷移所有數(shù)據(jù)庫,可使用--all-databases參數(shù)(即將dbname改為--all-databases)。數(shù)據(jù)庫遷移二、不同版本MySQL之間的數(shù)據(jù)庫遷移不同版本的MySQL之間的數(shù)據(jù)庫遷移主要有以下兩種情況。低版本數(shù)據(jù)庫向高版本數(shù)據(jù)庫遷移(升級)。高版本數(shù)據(jù)庫向低版本數(shù)據(jù)庫遷移(降級)。表的導(dǎo)出和導(dǎo)入一、使用SELECT…INTOOUTFILE語句導(dǎo)出文本文件在MySQL中,可以使用SELECT...INTOOUTFILE語句將表的內(nèi)容導(dǎo)出為一個文本文件。其基本的語法格式如下。SELECT[列名]FROMtable[WHERE語句]
INTOOUTFILE'目標(biāo)文件'[OPTION];該語句分為兩個部分。前半部分是一個普通的SELECT語句,通過這個SELECT語句來查詢所需要的數(shù)據(jù);后半部分則用來導(dǎo)出數(shù)據(jù)。其中,“目標(biāo)文件”參數(shù)表示將查詢的記錄導(dǎo)出到目標(biāo)文件中;“OPTION”參數(shù)為可選參數(shù)表的導(dǎo)出和導(dǎo)入二、使用mysqldump命令導(dǎo)出文本文件mysqldump命令的語法格式如下。mysqldump-uroot-pPassword-T目標(biāo)目錄dbnametable[OPTION]上述語法格式中的參數(shù)說明如下。Password:root賬戶的密碼。dbname:數(shù)據(jù)庫的名稱。table:表的名稱。OPTION可以取以下值。--fields-terminated-by=字符串:設(shè)置字段的分隔符,默認(rèn)值是“\t”。--fields-enclosed-by=字符:設(shè)置字符來標(biāo)注字段。--fields-optionally-enclosed-by=字符:設(shè)置字符來標(biāo)注CHAR、VARCHAR和TEXT等字符型字段。--fields-escaped-by=字符:設(shè)置轉(zhuǎn)義字符。--fields-terminated-by=字符串:設(shè)置每行的結(jié)束符。表的導(dǎo)出和導(dǎo)入例1:用mysqldump命令來導(dǎo)出test數(shù)據(jù)庫下order表的記錄,各字段用“、”隔開,字符型數(shù)據(jù)用雙引號標(biāo)注,命令如下。mysqldump-uroot-p-TD:\testorder--fields-terminated-by="\r\n"--fields-terminated-by="、"--fields-optionally-enclosed-by='"'表的導(dǎo)出和導(dǎo)入
使用mysqldump命令還可以導(dǎo)出XML格式的文件。其語法格式如下。mysqldump-uroot-pPassword--xml|-Xdbnametable>目標(biāo)文件名;上述語法格式中的參數(shù)說明如下。Password:root賬戶的密碼。--xml|-X:導(dǎo)出XML格式的文件。dbname:數(shù)據(jù)庫的名稱。table:表的名稱。目標(biāo)文件名:導(dǎo)出的XML文件的路徑。例:將數(shù)據(jù)表student中的內(nèi)容導(dǎo)出到XML文件中,命令如下。shell>mysqldump-uroot-p--xmlteststudent>D:/student.xml表的導(dǎo)出和導(dǎo)入三、使用mysql命令導(dǎo)出文本文件在MySQL管理過程中,有時候需要把數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到外部存儲文件中,MySQL中的數(shù)據(jù)可以導(dǎo)出到TXT、XML、HTML等格式的文件中,同樣這些導(dǎo)出文件也可以再次導(dǎo)入MySQL中。使用mysql命令導(dǎo)出文本文件的語法格式如下。mysql-u賬戶名-p--execute="SELECT語句"數(shù)據(jù)庫名>導(dǎo)出文件存放路徑表的導(dǎo)出和導(dǎo)入四、使用LOADDATAINFILE語句導(dǎo)入文本文件
MySQL中提供了LOADDATAINFILE語句用于導(dǎo)入文本文件。該語句的完整語法格式如右圖所示。表的導(dǎo)出和導(dǎo)入例:從當(dāng)前目錄中讀取文件dump.txt,將該文件中的數(shù)據(jù)插入當(dāng)前數(shù)據(jù)庫的mytbl表中,命令如下。mysql>LOADDATALOCALINFILE'dump.txt'INTOTABLEmytbl;可以在LOADDATA語句中指定列的分隔符(默認(rèn)為“\t”)和每行的結(jié)束符(默認(rèn)為“\n”),命令如下。mysql>LOADDATALOCALINFILE'dump.txt'INTOTABLEmytbl->FIELDSTERMINATEDBY':'->LINESTERMINATEDBY'\r\n';LOADDATA語句默認(rèn)情況下是按照數(shù)據(jù)文件中列的順序插入數(shù)據(jù)的,如果數(shù)據(jù)文件中列的順序與插入表中列的順序不一致,則需要指定列的順序。例如,數(shù)據(jù)文件中列的順序是a,b,c,但插入表中列的順序為b,c,a,則數(shù)據(jù)導(dǎo)入命令如下。mysql>LOADDATALOCALINFILE'dump.txt'INTOTABLEmytbl->INTOTABLEmytbl(b,c,a);表的導(dǎo)出和導(dǎo)入五、使用mysqlimport命令導(dǎo)入文本文件在MySQL中,可以使用mysqlimport命令將文本文件導(dǎo)入MySQL中?;菊Z法格式如下。mysqlimport-uroot-pPassword[--local]dbnamefilename.txt[OPTION]上述語法格式中“Password”參數(shù)是root賬戶的密碼,必須與“-p”參數(shù)緊挨著;“--local”參數(shù)是在本地計算機中查找文本文件時使用的;“dbname”參數(shù)是數(shù)據(jù)庫的名稱;“filename.txt”參數(shù)指定了文本文件的路徑和名稱;“OPTION”為可選參數(shù),其說明如表5-1所示。表的導(dǎo)出和導(dǎo)入Linuxcrontab一、crontab介紹Linuxcrontab是用來定期執(zhí)行程序的命令。當(dāng)操作系統(tǒng)安裝完成之后,默認(rèn)便會執(zhí)行此任務(wù)調(diào)度命令。crontab命令會定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會自動執(zhí)行該工作。crontab是crontable的簡寫,它是cron的配置文件,也可以稱為作業(yè)列表,可以在以下目錄下找到相關(guān)配置文件。/var/spool/cron/目錄下存放的是每個用戶的crontab任務(wù),每個任務(wù)以創(chuàng)建者的名字命名。/etc/crontab文件負(fù)責(zé)調(diào)度各種管理和維護任務(wù)。/etc/cron.d/目錄用來存放任何要執(zhí)行的crontab文件或腳本。當(dāng)然,還可以把腳本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目錄中,讓它每小時/天/星期/月執(zhí)行一次。Linuxcrontab二、crontab命令的使用方法crontab命令的語法格式如下。crontab[-uuser]{-e|-r|-1}上述語法格式中的參數(shù)說明如下。-uuser:設(shè)定指定user的時程表。如果不使用-uuser,就表示設(shè)定自己的時程表。-e:運行文本編輯器來設(shè)定時程表,內(nèi)置的文本編輯器是Vi。-r:刪除目前的時程表。-l:列出目前的時程表。使用crontab-e進入當(dāng)前用戶的工作表編輯界面,該界面是常見的Vim界面。每行是一條命令,命令由“時間+動作”構(gòu)成,格式如下。f1f2f3f4f5program上述格式中,f1~f5表示時間,分別表示分、時、日、月、周;program表示動作。Linuxcrontab時間中的通配符說明如下。(1)*:取值范圍內(nèi)的所有數(shù)字。(2)/:每過多少個數(shù)字。(3)-:從起始時間到終止時間。(4),:散列數(shù)字。
下面通過幾個例子說明時間中的通配符的使用方法。例1:每分鐘執(zhí)行一次myCommand。*****myCommand例2:每小時的第3分鐘和第15分鐘執(zhí)行myCommand。3,15****myCommandLinuxcrontab例3:在8點到11點的第3分鐘和第15分鐘執(zhí)行myCommand。3,158-11***myCommand例4:每隔兩天的8點到11點的第3分鐘和第15分鐘執(zhí)行myCommand。3,158-11*/2**myCommand例5:每周一8點到11點的第3分鐘和第15分鐘執(zhí)行myCommand。3,158-11**1myCommand例6:每天21:30重啟smb。3021***/etc/init.d/smbrestart例7:每小時重啟smb。0*/1***/etc/init.d/smbrestart項目任務(wù)分解任務(wù)5-1使用mysqldump命令備份和恢復(fù)數(shù)據(jù)任務(wù)說明
MySQL自帶了一款功能強大的邏輯備份工具,即mysqldump命令,其不僅常常被用于執(zhí)行數(shù)據(jù)備份任務(wù),而且可用于數(shù)據(jù)遷移。使用mysqldump命令可以把數(shù)據(jù)從MySQL數(shù)據(jù)庫中以SQL語句的形式直接輸出或生成備份的文件。盡管mysqldump命令只是一個命令,但是其功能已經(jīng)相當(dāng)完善。本任務(wù)要求使用mysqldump命令進行數(shù)據(jù)的備份與恢復(fù)。項目任務(wù)分解任務(wù)實施過程步驟1:備份數(shù)據(jù)在MySQL中,經(jīng)常使用mysqldump命令備份整個數(shù)據(jù)庫,使用mysqldump命令時,需要指明備份數(shù)據(jù)庫的賬戶和密碼,并設(shè)置備份文件的路徑和文件名,命令如下。shell>mysqldump-uroot-p--all-databases>full.sql如何判斷備份是否成功呢?當(dāng)查看備份文件時,能在文件最后一行找到如下內(nèi)容,則表示備份成功。shell>tail-10full.sql--Dumpcompletedon2020-10-1913:54:51項目任務(wù)分解任務(wù)實施過程備份時,可通過設(shè)置參數(shù)來改變要備份的數(shù)據(jù),例如備份指定數(shù)據(jù)庫test就可用如下命令。shell>mysqldump-uroot-p--single-transaction-E-R--databasestest>test.sql上述命令中,--single-transaction使得在備份過程中,數(shù)據(jù)庫鎖定但是可以進行讀取操作,無法進行DDL操作,這樣可以保證InnoDB引擎表的一致性;-E和-R分別表示導(dǎo)出事件和存儲過程。步驟2:恢復(fù)數(shù)據(jù)在邏輯備份中,相對于備份數(shù)據(jù),恢復(fù)數(shù)據(jù)顯得很簡單,只需要將備份文件導(dǎo)入數(shù)據(jù)庫即可,命令如下。shell>mysql-uroot-p<full.sql項目任務(wù)分解任務(wù)5-2使用PerconaXtraBackup備份和恢復(fù)數(shù)據(jù)任務(wù)說明
PerconaXtraBackup是一個基于MySQL的服務(wù)器的開源熱備份實用程序,它不會在備份期間鎖定數(shù)據(jù)庫。無論是24小時×7天高負(fù)載服務(wù)器還是低事務(wù)量環(huán)境,PerconaXtraBackup都可以使備份成為一個無縫過程,且不會破壞生產(chǎn)環(huán)境中服務(wù)器的性能。Percona推薦從存儲庫安裝PerconaXtraBackup。在本任務(wù)中,需要完成在Linux系統(tǒng)下部署PerconaXtraBackup,并實現(xiàn)MySQL數(shù)據(jù)庫的熱備份。項目任務(wù)分解任務(wù)實施過程步驟1:安裝依賴包在安裝PerconaXtraBackup之前,請確保已安裝相關(guān)依賴軟件包,命令如下。shell>yum–yinstalllibevshell>yum-yinstallperlshell>yum-yinstallrsyncperllperl-Digest-MD5步驟2:安裝PerconaXtraBackup官方推薦從Percona存儲庫安裝PerconaXtraBackup,首先安裝Percona存儲庫,命令如下。shell>sudoyuminstall-y/yum/percona-release-latest.noarch.rpm項目任務(wù)分解任務(wù)實施過程步驟3:啟用PerconaXtraBackup存儲庫命令及執(zhí)行結(jié)果如下。shell>percona-releaseenable-onlytoolsrelease*DisablingallPerconaRepositories*EnablingthePerconaToolsrepository<*>Alldone!步驟4:安裝PerconaXtraBackupPerconaXtraBackup8.0只支持MySQL8.0,如果是其他版本MySQL,需安裝PerconaXtraBackup2.4。安裝PerconaXtraBackup8.0的命令如下。shell>yuminstall-ypercona-xtrabackup-80項目任務(wù)分解任務(wù)實施過程步驟5:賦予賬戶備份權(quán)限備份前,賬戶需要獲得BACKUP_ADMIN權(quán)限才能使用xtrabackup命令進行熱備份,獲得權(quán)限的命令如下。mysql>grantBACKUP_ADMINon*.*to'root'@'%';mysql>flushprivileges;步驟6:備份數(shù)據(jù)安裝完成后,首先嘗試在MySQL數(shù)據(jù)庫中備份全庫,使用xtrabackup命令時,需要指明備份數(shù)據(jù)庫的配置文件和賬號密碼,并設(shè)置備份文件的路徑和文件名,命令如下。shell>xtrabackup--defaults-file=/etc/f-uroot-p--backup--target-dir=/XtraBackup/backup項目任務(wù)分解任務(wù)實施過程執(zhí)行上述命令后,PerconaXtraBackup則開始備份,并在控制臺輸出備份的過程,最后,如果輸出“completedOK!”,則說明本次物理備份成功,如圖5-1所示。項目任務(wù)分解任務(wù)實施過程步驟7:恢復(fù)數(shù)據(jù)在PerconaXtraBackup中,使用--backup參數(shù)進行備份后,需要準(zhǔn)備數(shù)據(jù)文件才能恢復(fù)數(shù)據(jù)。數(shù)據(jù)文件在準(zhǔn)備好之前時間點不一致,因為它們是在程序運行的不同時間復(fù)制的,而準(zhǔn)備步驟可使文件在同一時刻完全一致。命令如下。shell>xtrabackup--defaults-file=/etc/f-uroot-p--prepare--target-dir=/XtraBackup/backup最后,如果輸出“completedOK!”,則說明本次準(zhǔn)備成功,如圖5-3所示。項目任務(wù)分解任務(wù)實施過程準(zhǔn)備完成后,就可以開始恢復(fù)數(shù)據(jù),需要注意的是,進行恢復(fù)時,首先要保證數(shù)據(jù)庫的數(shù)據(jù)目錄為空,否則恢復(fù)時將報錯?;謴?fù)命令如下。shell>xtrabackup--defaults-file=/etc/f-uroot-p--copy-back--target-dir=/XtraBackup/backup輸入上述命令并按“Enter”鍵后,PerconaXtraBackup會開始恢復(fù),并在控制臺輸出恢復(fù)的過程,最后,如果輸出“completedOK!”,則說明本次恢復(fù)成功,如圖5-5所示。項目任務(wù)分解任務(wù)5-3使用mysqldump+crontab自動備份數(shù)據(jù)庫任務(wù)說明
項目場景中需要完成對MySQL數(shù)據(jù)庫的自動備份,以便在服務(wù)器崩潰時能恢復(fù)數(shù)據(jù)庫。在Windows系統(tǒng)下,可以通過“任務(wù)計劃程序”來實現(xiàn)定時任務(wù)。在Linux系統(tǒng)下,可以執(zhí)行crontab命令實現(xiàn)定時任務(wù)。本任務(wù)要求在Linux系統(tǒng)下通過crontab命令實現(xiàn)對數(shù)據(jù)庫的自動備份操作。任務(wù)實施項目任務(wù)分解步驟1:編寫備份腳本文件在Linux系統(tǒng)下,使用Vi或者Vim編寫腳本文件并將腳本文件命名為mysql_dump_script.sh。腳本文件內(nèi)容如下。#!/bin/bash#保存?zhèn)浞萏鞌?shù),備份31天數(shù)據(jù)number=31#備份保存路徑backup_dir=/root/mysqlbackup#日期dd=$(date+%Y-%m-%d-%H-%M-%S)項目任務(wù)分解#備份工具tool=mysqldump#用戶名username=root#密碼password=Hello123.#將要備份的數(shù)據(jù)庫database_name=mydbmkdir-p$backup_dir;fi#簡單寫法mysqldump-uroot-p123456users>/root/mysqlbackup/users-$filename.sql$tool-u$username-p$password$database_name>$backup_dir/$database_name-$dd.sql#寫創(chuàng)建備份日志echo"create$backup_dir/$database_name-$dd.dupm">>$backup_dir/log.txt#找出需要刪除的備份delfile=$(ls-l-crt$backup_dir/*.sql|awk'{print$9}'|head-1)#判斷現(xiàn)在的備份數(shù)量是否大于$numbercount=$(ls-l-crt$backup_dir/*.sql|awk'{print$9}'|wc-l)if[$count-gt$number]then#刪除最早生成的備份,只保留number數(shù)量的備份rm$delfile#寫刪除文件日志echo"delete$delfile">>$backup_dir/log.txtfi項目任務(wù)分解任務(wù)實施過程步驟2:給腳本文件增加可執(zhí)行權(quán)限編輯好腳本文件以后,還需要給它加上可執(zhí)行權(quán)限,命令如下。shell>chmod+xmysql_dump_script.sh步驟3:編輯crontab定時任務(wù)使用crontab–e命令創(chuàng)建定時任務(wù),命令如下。shell>crontab–e在定時任務(wù)中輸入如下內(nèi)容,設(shè)置在每天1點執(zhí)行備份腳本文件。01***/root/mysql_dump_script.sh步驟4:啟動crontab定時任務(wù)命令如下。systemctlstartcrond在任務(wù)啟動后,服務(wù)器就會按照指定的每天1點執(zhí)行備份腳本文件實現(xiàn)數(shù)據(jù)庫的備份。項目任務(wù)分解任務(wù)5-4遷移MySQL數(shù)據(jù)庫任務(wù)說明
在項目場景中需要完成MySQL數(shù)據(jù)庫的遷移工作,本任務(wù)要求將Linux系統(tǒng)中的MySQL數(shù)據(jù)庫遷移到Windows系統(tǒng)的MySQL數(shù)據(jù)庫中,實現(xiàn)不同系統(tǒng)下的相同數(shù)據(jù)庫產(chǎn)品間的數(shù)據(jù)庫遷移工作。項目任務(wù)分解任務(wù)實施過程步驟1:允許遠(yuǎn)程訪問首先將Linux系統(tǒng)下MySQL數(shù)據(jù)庫的root賬戶設(shè)置為允許遠(yuǎn)程主機訪問,命令語句如下。mysql>updatemysql.usersethost='%'whereuser='root';mysql>flushprivileges;步驟2:在Windows系統(tǒng)的MySQL中建立目標(biāo)數(shù)據(jù)庫使用mysqldump命令導(dǎo)入數(shù)據(jù)庫時,要求目標(biāo)數(shù)據(jù)庫必須先存在,所以在導(dǎo)入的目標(biāo)主機上先創(chuàng)建好目標(biāo)數(shù)據(jù)庫,這里的目標(biāo)主機使用的是Windows系統(tǒng),所以在目標(biāo)主機中先打開命令提示符,在命令提示符下輸入如下命令。d: #轉(zhuǎn)換盤符,本任務(wù)的數(shù)據(jù)庫安裝在D盤cdmysql-8.0.27-winx64\bin #Windows系統(tǒng)中MySQL的安裝目錄mysql–uroot-pmysql>createdatabasesakila;項目任務(wù)分解任務(wù)實施過程步驟3:遷移數(shù)據(jù)庫在導(dǎo)入的目標(biāo)主機上先打開命令提示符,在命令提示符下輸入如下命令進行sakila數(shù)據(jù)庫的遷移。D:\mysql-8.0.27-winx64\bin>mysqldump-h00-uroot-pHello123.sakila|mysql-uroot-p123456sakila步驟4:檢查遷移結(jié)果最后,檢查一下遷移的結(jié)果。在目標(biāo)主機的命令提示符下登錄本地數(shù)據(jù)庫并查看,命令如下。mysql–uroot-pmysql>usesakila;mysql>showtables;如果能顯示出sakila數(shù)據(jù)庫中的所有表,證明數(shù)據(jù)庫遷移成功。項目任務(wù)分解任務(wù)5-5遷移MySQL表數(shù)據(jù)任務(wù)說明
在項目場景中,有時還需要在不同數(shù)據(jù)庫之間完成數(shù)據(jù)遷移的工作,本任務(wù)就是要求將MySQL中數(shù)據(jù)表的數(shù)據(jù)遷移至SQLServer中。完成不同數(shù)據(jù)庫之間的數(shù)據(jù)遷移有很多方法既可以借助于第三方的數(shù)據(jù)抽取工具(如Kettle),也可以將數(shù)據(jù)先導(dǎo)出成一種中間格式,再將中間格式的數(shù)據(jù)導(dǎo)入至數(shù)據(jù)庫中,本任務(wù)的實施采用后一種方式。項
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)二年級數(shù)學(xué)三位數(shù)加減三位數(shù)計算能力監(jiān)控模擬題
- 小學(xué)二年級數(shù)學(xué)兩位數(shù)加兩位數(shù)計算能力檢測口算題帶答案
- 2025年度數(shù)字娛樂領(lǐng)域藝人經(jīng)紀(jì)合作協(xié)議
- 二零二五年度2025年度房屋抵押貸款轉(zhuǎn)讓及解押協(xié)議
- 企業(yè)信息管理試題+答案
- 13人物描寫一組《摔跤》教學(xué)設(shè)計-2023-2024學(xué)年統(tǒng)編版語文五年級下冊
- 中國裝飾金融行業(yè)市場前景預(yù)測及投資戰(zhàn)略研究報告
- Unit 1 How can I get there?PartC(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 高中信息技術(shù)選修2教學(xué)設(shè)計-5.1.4 組織多媒體信息1-教科版
- 農(nóng)民水稻買賣合同5篇
- 工程合同管理教材(共202頁).ppt
- 市政道路改造工程施工組織設(shè)計(最新)11623
- 疑似預(yù)防接種異常反應(yīng)(AEFI)監(jiān)測與處理PPT課件
- 電纜生產(chǎn)所需原材料采購規(guī)范匯總
- ANKYLOS機械并發(fā)癥處理方法
- 道路橋梁實習(xí)日記12篇
- 第十章運動代償
- 《企業(yè)經(jīng)營統(tǒng)計學(xué)》課程教學(xué)大綱
- 如何做好健康沙龍
- 交通安全設(shè)施養(yǎng)護技術(shù).ppt
- 環(huán)錘式碎煤機使用說明書(參考)
評論
0/150
提交評論