數(shù)據(jù)庫(kù)原理及應(yīng)用教程MySQL版(第2版) 課件 第10章 數(shù)據(jù)庫(kù)備份還原和日志管理_第1頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用教程MySQL版(第2版) 課件 第10章 數(shù)據(jù)庫(kù)備份還原和日志管理_第2頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用教程MySQL版(第2版) 課件 第10章 數(shù)據(jù)庫(kù)備份還原和日志管理_第3頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用教程MySQL版(第2版) 課件 第10章 數(shù)據(jù)庫(kù)備份還原和日志管理_第4頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用教程MySQL版(第2版) 課件 第10章 數(shù)據(jù)庫(kù)備份還原和日志管理_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第10章數(shù)據(jù)庫(kù)備份還原和日志管理10數(shù)據(jù)庫(kù)備份還原和日志管理本章主要內(nèi)容備份和還原概述0103MySQL數(shù)據(jù)庫(kù)還原02MySQL數(shù)據(jù)庫(kù)備份WHATBACKUPRESTORE04MySQL數(shù)據(jù)庫(kù)遷移MIGRATION05數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入INPUTANDOUTPUT06MySQL日志管理LOGMANAGEMENT07小結(jié)SUMMARY備份還原原數(shù)據(jù)庫(kù)10.1備份和還原概述數(shù)據(jù)庫(kù)備份就是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)以及保證數(shù)據(jù)庫(kù)系統(tǒng)正常運(yùn)行的有關(guān)信息保存起來(lái),以備數(shù)據(jù)庫(kù)還原時(shí)使用。數(shù)據(jù)庫(kù)備份數(shù)據(jù)庫(kù)還原數(shù)據(jù)庫(kù)還原是指加載數(shù)據(jù)庫(kù)備份到系統(tǒng)中的進(jìn)程。數(shù)據(jù)庫(kù)備份還原是在本地服務(wù)器上進(jìn)行的操作。10.1備份和還原概述數(shù)據(jù)庫(kù)備份就是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)以及保證數(shù)據(jù)庫(kù)系統(tǒng)正常運(yùn)行的有關(guān)信息保存起來(lái),以備數(shù)據(jù)庫(kù)還原時(shí)使用。定義防止數(shù)據(jù)的丟失。數(shù)據(jù)出現(xiàn)不滿(mǎn)足一致性、完整性的時(shí)候,能夠根據(jù)之前某一狀態(tài)的數(shù)據(jù)庫(kù)副本(數(shù)據(jù)庫(kù)副本),將數(shù)據(jù)還原到這一狀態(tài)之下的版本。作用數(shù)據(jù)庫(kù)備份的定義10.1備份和還原概述物理備份:對(duì)數(shù)據(jù)庫(kù)操作系統(tǒng)的物理文件的備份,直接復(fù)制數(shù)據(jù)庫(kù)文件進(jìn)行備份。邏輯備份:使用軟件技術(shù)對(duì)數(shù)據(jù)庫(kù)邏輯件的備份。邏輯備份導(dǎo)出的文件格式一般與原數(shù)據(jù)

庫(kù)的文件格式不同,只是原數(shù)據(jù)庫(kù)中數(shù)據(jù)內(nèi)容的一個(gè)映像。內(nèi)容冷備份:關(guān)閉數(shù)據(jù)庫(kù)進(jìn)行備份,能夠較好地保證數(shù)據(jù)庫(kù)的完整性。溫備份:在數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)中進(jìn)行操作,但僅支持讀請(qǐng)求,不允許寫(xiě)請(qǐng)求。熱備份:在數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)中進(jìn)行操作,依賴(lài)于數(shù)據(jù)庫(kù)的日志文件。是否在線(xiàn)范圍完整備份:包含數(shù)據(jù)庫(kù)中的全部數(shù)據(jù)文件和日志文件信息,也稱(chēng)為完全備份或全庫(kù)備份。差異備份:只備份那些自上次完整備份之后被修改過(guò)的文件。增量備份:只針對(duì)那些自上次完整備份或者增量備份后被修改過(guò)的文件。數(shù)據(jù)庫(kù)備份的分類(lèi)10.1備份和還原概述備份內(nèi)容和備份時(shí)間備份內(nèi)容——一個(gè)正常運(yùn)行的數(shù)據(jù)庫(kù)系統(tǒng)中,除用戶(hù)數(shù)據(jù)庫(kù)之外,還有維護(hù)系統(tǒng)正常運(yùn)行的系統(tǒng)數(shù)據(jù)庫(kù)。在備份數(shù)據(jù)庫(kù)時(shí),需要同時(shí)備份用戶(hù)數(shù)據(jù)庫(kù)和系統(tǒng)數(shù)據(jù)庫(kù),以保證系統(tǒng)還原能夠正常操作。通常需要備份的數(shù)據(jù)包含:數(shù)據(jù)、日志、代碼、服務(wù)器配置文件等。備份時(shí)間——不同類(lèi)型的數(shù)據(jù)庫(kù)對(duì)備份的要求是不同的。對(duì)于系統(tǒng)數(shù)據(jù)庫(kù)一般是在修改之后立即做備份比較合適;用戶(hù)數(shù)據(jù)庫(kù)發(fā)生變化的頻率比系統(tǒng)數(shù)據(jù)庫(kù)要高,一般采用周期性備份的方法,備份的頻率與數(shù)據(jù)更改頻率和用戶(hù)能夠允許的數(shù)據(jù)丟失量有關(guān)。10.1備份和還原概述備份和還原需要考慮的要素?cái)?shù)據(jù)庫(kù)備份和數(shù)據(jù)庫(kù)還原是兩個(gè)互為一體的操作。在進(jìn)行數(shù)據(jù)庫(kù)備份和還原時(shí)需要綜合考慮用戶(hù)需求、數(shù)據(jù)庫(kù)特點(diǎn),從而制定符合應(yīng)用場(chǎng)景的數(shù)據(jù)庫(kù)備份和還原策略。需要考慮的要素包含:用戶(hù)可以容忍丟失多長(zhǎng)時(shí)間的數(shù)據(jù)還原數(shù)據(jù)需要在多長(zhǎng)時(shí)間之內(nèi)完成數(shù)據(jù)庫(kù)還原的時(shí)候是否需要持續(xù)提供服務(wù)數(shù)據(jù)的更改頻率需要還原的數(shù)據(jù)量以及數(shù)據(jù)內(nèi)容(整個(gè)庫(kù)、多個(gè)表或者單個(gè)表)10.1備份和還原概述MySQL數(shù)據(jù)庫(kù)備份工具mysqldumpcp,tarlvm2snapshotmysqlhotcopyXtrabackup邏輯備份工具,適用于所有的存儲(chǔ)引擎,支持溫備份、完全備份、增量備份、差異備份。對(duì)于InnoDB存儲(chǔ)引擎同時(shí)還支持熱備份。物理備份工具,適用于所有的存儲(chǔ)引擎,支持冷備份、完全備份、增量備份、差異備份。借助文件系統(tǒng)管理工具進(jìn)行備份。僅支持MyISAM存儲(chǔ)引擎。InnoDB/XtraDB熱備份工具,支持完全備份、增量備份。10.1備份和還原概述備份和還原策略還原完全+增量+二進(jìn)制日志完全+差異+二進(jìn)制日志備份定期備份,周期應(yīng)當(dāng)根據(jù)應(yīng)用數(shù)據(jù)庫(kù)系統(tǒng)可以承受的恢復(fù)時(shí)間來(lái)確定根據(jù)系統(tǒng)需要來(lái)確定是否采用增量備份異地備份MySQL打開(kāi)log-bin選項(xiàng),在做完整還原或者基于時(shí)間點(diǎn)的還原的時(shí)候都需要BINLOG10.2MySQL數(shù)據(jù)庫(kù)備份盡早

經(jīng)常多地

多份備份需要遵循兩個(gè)簡(jiǎn)單原則:10.2MySQL數(shù)據(jù)庫(kù)備份使用mysqldump命令備份執(zhí)行mysqldump命令,可以將數(shù)據(jù)庫(kù)備份成一個(gè)文本文件,語(yǔ)法如下:mysqldump-uusername-hhost–ppassworddatabasename[tablename…]>filename.sql用戶(hù)名稱(chēng)登錄用戶(hù)的主機(jī)名稱(chēng)登錄密碼,-p選項(xiàng)與密碼之間不能有空格需要備份的數(shù)據(jù)庫(kù)備份的數(shù)據(jù)表,若缺省該參數(shù),表示備份整個(gè)數(shù)據(jù)庫(kù)備份文件的名稱(chēng),如果不帶絕對(duì)路徑,默認(rèn)保存在bin目錄下mysqldump命令參數(shù)的完整含義可以通過(guò)運(yùn)行幫助命令mysqldump-help獲得。10.2MySQL數(shù)據(jù)庫(kù)備份【例10-1】使用mysqldump命令將數(shù)據(jù)庫(kù)teaching中的所有表備份到D盤(pán)。mysqldump-hlocalhost-uroot-pteaching>d:/teachingall_backup_20250217.sql【例10-2】使用mysqldump命令將數(shù)據(jù)庫(kù)teaching中的s表備份到D盤(pán)。mysqldump-uroot-pteachings>d:/teaching_s_backup_20250217.sql【例10-3】使用mysqldump命令將數(shù)據(jù)庫(kù)teaching中的s表和c表備份到D盤(pán)。mysqldump-uroot-pteachingsc>d:/teaching_s_c_backup_20250217.sql【例10-4】使用mysqldump命令將數(shù)據(jù)庫(kù)teaching中表s的結(jié)構(gòu)備份到D盤(pán)。mysqldump-uroot-p--opt--no-datateachings>d:/teaching_s_structure.sqlA備份數(shù)據(jù)表10.2MySQL數(shù)據(jù)庫(kù)備份【例10-5】使用mysqldump命令備份數(shù)據(jù)表s中年齡小于18歲的所有學(xué)生的信息。mysqldump-uroot-pteachings--where="age<18">d:/teaching_s_partbackup_20250217.sqlB備份單表中的部分?jǐn)?shù)據(jù)10.2MySQL數(shù)據(jù)庫(kù)備份【例10-6】使用mysqldump命令將數(shù)據(jù)庫(kù)teaching備份到D盤(pán)。mysqldump-uroot-p--databasesteaching>d:/teaching_backup_20250217.sql【例10-7】使用mysqldump命令備份數(shù)據(jù)庫(kù)teaching和bankaccount。mysqldump-uroot-p--databasesteachingbankaccount>d:/teachingandbankaccount_back_20250217.sql--databases參數(shù)之后至少需要指定一個(gè)數(shù)據(jù)庫(kù)的名稱(chēng),兩個(gè)以上數(shù)據(jù)庫(kù)名稱(chēng)之間需要用空格隔開(kāi)。【例10-8】使用mysqldump命令備份所有數(shù)據(jù)庫(kù)。mysqldump-uroot-p--all-databases>d:/all_back_20250217.sql使用--all-databases參數(shù)備份所有數(shù)據(jù)庫(kù)之后,文件中包含了CREATEDATABASES語(yǔ)句和USE語(yǔ)句,在進(jìn)行數(shù)據(jù)庫(kù)還原時(shí),不再需要?jiǎng)?chuàng)建并指定要操作的數(shù)據(jù)庫(kù)。C備份數(shù)據(jù)庫(kù)10.2MySQL數(shù)據(jù)庫(kù)備份【例10-9】使用mysqldump命令備份數(shù)據(jù)庫(kù)teaching的結(jié)構(gòu)到d盤(pán)。mysqldump-uroot-p--opt--no-datateaching>d:/teaching_structure.sql【例10-10】使用mysqldump命令備份數(shù)據(jù)庫(kù)teaching的數(shù)據(jù)到d盤(pán)。C備份數(shù)據(jù)庫(kù)mysqldump-uroot-p--opt--no-create-infoteaching>d:/teaching_data.sql10.2MySQL數(shù)據(jù)庫(kù)備份使用工具備份A在Workbench中備份Navigator窗格→Administration選項(xiàng)卡→DataExport在Administration-DataExport窗口選擇需要備份的數(shù)據(jù)庫(kù)以及存儲(chǔ)路徑,點(diǎn)擊“StartExport”,待窗口出現(xiàn)ExportCompleted提示即表示備份成功,可以在文件夾中看到導(dǎo)出的.sql文件。10.2MySQL數(shù)據(jù)庫(kù)備份使用工具備份B使用MySQLhotcopy工具備份使用MySQLhotcopy工具需要安裝Perl數(shù)據(jù)庫(kù)接口包,MySQLhotcopy在Unix系統(tǒng)中運(yùn)行,只能運(yùn)行在數(shù)據(jù)庫(kù)目錄所在的機(jī)器上,并且只能備份MYISAM類(lèi)型的表。具體的語(yǔ)法格式如下:mysqlhotcopydatabasename_1,……,databasename_n/path/to/new_directory需要備份的數(shù)據(jù)庫(kù)的名稱(chēng)指定備份文件目錄【例10-11】使用MySQLhotcopy備份teaching數(shù)據(jù)庫(kù)到D盤(pán)。mysqlhotcopy-uroot-pteachingd:/10.2MySQL數(shù)據(jù)庫(kù)備份使用工具備份C使用Percona

XtraBackup工具備份Percona

XtraBackup支持增量備份、熱備份,即備份時(shí)不影響數(shù)據(jù)讀寫(xiě)。Percona

XtraBackup有兩個(gè)主要的工具:xtrabackup和innobackupex。完整備份:xtrabackup--backup--target-dir=<dir>--user=<username>--password=<password>--host=<host增量備份:xtrabackup--user=<username>--password=<password>--backup--target-dir=<dir>--incremental-basedir=<incrementaldir>--port=<port>10.3MySQL數(shù)據(jù)庫(kù)還原使用命令恢復(fù)A未登錄服務(wù)器使用命令恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)還原就是讓數(shù)據(jù)庫(kù)根據(jù)備份的數(shù)據(jù)回到備份時(shí)的狀態(tài),也稱(chēng)為數(shù)據(jù)庫(kù)恢復(fù)。當(dāng)數(shù)據(jù)丟失或意外破壞時(shí),可以通過(guò)數(shù)據(jù)還原功能將數(shù)據(jù)庫(kù)還原,盡量減少數(shù)據(jù)丟失或破壞造成的損失。備份的.sql文件中包含CREATE、INSERT語(yǔ)句,使用mysql命令可以直接執(zhí)行文件中的這些語(yǔ)句,從而使數(shù)據(jù)庫(kù)還原。語(yǔ)法格式如下:mysql-uusername-p[databasename]<filename.sql執(zhí)行backup.sql中語(yǔ)句的用戶(hù)名輸入用戶(hù)密碼要還原的數(shù)據(jù)庫(kù)名稱(chēng)10.3MySQL數(shù)據(jù)庫(kù)還原使用命令恢復(fù)A未登錄服務(wù)器使用命令恢復(fù)數(shù)據(jù)庫(kù)【例10-12】使用mysql命令和備份文件teaching_backup_20250217.sql還原備份的teaching數(shù)據(jù)庫(kù)。mysql-uroot-pteaching<d:/teaching_backup_20250217.sqlB登錄服務(wù)器后數(shù)據(jù)庫(kù)還原登錄MySQL服務(wù)器后,可以利用MySQLWorkbench直接打開(kāi).sql文件,點(diǎn)擊“執(zhí)行”按鈕進(jìn)行創(chuàng)建。10.3MySQL數(shù)據(jù)庫(kù)還原使用工具恢復(fù)在Navigator窗格中選擇Administration選項(xiàng)卡,然后使用DataImport/Restore功能即可實(shí)現(xiàn)。點(diǎn)擊“DataImport/Restore”功能后,在彈出的ImportProgress窗口選擇存儲(chǔ)導(dǎo)出文件的文件夾,點(diǎn)擊“StartImport”,待出現(xiàn)ImportCompleted提示時(shí),即表示數(shù)據(jù)庫(kù)恢復(fù)成功。A在MySQLWorkbench中恢復(fù)10.3MySQL數(shù)據(jù)庫(kù)還原使用工具恢復(fù)MySQLhotcopy備份后的文件也可以用來(lái)進(jìn)行數(shù)據(jù)庫(kù)還原,在MySQL服務(wù)器停止運(yùn)行時(shí),將備份的數(shù)據(jù)庫(kù)文件復(fù)制到MySQL存放數(shù)據(jù)的位置(MySQL的data文件夾),重新啟動(dòng)MySQL服務(wù)即可。B使用MySQLhotcopy工具恢復(fù)準(zhǔn)備還原備份:xtrabackup--prepare–-apply-log-only--target-dir=<dir>數(shù)據(jù)庫(kù)還原:xtrabackup–-copy-back--target-dir=<dir>C使用PerconaXtraBackup工具恢復(fù)10.4數(shù)據(jù)庫(kù)遷移數(shù)據(jù)庫(kù)遷移是指將數(shù)據(jù)庫(kù)從一個(gè)系統(tǒng)移動(dòng)到另一個(gè)系統(tǒng)上。通常需要進(jìn)行數(shù)據(jù)庫(kù)遷移的情況:安裝新的數(shù)據(jù)庫(kù)服務(wù)器MySQL版本更新數(shù)據(jù)庫(kù)管理系統(tǒng)發(fā)生變更MySQL同類(lèi)型數(shù)據(jù)庫(kù)遷移不同類(lèi)型的數(shù)據(jù)庫(kù)之間的遷移10.4數(shù)據(jù)庫(kù)遷移MySQL同類(lèi)型數(shù)據(jù)庫(kù)遷移A版本一致的MySQL之間數(shù)據(jù)庫(kù)遷移在Linux環(huán)境中數(shù)據(jù)庫(kù)文件的存放目錄一般為/var/lib/mysql。Windows環(huán)境中數(shù)據(jù)庫(kù)文件的存放目錄視安裝路徑而定,一般為installpath/mysql/data。在數(shù)據(jù)庫(kù)遷移之前,先將MySQL服務(wù)停止,然后拷貝數(shù)據(jù)庫(kù)目錄。在遷移到新的計(jì)算機(jī)時(shí),首先創(chuàng)建好一個(gè)數(shù)據(jù)庫(kù),然后將備份出來(lái)的文件復(fù)制到對(duì)應(yīng)的MySQL數(shù)據(jù)庫(kù)目錄中即可完成數(shù)據(jù)庫(kù)的遷移。存放路徑操作過(guò)程10.4數(shù)據(jù)庫(kù)遷移MySQL同類(lèi)型數(shù)據(jù)庫(kù)遷移B不同版本的MySQL之間數(shù)據(jù)庫(kù)遷移不同版本的MySQL之間數(shù)據(jù)庫(kù)遷移,需要經(jīng)過(guò)備份原數(shù)據(jù)庫(kù)→卸載原數(shù)據(jù)庫(kù)→安裝新數(shù)據(jù)庫(kù)→在新數(shù)據(jù)庫(kù)中還原備份的數(shù)據(jù)庫(kù)數(shù)據(jù)一系列操作。通常高版本的MySQL數(shù)據(jù)庫(kù)會(huì)兼容低版本的數(shù)據(jù)庫(kù),因此可以直接從低版本遷移到高版本中。具體在進(jìn)行操作時(shí),需要關(guān)注不同版本之間的默認(rèn)字符集問(wèn)題。最常用的辦法是使用mysqldump命令來(lái)進(jìn)行備份,然后再使用命令將其還原到目標(biāo)MySQL數(shù)據(jù)庫(kù)中。10.4數(shù)據(jù)庫(kù)遷移MySQL和其他數(shù)據(jù)庫(kù)管理系統(tǒng)間遷移包括從MySQL遷移到ORACLE、SQLServer等,也包括從ORACLE、SQLServer遷移到MySQL。在遷移之前需要了解不同數(shù)據(jù)庫(kù)的架構(gòu),以及它們之間的差異。不同數(shù)據(jù)庫(kù)中相同類(lèi)型的數(shù)據(jù)的關(guān)鍵字可能會(huì)不同,例如MySQL中的日期字段分為DATE和TIME兩種,而ORACLE中的日期字段只有DATE一種。不同數(shù)據(jù)庫(kù)廠(chǎng)商沒(méi)有完全按照SQL標(biāo)準(zhǔn)來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),會(huì)造成數(shù)據(jù)庫(kù)使用的SQL語(yǔ)句之間的差異。數(shù)據(jù)庫(kù)遷移時(shí)可以使用一些工具:MyODBC、MySQLMigrationToolkit。10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用SQL語(yǔ)句導(dǎo)出導(dǎo)入文件A使用語(yǔ)句導(dǎo)出文件使用SELECT……INTOOUTFILE導(dǎo)出文本文件時(shí)只能導(dǎo)出到數(shù)據(jù)庫(kù)服務(wù)器上,并且導(dǎo)出文件不能進(jìn)行覆蓋(導(dǎo)出文件名稱(chēng)不能已經(jīng)存在)。具體語(yǔ)法:select……intooutfilefilename[options]通過(guò)SELECT語(yǔ)句來(lái)查詢(xún)所需要的數(shù)據(jù)導(dǎo)出的文件名稱(chēng)(包含文件路徑)可選參數(shù)選項(xiàng),包含F(xiàn)IELDS子句和LINES子句10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用SQL語(yǔ)句導(dǎo)出導(dǎo)入文件A使用語(yǔ)句導(dǎo)出文件【例10-14】使用SELECT…INTOOUTFILE語(yǔ)句導(dǎo)出teaching數(shù)據(jù)庫(kù)中s表的記錄。使用FIELDS選項(xiàng)和LINES選項(xiàng),要求字段之間用“,”隔開(kāi),字符型數(shù)據(jù)用雙引號(hào)括起來(lái)。SELECT*FROMteaching.sINTOOUTFILE'd:/teaching_s.txt'FIELDSTERMINATEDBY'\,’ENCLOSEDBY'\"';使用showvariableslike‘%secure%’;語(yǔ)句查找導(dǎo)出文件的存放地址原因:辦法:secure-file-priv會(huì)指定文件夾作為導(dǎo)出文件存放的地址10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用SQL語(yǔ)句導(dǎo)出導(dǎo)入文件A使用語(yǔ)句導(dǎo)出文件SELECT*FROMteaching.sINTOOUTFILE'C:/ProgramData/MySQL/MySQLServer8.4/Uploads/teaching_s.txt’FIELDS TERMINATEDBY'\,’ ENCLOSEDBY'\"';使用showvariableslike‘%secure%’;語(yǔ)句查找導(dǎo)出文件的存放地址原因:辦法:secure-file-priv會(huì)指定文件夾作為導(dǎo)出文件存放的地址將文件目錄修改為查詢(xún)結(jié)果所顯示的目錄√10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用SQL語(yǔ)句導(dǎo)出導(dǎo)入文件A使用語(yǔ)句導(dǎo)出文件【例10-15】使用SELECT…INTOOUTFILE語(yǔ)句導(dǎo)出teaching數(shù)據(jù)庫(kù)中的s表為.xls和.xml格式。SELECT*fromteaching.sINTOOUTFILE'C:/ProgramData/MySQL/MySQLServer8.4/Uploads/teaching_s.xls’;SELECT*fromteaching.sINTOOUTFILE'C:/ProgramData/MySQL/MySQLServer8.4/Uploads/teaching_s.xml'10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用SQL語(yǔ)句導(dǎo)出導(dǎo)入文件B使用語(yǔ)句導(dǎo)入文本文件在MySQL中,LOADDATA…INFILE語(yǔ)句用于高速地從一個(gè)文本文件中讀取行,并寫(xiě)入一個(gè)表中。SELECT…INTOOUTFILE的作用是將表中的數(shù)據(jù)備份到文件中,LOADDATA…INFILE的作用是從文件中將數(shù)據(jù)恢復(fù)到表中。具體語(yǔ)法格式如下:LOADDATA[LOW_PRIORITY|CONCURRENT][LOCAL]INFILE‘file_name.txt’ [REPLACE|IGNORE] INTOTABLEtbl_name適用于表鎖存儲(chǔ)引擎,在寫(xiě)入過(guò)程中如果有客戶(hù)端程序讀表,寫(xiě)入將會(huì)延后,直至沒(méi)有任何客戶(hù)端程序讀表再繼續(xù)寫(xiě)入允許在寫(xiě)入過(guò)程中其他客戶(hù)端程序讀取表內(nèi)容只有當(dāng)mysql-server和mysql-client同時(shí)在配置中指定允許使用,LOCAL才會(huì)生效控制對(duì)現(xiàn)有的唯一鍵記錄的重復(fù)值進(jìn)行處理導(dǎo)出的包含存儲(chǔ)路徑的文件名稱(chēng)該表必須在數(shù)據(jù)庫(kù)中已經(jīng)存在,表結(jié)構(gòu)與導(dǎo)入文件的數(shù)據(jù)行一致10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用SQL語(yǔ)句導(dǎo)出導(dǎo)入文件B使用語(yǔ)句導(dǎo)入文本文件【例10-15】使用LOADDATA…INFILE語(yǔ)句將‘d:/teaching_s.txt’導(dǎo)入teaching數(shù)據(jù)庫(kù)中的s表。LOADDATAINFILE'C:/ProgramData/MySQL/MySQLServer8.4/Uploads/teaching_s.txt'INTOTABLEteaching.sFIELDSTERMINATEDBY'\,’TERMINATEDBY'\,'OPTIONALLYENCLOSEDBY'\"'LINESTERMINATEDBY'\r\n';如果該表已經(jīng)存在于數(shù)據(jù)庫(kù),為避免報(bào)錯(cuò)或者主鍵沖突,可以用replaceintotable直接將數(shù)據(jù)進(jìn)行替換。LOADDATAINFILE'C:/ProgramData/MySQL/MySQLServer8.4/Uploads/teaching_s.txt'REPLACEINTOtableteaching.s10.5數(shù)據(jù)庫(kù)導(dǎo)出和導(dǎo)入使用命令導(dǎo)出導(dǎo)入文件使用mysqldump命令導(dǎo)出文件方法與步驟詳見(jiàn)10.2.1節(jié);使用mysqldump命令導(dǎo)入文件方法與步驟詳見(jiàn)10.3.1節(jié)。A使用mysqldump命令導(dǎo)出和導(dǎo)入文件B使用mysql命令導(dǎo)出文件mysqlimport-uusername-ppassworddbnamefilename.txtC使用mysqlimport命令導(dǎo)入文本文件mysql-uusername-ppassword–-execute=”SELECT語(yǔ)句”dbname>outfile10.6MySQL日志管理日志是mysql數(shù)據(jù)庫(kù)的重要組成部分。日志文件中記錄著MySQL數(shù)據(jù)庫(kù)運(yùn)行期間發(fā)生的變化;也就是說(shuō)用來(lái)記錄MySQL數(shù)據(jù)庫(kù)的客戶(hù)端連接狀況、SQL語(yǔ)句的執(zhí)行情況和錯(cuò)誤信息等。根據(jù)記錄內(nèi)容的不同,日志文件劃分為:錯(cuò)誤日志二進(jìn)制日志通用查詢(xún)?nèi)罩韭樵?xún)?nèi)罩?0.6MySQL日志管理錯(cuò)誤日志(log-err):記錄MySQL服務(wù)器的啟動(dòng)和停止過(guò)程中的信息、服務(wù)器在運(yùn)行過(guò)程中發(fā)生的故障和異常情況的相關(guān)信息、事件調(diào)度器運(yùn)行一個(gè)事件時(shí)產(chǎn)生的信息、在從服務(wù)器上啟動(dòng)服務(wù)器進(jìn)程時(shí)產(chǎn)生的信息等。二進(jìn)制日志(log-bin):以二進(jìn)制文件的形式記錄了所有用戶(hù)對(duì)數(shù)據(jù)庫(kù)的操作。數(shù)據(jù)庫(kù)發(fā)生意外時(shí),結(jié)合數(shù)據(jù)庫(kù)備份技術(shù)可實(shí)現(xiàn)數(shù)據(jù)庫(kù)還原。通用查詢(xún)?nèi)罩荆╨og):也稱(chēng)為通用日志,記錄了用戶(hù)的所有操作,包括對(duì)數(shù)據(jù)庫(kù)的增加、刪除、修改、查詢(xún)等信息。慢查詢(xún)?nèi)罩荆╨og-slow-queries):記錄查詢(xún)時(shí)長(zhǎng)超過(guò)指定時(shí)間的查詢(xún)語(yǔ)句。日志類(lèi)型10.6MySQL日志管理錯(cuò)誤日志查看MySQL數(shù)據(jù)庫(kù)系統(tǒng)意外停止服務(wù),出現(xiàn)錯(cuò)誤的原因。二進(jìn)制日志根據(jù)記錄的用戶(hù)操作來(lái)修復(fù)數(shù)據(jù)庫(kù)。慢查詢(xún)?nèi)罩靖鶕?jù)記錄的長(zhǎng)時(shí)間、效率較低的語(yǔ)句對(duì)查詢(xún)操作進(jìn)行優(yōu)化。日志作用通用查詢(xún)?nèi)罩靖鶕?jù)記錄的操作了解用戶(hù)最近的操作,可用來(lái)修復(fù)數(shù)據(jù)庫(kù)。10.6MySQL日志管理錯(cuò)誤日志管理A啟用錯(cuò)誤日志錯(cuò)誤日志功能在默認(rèn)情況下是開(kāi)啟的,并且不能被禁止。錯(cuò)誤日志默認(rèn)以hostname.err為文件名,其中hostname為主機(jī)名。通過(guò)修改my.ini文件中的log-err和log-warnings可以配置錯(cuò)誤日志信息。--log-error=[path/[filename]]log-err定義是否啟用錯(cuò)誤日志的功能和錯(cuò)誤日志的存儲(chǔ)位置log-warnings定義是否將警告信息定義至錯(cuò)誤日志中修改配置項(xiàng)后,需要重啟MySQL服務(wù)才能生效日志文件所在的目錄路徑日志文件名10.6MySQL日志管理錯(cuò)誤日志管理B查看錯(cuò)誤日志數(shù)據(jù)庫(kù)管理員可以通過(guò)show命令查看錯(cuò)誤日志文件所在的目錄及文件名信息。showvariableslike'%log_error%';#Variable_nameValuebinlog_error_actionABORT_SERVERlog_error.\DESKTOP-2EUJC7M.errlog_error_serviceslog_filter_internal;log_sink_internallog_error_suppression_list

log_error_verbosity2錯(cuò)誤日志的文件名10.6MySQL日志管理錯(cuò)誤日志管理C刪除錯(cuò)誤日志管理員可以刪除早期的錯(cuò)誤日志,這樣可以保證MySQL服務(wù)器上的硬盤(pán)空間。對(duì)于早期的錯(cuò)誤日志,當(dāng)不再需要這些文件時(shí),可以通過(guò)show命令查看錯(cuò)誤日志文件所在的位置,然后刪除即可。10.6MySQL日志管理二進(jìn)制日志管理A開(kāi)啟二進(jìn)制日志二進(jìn)制日志文件開(kāi)啟后,所有對(duì)數(shù)據(jù)庫(kù)操作的記錄均會(huì)被記錄到此文件,所以長(zhǎng)時(shí)間開(kāi)啟之后,日志文件會(huì)變得很大,占用大量磁盤(pán)空間。查看二進(jìn)制日志是否開(kāi)啟的命令:showvariableslike'log_bin';通過(guò)my.ini文件中的log-bin選項(xiàng)可以開(kāi)啟二進(jìn)制日志,具體語(yǔ)法如下:log-bin[=path/[filename]]expire_logs_days=10max_binlog_size=100M開(kāi)啟二進(jìn)制日志日志文件所在的目錄路徑日志文件的文件名單個(gè)文件的大小限制10.6MySQL日志管理二進(jìn)制日志管理B查看二進(jìn)制日志使用show命令可以查看二進(jìn)制日志是否開(kāi)啟,如果結(jié)果為on,表明開(kāi)啟了二進(jìn)制日志使用showbinarylogs可以查看目前有哪些二進(jìn)制日志文件。log-bin以binary方式存取,可以通過(guò)MySQL提供的mysqlbinlog工具查看通過(guò)二進(jìn)制日志文件的內(nèi)容可以看出對(duì)數(shù)據(jù)庫(kù)操作的記錄,給管理員對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理或數(shù)據(jù)庫(kù)還原提供依據(jù)。10.6MySQL日志管理二進(jìn)制日志管理C刪除二進(jìn)制日志二進(jìn)制日志文件不能直接刪除,如果使用rm刪除可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)崩潰,通常使用PURGE命令刪除。PURGE{binary|master}logs{to‘og_name’|beforedatetime_expr}可以使用resetmaster刪除所有的二進(jìn)制日志文件。使用該語(yǔ)句刪除所有二進(jìn)制文件之后,MySQL將會(huì)重新創(chuàng)建二進(jìn)制日志文件,新的二進(jìn)制日志文件重新從000001開(kāi)始編號(hào)。10.6MySQL日志管理二進(jìn)制日志管理C刪除二進(jìn)制日志【例10-18】刪除指定編號(hào)000004前的所有日志。purgebinarylogsto'DESKTOP-2EUJC7M-bin.000004';purgebinarylogsbefore‘2025-02-1411:30:00’;【例10-19】刪除指定時(shí)間2025-02-1411:30:00之前產(chǎn)生的所有日志。10.6MySQL日志管理二進(jìn)制日志管理D使用二進(jìn)制日志還原數(shù)據(jù)庫(kù)在數(shù)據(jù)庫(kù)意外丟失數(shù)據(jù)時(shí)可以使用mysqlbinlog工具從指定時(shí)間點(diǎn)開(kāi)始(例如最后一次備份)直到現(xiàn)在或另一個(gè)指定時(shí)間點(diǎn)的日志中恢復(fù)數(shù)據(jù)。使用mysqlbinlog還原數(shù)據(jù)庫(kù)的命令如下:mysqlbinlog[option]filename|mysql-uuser-ppassword一些可選的選項(xiàng),其中,--start-date、--stop-date指定數(shù)據(jù)庫(kù)恢復(fù)的起始時(shí)間點(diǎn)和結(jié)束時(shí)間點(diǎn);--start-position、--stop-position指定恢復(fù)數(shù)據(jù)的開(kāi)始位置和結(jié)束位置。filename是日志文件名。10.6MySQL日志管理二進(jìn)制日志管理D使用二進(jìn)制日志還原數(shù)據(jù)庫(kù)【例10-20】使用mysqlbinlog恢復(fù)數(shù)據(jù)庫(kù)到2025年2月10日10:00:00時(shí)的狀態(tài)。mysqlbinlog-stop-date=”2025-02-1010:00:00”C:\ProgramData\MySQL\MySQLServer8.4\Data\DESKTOP-2EUJC7M-bin.000005|mysql-uroot-p該命令執(zhí)行成功后會(huì)根據(jù).000005日志文件恢復(fù)2025年2月10日10:00:00以前的所有操作。使用mysqlbinlog命令進(jìn)行還原操作時(shí),必須是編號(hào)小的先還原,比如.000001必須在.000002之前還原。10.6MySQL日志管理慢查詢(xún)?nèi)罩竟芾鞟啟用慢查詢(xún)?nèi)罩韭樵?xún)?nèi)罩驹贛ySQL中默認(rèn)是關(guān)閉的,可以通過(guò)配置文件my.ini或者f中的slow_query_log選項(xiàng)打開(kāi)。開(kāi)啟慢查詢(xún)?nèi)罩镜呐渲萌缦拢簊low_query_log_file[=path/[filename]]long_query_time=n日志文件所在的目錄路徑,如果不指定目錄和文件,默認(rèn)存儲(chǔ)在數(shù)據(jù)目錄中,文件為hostname-slow.log指定時(shí)間閾值。如果不設(shè)置long_query_time選項(xiàng),默認(rèn)時(shí)間是10秒。10.6MySQL日志管理慢查詢(xún)?nèi)罩竟芾鞟啟用慢查詢(xún)?nèi)罩緮?shù)據(jù)庫(kù)管理員還可使用命令行開(kāi)啟慢查詢(xún)?nèi)罩荆簊etglobalslow_query_log=on;setglobalslow_launch_time=1;設(shè)置完成之后,可以通過(guò)show命令查看設(shè)置情況。10.6MySQL日志管理慢查詢(xún)?nèi)罩竟芾鞡查看慢查詢(xún)?nèi)罩緢?zhí)行時(shí)間超過(guò)指定時(shí)間的查詢(xún)語(yǔ)句會(huì)被記錄到慢查詢(xún)?nèi)罩局?。可以使用記事本打開(kāi)查看慢查詢(xún)?nèi)罩?。查看慢查?xún)定義的時(shí)間值showglobalvariableslike'long_query_time';查看慢查詢(xún)?nèi)罩鞠嚓P(guān)變量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論