《MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(微課版)》第11章-數(shù)據(jù)庫的日常管理_第1頁
《MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(微課版)》第11章-數(shù)據(jù)庫的日常管理_第2頁
《MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(微課版)》第11章-數(shù)據(jù)庫的日常管理_第3頁
《MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(微課版)》第11章-數(shù)據(jù)庫的日常管理_第4頁
《MySQL數(shù)據(jù)庫應用實戰(zhàn)教程(微課版)》第11章-數(shù)據(jù)庫的日常管理_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

項目11“在線商店”項目

的日常管理任務1管理MySQL服務器任務1管理MySQL服務器11.1.1MySQL服務器管理11.1.2MySQL存儲引擎11.1.3MySQL數(shù)據(jù)庫的組成任務2備份和恢復數(shù)據(jù)任務3使用事件任務4使用日志11.1.1MySQL服務器管理1.安裝路徑Linux上的結果Windows上的結果2.數(shù)據(jù)庫文件的路徑Linux上的結果Windows上的結果showglobalvariableslike"character_sets_dir";/usr/share/mysql/C:\ProgramFiles(x86)\MySQL\MySQLServer5.5\showglobalvariableslike"datadir";/var/lib/mysql/C:\ProgramFiles(x86)\MySQL\MySQLServer5.5\Data\11.1.1MySQL服務器管理(續(xù))3.配置文件Linux

平臺(后綴.cnf)Windows平臺(后綴.ini)4.配置文件的修改文本編輯器查看和修改它配置文件的結構,僅需關注兩組[clent]:MySQL客戶端配置[mysqld_safe][mysqld]:服務器配置[mysqldump][mysql]修改后保存,重啟MySQL服務器才能生效/etc/mysql/fC:\ProgramFiles(x86)\MySQL\MySQLServer5.5\my.ini11.1.1MySQL服務器管理(續(xù))5.啟動、停止和重啟動MySQL服務器的啟動、停止和重啟動采用命令行的方式是最簡便的,如表11.1所示。在Linux操作系統(tǒng)下,需要以Linux根用戶(root)的身份遠程登錄到Linux上,才有權限啟動和停止MySQL服務器。在Windows操作系統(tǒng)下,需要以管理員身份運行“命令提示符”窗口,才有權限啟動和停止MySQL服務器。11.1.2MySQL存儲引擎1.查看MySQL支持的存儲引擎使用下述命令查看存儲引擎的列表。運行結果如圖11.12所示。Showengines;2.MySQL存儲引擎介紹(1)InnoDB這是最常用的一種引擎,也是MySQL的默認引擎,本書所有的數(shù)據(jù)庫都采用了InnoDB引擎支持外鍵約束:其他的引擎都不支持外鍵約束。支持事務:只有InnoDB引擎支持事務,具有提交或回滾等事務處理能力。具有災難恢復的能力。適用于存在大量并發(fā)的寫操作的數(shù)據(jù)庫。(2)MyISAM這是一種舊的引擎,MyISAM引擎比較簡單,不適用于存在大量寫操作的數(shù)據(jù)庫。不支持外鍵約束和事務。不具有災難恢復的能力。適用于存在大量讀操作的數(shù)據(jù)庫,查詢性能較好。支持全文索引。(3)MEMORY這是一種基于內(nèi)存的引擎,所有數(shù)據(jù)都在內(nèi)存中,避免了對硬盤讀寫操作,因此效率特別高。效率高,查詢速度極快。受內(nèi)存容量的限制,只適用于數(shù)據(jù)較少、需要頻繁訪問的數(shù)據(jù)庫。11.1.3MySQL數(shù)據(jù)庫的組成1.數(shù)據(jù)庫目錄和表文件在MySQL服務器上,每個數(shù)據(jù)庫是一個目錄,這個目錄包含了每張表對應的文件以及數(shù)據(jù)庫相關的文件,每張表以及每個視圖是一個文件,保存在數(shù)據(jù)庫的目錄下。在不同的操作系統(tǒng)下,這些文件是相同的,它們位于以數(shù)據(jù)庫名命名的子目錄下例如eshop數(shù)據(jù)庫在Linux操作系統(tǒng)中位于下述目錄,如圖11.13所示。在Windows10操作系統(tǒng)中位于下述目錄,如圖11.14所示。/var/lib/mysql/eshop/C:\ProgramData\MySQL\MySQLServer5.5\data\eshop\11.1.3MySQL數(shù)據(jù)庫的組成(續(xù))2.系統(tǒng)數(shù)據(jù)庫MySQL的數(shù)據(jù)庫分為系統(tǒng)數(shù)據(jù)庫和用戶創(chuàng)建的數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫有3個mysql:MySQL的核心數(shù)據(jù)庫,保存用戶、權限設置、關鍵字等控制和管理信息information_schema:MySQL的信息數(shù)據(jù)庫,保存其他數(shù)據(jù)庫的信息,如數(shù)據(jù)庫名、表、列名及其數(shù)據(jù)類型等performance_schema:用于收集數(shù)據(jù)庫服務器性能參數(shù)它們是在安裝后,首次配置時自動創(chuàng)建的。它們保存了MySQL服務器的關鍵數(shù)據(jù),具有非常重要的作用,所以千萬不能刪除它們?nèi)蝿?備份和恢復數(shù)據(jù)任務1管理MySQL服務器任務2備份和恢復數(shù)據(jù)11.2.1數(shù)據(jù)庫備份概述11.2.2【實訓11-1】數(shù)據(jù)庫備份與恢復11.2.3數(shù)據(jù)庫遷移11.2.4備份策略和恢復策略11.2.5【實訓11-2】備份策略和恢復策略(Linux)11.2.6【實訓11-3】備份策略和恢復策略(Windows)任務3使用事件任務4使用日志11.2.1數(shù)據(jù)庫備份概述1.為什么備份在數(shù)據(jù)庫運行的過程中,可能會由于人為的、意外的或者不可抗的因素造成數(shù)據(jù)的損壞或丟失例如一場火災把一家銀行的數(shù)據(jù)庫機房燒毀了,而引起數(shù)百萬人的存款和貸款數(shù)據(jù)丟失,只要平時做好備份,這種情況是完全可以避免的。造成數(shù)據(jù)損壞或丟失的可能原因有如下幾種。自然災害:例如地震、火災、水災、臺風等。系統(tǒng)硬件故障:例如磁盤損壞,或其他硬件故障導致的數(shù)據(jù)損壞。系統(tǒng)軟件故障:例如操作系統(tǒng)或應用軟件的故障引起的數(shù)據(jù)損壞。計算機病毒:有些計算機病毒會故意損壞數(shù)據(jù),包括數(shù)據(jù)庫的數(shù)據(jù)。黑客攻擊:黑客的惡意攻擊,可能造成數(shù)據(jù)丟失或被篡改。人為誤操作:人為誤操作是經(jīng)常發(fā)生的,例如誤刪除了表或修改了數(shù)據(jù)。防止數(shù)據(jù)損壞或丟失的措施有數(shù)據(jù)備份、雙機熱備、異地存儲、遠程集群等多種方案,本書僅講解最基本的數(shù)據(jù)備份。微課:11-1數(shù)據(jù)備份與恢復11.2.1數(shù)據(jù)庫備份概述(續(xù))2.備份的內(nèi)容通常情況下,備份的內(nèi)容是MySQL服務器上的一個數(shù)據(jù)庫或全部數(shù)據(jù)庫的數(shù)據(jù)庫對象表(Tables):包括數(shù)據(jù)結構和數(shù)據(jù),以及索引的定義等。視圖(Views):視圖的定義,視圖本身并沒有數(shù)據(jù)。存儲過程(Procedures):存儲過程的定義,即SQL編寫的代碼。存儲函數(shù)(Functions):存儲函數(shù)的定義,即SQL編寫的代碼。觸發(fā)器(Triggers):觸發(fā)器的定義,即SQL編寫的代碼。事件(Events):事件的定義(事件在下一節(jié)“任務3使用事件”講解)。備份通常不包括用戶賬號、權限控制等數(shù)據(jù),這些數(shù)據(jù)保存在mysql數(shù)據(jù)庫中,需要備份mysql數(shù)據(jù)庫才能備份用戶賬號和權限控制等數(shù)據(jù)可能還需要備份MySQL服務器的配置文件,以便重新安裝MySQL時,可以重新構建一個完全相同的MySQL服務器11.2.1數(shù)據(jù)庫備份概述(續(xù))3.備份類型(1)邏輯備份與物理備份邏輯備份:指以文本的方式(SQL語句),把數(shù)據(jù)庫的數(shù)據(jù)結構和數(shù)據(jù)備份為SQL腳本文件,這個文件的內(nèi)容是由Create和Insert、Update、Delete等語句組成的,用這些語句可以完整地恢復數(shù)據(jù)庫所有內(nèi)容。物理備份:指對數(shù)據(jù)庫文件進行的備份,它僅復制文件,因此備份速度快。但是只能在MySQL服務器停止服務時才能進行,并且只能移植到相同版本的MySQL服務器上(2)熱備份與冷備份熱備份:指在數(shù)據(jù)庫服務仍然運行時做備份,在備份的過程中,服務器仍然能夠提供正常的讀寫操作,提供正常的服務。由于InnoDB引擎具有事務功能,因此可以支持熱備份冷備份:指數(shù)據(jù)庫服務必須暫停下來,并將所有未寫入數(shù)據(jù)庫的數(shù)據(jù)寫到數(shù)據(jù)庫文件中,然后進行備份。由于InnoDB引擎之外的其他引擎不支持事務功能,因此對這些數(shù)據(jù)庫只能使用冷備份,才能得到一致的備份數(shù)據(jù)。11.2.2【實訓11-1】數(shù)據(jù)庫備份與恢復本書僅講解在實際中最常使用的邏輯備份,并且是針對InnoDB引擎的熱備份。1.數(shù)據(jù)庫備份數(shù)據(jù)庫備份采用mysqldump命令進行,其語法格式如下該命令在不同平臺上是相同的要用一個文件重定向元字符>將備份的輸出重定向到指定的文件可以同時指定多個數(shù)據(jù)庫。也可以同時備份全部數(shù)據(jù)庫。常用的參數(shù)如表11.2所示(見教材第141頁)最重要的一個參數(shù)是--routines(-R),它將會備份存儲例程(存儲過程和存儲函數(shù))的定義mysqldump-u用戶名-p密碼選項--all-databases>腳本文件名操作系統(tǒng)提示符>mysqldump-u用戶名-p密碼選項數(shù)據(jù)庫名>腳本文件名mysqldump-u用戶名-p密碼選項--databases數(shù)據(jù)庫名1數(shù)據(jù)庫名2…>腳本文件名【實訓11-1】11.2.2【實訓11-1】數(shù)據(jù)庫備份與恢復(續(xù))2.數(shù)據(jù)庫恢復數(shù)據(jù)庫恢復使用mysql命令來完成,語法格式如下其中文件重定向元字符<的含義是將“腳本文件名”的內(nèi)容作為mysql的輸入內(nèi)容。使用mysql命令進行恢復的一個例子是項目9的“9.3.2【實訓9-3】數(shù)據(jù)庫的遷移”小節(jié)使用下述命令從備份文件中恢復eshop數(shù)據(jù)庫(需要指定恢復的數(shù)據(jù)庫名)。用下述語句可以恢復eshop數(shù)據(jù)庫和mysql數(shù)據(jù)庫(無須指定恢復的數(shù)據(jù)庫名,因為數(shù)據(jù)庫名已經(jīng)在備份文件中指定)。操作系統(tǒng)提示符>mysql-u用戶名-p密碼數(shù)據(jù)庫名<腳本文件名mysql-uroot-pJitor123eshop</root/eshop_backup.sqlmysql-uroot-psa<eshop_mysql.sql11.2.2【實訓11-1】數(shù)據(jù)庫備份與恢復(續(xù))2.數(shù)據(jù)庫恢復(續(xù))如果只恢復一個數(shù)據(jù)庫,則需要指定數(shù)據(jù)庫的名字,并且該數(shù)據(jù)庫已經(jīng)存在。如果從一個備份文件中恢復多個數(shù)據(jù)庫,則無需指定數(shù)據(jù)庫名。在恢復數(shù)據(jù)庫之前,如果數(shù)據(jù)庫不存在,應該先創(chuàng)建數(shù)據(jù)庫,如果數(shù)據(jù)庫已存在,則恢復時會通過刪除表、重新創(chuàng)建表、插入數(shù)據(jù)的方式來自動恢復所有數(shù)據(jù)。但是如果存在備份文件中不存在的表,則這部分內(nèi)容保持不變。用備份文件完全覆蓋一個現(xiàn)有的數(shù)據(jù)庫的操作如下。丟棄現(xiàn)有數(shù)據(jù)庫:該數(shù)據(jù)庫可能有數(shù)據(jù),但是需要確認這些數(shù)據(jù)是可丟棄的。重新創(chuàng)建新的數(shù)據(jù)庫:這是新的空數(shù)據(jù)庫,注意指定正確的字符集。用下述命令從備份中恢復數(shù)據(jù)庫。注:不建議使用source命令恢復數(shù)據(jù)庫,因為性能很低mysql-uroot-p數(shù)據(jù)庫名<數(shù)據(jù)庫備份文件;11.2.3數(shù)據(jù)庫遷移數(shù)據(jù)庫遷移是指將數(shù)據(jù)庫從一臺服務器遷移到另一臺服務器,可以通過在源服務器備份和在目標服務器恢復數(shù)據(jù)庫的方式來實現(xiàn)。不同操作系統(tǒng)平臺對遷移的過程沒有任何影響,而不同版本或不同種類的數(shù)據(jù)庫管理系統(tǒng)則會對遷移過程造成一定的影響。1.同版本MySQL間的遷移如果源服務器和目標服務器的MySQL是相同版本的,這時的遷移過程很方便2.不同版本MySQL間的遷移從低版本向高版本的MySQL遷移不會有什么問題,而從高版本向低版本的遷移則有可能出現(xiàn)兼容性問題,3.不同數(shù)據(jù)庫管理系統(tǒng)間的遷移這種情況是指MySQL和其他數(shù)據(jù)庫管理系統(tǒng)(例如Oracle或SQLServer等)之間的遷移,不論是從MySQL遷出,還是遷入到MySQL,都會存在比較大的問題。11.2.3數(shù)據(jù)庫遷移(續(xù))3.不同數(shù)據(jù)庫管理系統(tǒng)間的遷移(續(xù))存在比較大的問題,體現(xiàn)在如下幾個方面數(shù)據(jù)類型不同:例如MySQL不支持SQLServer的money數(shù)據(jù)類型,在MySQL中起類似作用的數(shù)據(jù)類型是decimal(精確浮點數(shù))。SQL語句的語法不同:例如SQLServer的Select語句不支持MySQL的limit子句,而是用top子句,后者又不被MySQL支持。內(nèi)置函數(shù)不同:例如獲得當前日期時間的函數(shù),MySQL的是now(),而SQLServer的則是getDate()。支持的命令不同:例如MySQL不支持SQLServer的Print命令,而SQLServer不支持MySQL的Show命令。存儲函數(shù)、存儲過程寫法不同:MySQL需要用Delimeter命令定義新的分隔符,而SQLServer則沒有這個需要。觸發(fā)器的要求不同:例如在觸發(fā)器內(nèi)部訪問新舊數(shù)據(jù),MySQL的是new和old對象,而SQLServer的則是inserted和deleted表。由于存在上述區(qū)別,特別是在函數(shù)(內(nèi)置函數(shù)和存儲函數(shù))、存儲過程以及觸發(fā)器方面的差別,使數(shù)據(jù)庫在不同的數(shù)據(jù)庫管理系統(tǒng)之間的遷移變得比較困難。11.2.4備份策略和恢復策略靜態(tài)備份和靜態(tài)恢復存在的問題前述的數(shù)據(jù)庫備份是一種全庫備份,它是一種靜態(tài)的備份策略,是在固定的時間對整個數(shù)據(jù)庫進行備份。數(shù)據(jù)庫的數(shù)據(jù)是動態(tài)變化的,每時每刻都可能有數(shù)據(jù)的插入、更新或刪除。這些數(shù)據(jù)的變化是十分重要的,特別是對于實時要求較高的數(shù)據(jù)庫。定時的、對整個數(shù)據(jù)庫的備份顯然無法做到對每一個數(shù)據(jù)變化都及時備份。備份策略和恢復策略的目標因此需要一種完善的機制,保證對動態(tài)數(shù)據(jù)的及時備份,并在出現(xiàn)問題時,恢復所有數(shù)據(jù)11.2.4備份策略和恢復策略(續(xù))1.備份策略概述需要建立一種完善的備份策略來實現(xiàn)對每一個數(shù)據(jù)變化都能及時進行備份。這個策略是由兩種不同形式的備份來共同完成的,如表11.3所示2.恢復策略概述當數(shù)據(jù)庫遭到損壞時,就需要用備份的數(shù)據(jù)恢復數(shù)據(jù)庫。先從全庫備份中恢復數(shù)據(jù),然后再從增量備份中恢復全庫備份以后改變過的數(shù)據(jù),如表11.4所示。11.2.5【實訓11-2】備份策略和恢復策略(Linux)1.備份策略的實施——定時進行全庫備份(1)創(chuàng)建備份用腳本文件首先創(chuàng)建一個備份用的腳本文件/root/backup.sh,內(nèi)容如下將這個腳本文件修改為可執(zhí)行文件,代碼如下(注意:chmod的首字母是小寫的)。測試腳本文件是否可以正常執(zhí)行,代碼如下。執(zhí)行后,將在/root目錄生成一個備份文件eshop_bakcup.sql。(2)設置定時運行腳本文件然后設置定時備份,即定時執(zhí)行/root/backup.sh。通常定時執(zhí)行的時間都設置為凌晨,因為這個時候使用數(shù)據(jù)庫的用戶最少,備份對用戶的影響也最小。在遠程終端上執(zhí)行命令crontab-e,在最后添加一行如下的配置。這個配置是指定每個星期日凌晨3:00執(zhí)行上述腳本文件,進行全庫備份#!/bin/bashmysqldump-uroot-pJitor123eshop>/root/eshop_bakcup.sqlchmod777/root/backup.sh./backup.sh03**0/bin/bash-x/root/backup.sh>/dev/null2>&1【實訓11-2】11.2.5【實訓11-2】備份策略和恢復策略(Linux)(續(xù))2.備份策略的實施——增量備份增量備份的實質(zhì)是記錄對數(shù)據(jù)庫的每一次數(shù)據(jù)定義(Create、Alter和Drop)操作和增、刪、改(Insert、Update和Delete)操作,MySQL提供了二進制日志功能來記錄對數(shù)據(jù)庫的數(shù)據(jù)定義和增、刪、改操作,這種記錄就是增量備份。(1)配置二進制日志二進制日志功能默認是不啟用的,需要修改MySQL的配置文件f,在[mysqld]部分修改下述配置(僅需刪除配置項前的注釋#號),啟用二進制日志,如圖11.18所示。(2)修改并保存后,用下述命令重新啟動MySQL服務器。重新啟動后,可以看到在/var/log/mysql/目錄下有一個二進制日志文件,它的后綴是一個6位數(shù)字,第一個文件的后綴是.000001,然后順序遞增,如圖11.19所示(教材第247頁)(3)需要時可以查看二進制日志的內(nèi)容[mysqld]log_bin=/var/log/mysql/mysql-bin.logexpire_logs_days=10max_binlog_size=100Mservicemysqlrestart11.2.5【實訓11-2】備份策略和恢復策略(Linux)(續(xù))3.恢復策略的實施經(jīng)過前述兩個步驟,數(shù)據(jù)庫備份已經(jīng)完成。在PPT里,只講解整個過程,而不注重細節(jié)。為了模擬數(shù)據(jù)丟失,可以直接Drop數(shù)據(jù)庫。(1)恢復前的準備當發(fā)生了數(shù)據(jù)庫損壞或數(shù)據(jù)丟失,首先要停止MySQL服務器,然后將所有備份文件復制到一個安全的地方,以防止備份文件的損壞或丟失造成嚴重后果。特別要注意的是,在恢復過程中,數(shù)據(jù)庫不允許被其他用戶訪問,直到數(shù)據(jù)庫完全恢復。(2)從全庫備份中恢復重新啟動MySQL服務器(不允許其他用戶使用,以免破壞數(shù)據(jù)的一致性),運行下述SQL代碼這時查詢數(shù)據(jù),可以發(fā)現(xiàn)全庫備份已經(jīng)恢復,但是全庫備份后的數(shù)據(jù)變化并沒有恢復。Createdatabaseeshopcharactersetutf8collateutf8;useeshop;mysql-uroot-psa<eshop_mysql.sql11.2.5【實訓11-2】備份策略和恢復策略(Linux)(續(xù))3.恢復策略的實施(續(xù))(3)從二進制日志文件中找到要恢復的數(shù)據(jù)切換到日志目錄,用命令mysqlbinlog查看二進制日志文件。從二進制日志文件中找到需要恢復的數(shù)據(jù),通常是一段連續(xù)的數(shù)據(jù)(數(shù)據(jù)操縱語句)例如找到的需要恢復的日志是偏移位置從635到797的二進制日志(4)從二進制日志文件中恢復用以下命令恢復偏移位置從635到797的二進制日志(注意提供正確的密碼)。其中符號“|”是管道元字符,它的前后分別是一條Linux命令,作用是把前一條命令的輸出結果作為后一條命令的輸入,就像一條管道,數(shù)據(jù)從前一條命令流到后一條命令。最后登錄到MySQL,使用查詢語句,可以驗證全庫備份之后的數(shù)據(jù)變化(恢復的數(shù)據(jù)由偏移位置決定)已經(jīng)反映在數(shù)據(jù)庫中至此,數(shù)據(jù)恢復全部完成,可以允許其他用戶訪問cd/var/log/mysql/mysqlbinlogmysql-bin.bak.000001mysqlbinlog--start-position=635--stop-position=797mysql-bin.bak.000001|mysql-uroot-pJitor12311.2.6【實訓11-3】備份策略和恢復策略(Windows)1.備份策略的實施——定時進行全庫備份(1)創(chuàng)建備份用批處理文件首先創(chuàng)建一個保存?zhèn)浞菸募玫哪夸?,例如D:\eshop,然后編寫一個備份用的批處理文件(這是一個可執(zhí)行文件),例如D:\eshop\backup.bat,內(nèi)容如下(注意將代碼中的sa替換為正確的密碼)。測試腳本文件是否可以正常執(zhí)行,代碼如下。執(zhí)行后,將在D:\eshop目錄中生成一個備份文件eshop_bakcup.sql。(2)設置定時運行批處理文件然后設置定時備份,即定時執(zhí)行D:\eshop\backup.bat。通常定時執(zhí)行的時間都設置為凌晨,因為這個時候使用數(shù)據(jù)庫的用戶最少,備份對用戶的影響也最小。辦法是用鼠標右鍵單擊“我的電腦”,執(zhí)行“管理”命令,如圖11.22所示。在打開的“計算機管理”界面中選擇“任務計劃程序”,然后在右側選擇“創(chuàng)建基本任務”,如圖11.23所示,打開“創(chuàng)建基本任務向?qū)А?,根?jù)向?qū)У囊筮M行設置(見教材第250-251頁)設置完成后,Windows操作系統(tǒng)將會在指定的時間運行指定的程序,實現(xiàn)數(shù)據(jù)庫備份D:\eshop\backup.shmysqldump-uroot-psaeshop>D:\eshop\eshop_bakcup.sql【實訓11-3】11.2.6【實訓11-3】備份策略和恢復策略(Windows)(續(xù))2.備份策略的實施——增量備份增量備份的實質(zhì)是記錄對數(shù)據(jù)庫的每一次數(shù)據(jù)定義(Create、Alter和Drop)操作和增、刪、改(Insert、Update和Delete)操作,MySQL提供了二進制日志功能來記錄對數(shù)據(jù)庫的數(shù)據(jù)定義和增、刪、改操作,這種記錄就是增量備份。(1)配置二進制日志默認安裝時,二進制日志功能是不啟用的,需要修改MySQL的配置文件my.ini,在[mysqld]部分添加下述配置,如圖11.31所示。(2)修改并保存后,用下述命令重新啟動MySQL服務器。重新啟動后,可以看到在C:\ProgramData\MySQL\MySQLServer5.5\Data\目錄下有一個二進制日志文件,它的后綴是一個6位數(shù)字,第一個文件的后綴是.000001,然后依次遞增,如圖11.32所示(教材第252頁)(3)需要時可以查看二進制日志的內(nèi)容[mysqld]log_bin=C:\ProgramData\MySQL\MySQLServer5.5\Data\mysql-bin.logexpire_logs_days=10max_binlog_size=100Mnetstopmysqlnetstartmysql11.2.6【實訓11-3】備份策略和恢復策略(Windows)(續(xù))3.恢復策略的實施經(jīng)過前述兩個步驟,數(shù)據(jù)庫備份已經(jīng)完成。在PPT里,只講解整個過程,而不注重細節(jié)。為了模擬數(shù)據(jù)丟失,可以直接Drop數(shù)據(jù)庫。(1)恢復前的準備當發(fā)生了數(shù)據(jù)庫損壞或數(shù)據(jù)丟失,首先要停止MySQL服務器,然后將所有備份文件復制到一個安全的地方,以防止備份文件的損壞或丟失造成嚴重后果。特別要注意的是,在恢復過程中,數(shù)據(jù)庫不允許被其他用戶訪問,直到數(shù)據(jù)庫完全恢復。(2)從全庫備份中恢復重新啟動MySQL服務器(不允許其他用戶使用,以免破壞數(shù)據(jù)的一致性),運行下述SQL代碼這時查詢數(shù)據(jù),可以發(fā)現(xiàn)全庫備份已經(jīng)恢復,但是全庫備份后的數(shù)據(jù)變化并沒有恢復。Createdatabaseeshopcharactersetutf8collateutf8;useeshop;mysql-uroot-psa<eshop_mysql.sql11.2.6【實訓11-3】備份策略和恢復策略(Windows)(續(xù))3.恢復策略的實施(續(xù))(3)從二進制日志文件中找到要恢復的數(shù)據(jù)切換到日志目錄,用命令mysqlbinlog查看二進制日志文件。從二進制日志文件中找到需要恢復的數(shù)據(jù),通常是一段連續(xù)的數(shù)據(jù)(數(shù)據(jù)操縱語句)例如找到的需要恢復的日志是偏移位置從817到1045的二進制日志(4)從二進制日志文件中恢復用以下命令恢復偏移位置從817到1045的二進制日志(注意提供正確的密碼)。其中符號“|”是管道元字符,它的前后分別是一條Windows命令,作用是把前一條命令的輸出結果作為后一條命令的輸入,就像一條管道,數(shù)據(jù)從前一條命令流到后一條命令。最后登錄到MySQL,使用查詢語句,可以驗證全庫備份之后的數(shù)據(jù)變化(恢復的數(shù)據(jù)由偏移位置決定)已經(jīng)反映在數(shù)據(jù)庫中至此,數(shù)據(jù)恢復全部完成,可以允許其他用戶訪問cdC:\ProgramData\MySQL\MySQLServer5.5\Data\mysqlbinlogmysql-bin.bak.000001mysqlbinlog--start-position=817--stop-position=1045mysql-bin.bak.000001|mysql-uroot-psa任務3使用事件任務1管理MySQL服務器任務2備份和恢復數(shù)據(jù)任務3使用事件11.3.1事件概述11.3.2【實訓11-4】使用MySQL事件任務4使用日志11.3.1事件概述在“任務2備份和恢復數(shù)據(jù)”一節(jié)講解“定時進行全庫備份”時,講解了定時任務(運行腳本文件或批處理文件)的實施,但是它是在操作系統(tǒng)層面上進行的,是分別在Linux和Windows操作系統(tǒng)上進行的事件也是一種定時任務,它是在MySQL內(nèi)部執(zhí)行的,但是它不能實現(xiàn)定時備份數(shù)據(jù)庫的任務事件是一種在MySQL內(nèi)部定時執(zhí)行SQL語句的機制一個事件有下述兩方面的內(nèi)容要被執(zhí)行的SQL語句,也可以是一個存儲過程事件執(zhí)行的時間,可以指定在某個時間執(zhí)行一次,也可以指定循環(huán)執(zhí)行的間隔時間事件可以用于日常維護,例如,每日定時統(tǒng)計前一日的銷售金額,用于制作日報表,每月定時統(tǒng)計月報表等。11.3.2【實訓11-4】使用MySQL事件在默認情況下,事件調(diào)度是未啟用的,可以通過下述語句查看當前的狀態(tài)。如果值為OFF,表示沒有啟用。1.啟用事件調(diào)度在MySQL的配置文件的[mysqld]中加入下述設置項。重新啟動MySQL服務器,這時檢查event_scheduler的值,如果是ON,表示啟用。showvariableslike'event_scheduler';[mysqld]event_scheduler=1【實訓11-4】11.3.2【實訓11-4】使用MySQL事件(續(xù))2.創(chuàng)建事件下面用一個例子來演示事件的創(chuàng)建,以及定時執(zhí)行的效果。先創(chuàng)建一張表,用于記錄事件執(zhí)行的效果。編寫一個事件,向event_log表插入一行,其中every10second表示每隔10秒執(zhí)行一次,連續(xù)執(zhí)行,代碼如下。Dropeventifexistse_log_event;Delimiter$$Createevente_log_eventonscheduleevery10seconddobegininsertintoevent_logvalues(null,'logtag',now());end$$Delimiter;Useeshop;Createtableevent_log(id_event_logintnotnullprimarykeyauto_increment,col_tagvarchar(20),col_timedatetime);11.3.2【實訓11-4】使用MySQL事件(續(xù))3.事件執(zhí)行的效果在1分多鐘后查詢event_log表的數(shù)據(jù),可以檢查事件定時執(zhí)行的效果。圖11.36所示是在開始事件調(diào)度后1分多種的查詢結果,該事件共執(zhí)行了8次,每次時間間隔是10秒。由此證明,在規(guī)定的時間確實執(zhí)行了指定的事件Select*fromevent_log;任務4使用日志任務1管理MySQL服務器任務2備份和恢復數(shù)據(jù)任務3使用事件任務4使用日志11.4.1日志概述11.4.2【實訓11-5】使用MySQL11.4.1日志概述運維工作不僅是安全設置、數(shù)據(jù)備份和恢復等,還有一項很重要的工作是監(jiān)控系統(tǒng)的運行狀況,通過MySQL的日志功能,系統(tǒng)管理員能夠得到一些有用的信息MySQL日志系統(tǒng)由下述4類日志組成。錯誤日志:記錄啟動、運行或停止mysqld,以及運行時出現(xiàn)的問題。通用查詢?nèi)罩荆河涗浗⒌目蛻舳诉B接和執(zhí)行的語句。二進制日志:記錄所有DDL和DML語句。慢查詢?nèi)罩荆河涗浻绊憯?shù)據(jù)庫性能瓶頸的、占用時間過長的查詢。二進制日志已在“任務2備份和恢復數(shù)據(jù)”一節(jié)中詳細講解過,下面將講解其余3種日志。11.4.2【實訓11-5】使用MySQL1.錯誤日志錯誤日志默認是開啟的,并且不能關閉,其他3種日志文件默認是不開啟的。錯誤日志文件在不同操作系統(tǒng)下位于不同的目錄中,可以用下述命令查詢所在的目錄錯誤日志可以用任何文本編輯器打開,如圖11.40所示showvariableslike"log_error";【實訓11-5】11.4.2【實訓11-5】使用MySQL(續(xù))2.通用查詢?nèi)罩就ㄓ貌樵內(nèi)罩灸J是不開啟的,查詢是否開啟的命令如下啟用通用查詢?nèi)罩镜霓k法是在

溫馨提示

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

評論

0/150

提交評論