目錄
1.1 MySQL 日志管理
1.1.1 MySQL日志類型
1.1.2 錯誤日志
錯誤日志中主要記錄的幾種日志
錯誤日志的定義
1.1.3 通用查詢?nèi)罩?/p>
1.1.4 慢查詢?nèi)罩?/p>
和慢查詢相關(guān)的變量設(shè)置
1.1.5 二進(jìn)制日志
二進(jìn)制日志是記錄執(zhí)行的語句還是執(zhí)行后的數(shù)據(jù)
日志滾動?
1.2 MySQL備份
1.2.1 備份類型
1.2.2 備份內(nèi)容
1.2.3 常見的備份工具
MySQL自帶的工具
其他工具
1.1 MySQL 日志管理
在數(shù)據(jù)庫保存數(shù)據(jù)的時候,有時候不可避免會 出現(xiàn) 數(shù)據(jù)丟失 或者 數(shù)據(jù)被破壞,這樣情況下,我們必須 保證數(shù)據(jù) 的 安全性和完整性,就需要使用日志,來 查看或者恢復(fù)數(shù)據(jù)
數(shù)據(jù)庫中數(shù)據(jù)丟失或者數(shù)據(jù)被破壞可能的原因:
? ? ? ? 1、誤刪除數(shù)據(jù)庫
? ? ? ? 2、數(shù)據(jù)庫工作時,意外程序終止、程序崩潰
? ? ? ? 3、病毒的入侵
? ? ? ? 4、文件系統(tǒng)損壞后,系統(tǒng)進(jìn)行自檢操作時,誤刪除了核心數(shù)據(jù)
? ? ? ? 5、升級數(shù)據(jù)庫時,命令不嚴(yán)格
? ? ? ? 6、設(shè)備故障、硬件損壞
? ? ? ? 7、自然災(zāi)害、被盜
1.1.1 MySQL日志類型
日志類型 | 記錄文件中的信息類型 |
錯誤日志 | 記錄啟動、運行或終止時出現(xiàn)問題 |
查詢?nèi)罩?/td> | 記錄建立的客戶端連接和執(zhí)行的語句 |
二進(jìn)制日志 | 記錄所有更改數(shù)據(jù)的語句,主要用于復(fù)制或即時點恢復(fù) |
慢日志 | 記錄所有執(zhí)行時間超過最大查詢時間 long_query_time 的查詢操作或不使用索引的查詢 |
事務(wù)日志 | 記錄 InnoDB 等支持事務(wù)管理的存儲引擎執(zhí)行事務(wù)時所產(chǎn)生的日志 |
默認(rèn)情況下,所有日志都創(chuàng)建于 mysqld 數(shù)據(jù)目錄內(nèi),通過刷新日志,可以強制 mysqld 來關(guān)閉和重新打開 || 切換日志文件
mysql > FIUSH LOGS
或者
musqladmin flush-logs
1.1.2 錯誤日志
錯誤日志中主要記錄的幾種日志
? ? ? ? 1、服務(wù)器啟動和關(guān)閉過程中的信息
? ? ? ? 2、服務(wù)器運行過程中的錯誤信息
? ? ? ? 3、事件調(diào)度器運行一個時間時產(chǎn)生的信息
? ? ? ? 4、在從服務(wù)上啟動進(jìn)程時所產(chǎn)生的信息
錯誤日志的定義
? ? ? ? 可以用--log-error[=file_name]選項來指定mysqld保存錯誤日志文件的位置
????????如果沒有給定file_name值,mysqld使用錯誤日志名host_name.err 并在數(shù)據(jù)目錄中寫入日志文件
????????如果執(zhí)行刷新操作,錯誤日志用-old重新命名后綴并且mysqld創(chuàng)建一個新的空日志文件
#錯誤日志
mysql > SHOW GLOBAL VARIABLES LIKE '%log_error%';
#警告日志
mysql > SHOW GLOBAL VARIABLES LIKE '%log_warning%';
1.1.3 通用查詢?nèi)罩?/h3>
啟動開關(guān) | general_log = {ON || OFF} |
日志文件變量 | general_log_file [=/PATH/TO/file] |
全局日志開關(guān) | log = {ON || OFF} |
記錄類型 | log_output = {TABLE || FILE || NONE} |
如果需要啟用通用查詢?nèi)罩?,至少要配?/td> | general_log = ON , log_output = {TABLE || FILE} |
如果 general_log_file 沒有額外指定? 默認(rèn)名為 | ?host_name.log |
mysql> SHOW GLOBAL VARIABLES LIKE '%general_log%';
mysql> SHOW GLOBAL VARIABLES LIKE '%log_output%';
1.1.4 慢查詢?nèi)罩?/h3>
MySQL如果啟用了 slow_query_log = ON 選項,就會記錄執(zhí)行時間超過 long_query_time 的查詢
日志記錄文件為 slow_query_log_file[=file_name] 若沒有給定 file_name , 默認(rèn)為主機名,后綴為 -slow.log
和慢查詢相關(guān)的變量設(shè)置
系統(tǒng)默認(rèn)關(guān)閉慢查詢?nèi)罩鹃_關(guān)? 查看狀態(tài) | MYSQL> SHOW GLOBAL VARIABLES LIKE '%s low_query_log%'; |
開啟方式 | SET GLOBAL slow_query_log = ON; |
查看默認(rèn)的查詢時效 | MYSQL> SHOW GLOBAL VARIABLLES LIKE 'long_query_time'; |
1.1.5 二進(jìn)制日志
開啟日志
? ? ? ? 二進(jìn)制日志啟動開關(guān):log-bin[=file_name]
注意:
? ? ? ? 5.6版本
? ? ? ? 前:一定要手動指定
? ? ? ? 后:默認(rèn) file_name 為 $datadir/mysqld-binlog
查看二進(jìn)制日志的工具為:
? ? ? ? mysqlbinlog
二進(jìn)制日志包含了所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù),語言語句以事件形式保存,描述了數(shù)據(jù)的更改
二進(jìn)制日志還包含關(guān)于每個更新數(shù)據(jù)庫的語句的執(zhí)行時間信息
作用:
? ? ? ? 當(dāng)數(shù)據(jù)庫存在故障時,恢復(fù)能盡最大可能進(jìn)行即時點恢復(fù),因為二進(jìn)制日志內(nèi)包含了備份后進(jìn)行的所有更新,所以二進(jìn)制日志還用于在主復(fù)制服務(wù)器上記錄所有將發(fā)送給服務(wù)器的語句
二進(jìn)制日志是記錄執(zhí)行的語句還是執(zhí)行后的數(shù)據(jù)
情況1:
????????假如一個表有10萬行數(shù)據(jù),而現(xiàn)在要執(zhí)行一個如下語句將amount字段的值全部在原來的基礎(chǔ)上增加1000
UPDATE sales.january SET amount=amount+1000 ;
????????如果影響的行數(shù)過于龐大,日志內(nèi)記錄的是執(zhí)行的語句
情況2:
????????如果像某一個指定的行內(nèi)字段插入數(shù)據(jù)
UPDATE student SET Email = "XXX" WHERE StudentNo = ???;
????????此時就不能記錄語句了,因為不同時間執(zhí)行的結(jié)果是不一樣的。這是應(yīng)該記錄這一行的值,這種就是基于行(row)的二進(jìn)制日志
情況3:
????????如果出現(xiàn)觸發(fā)器 存儲函數(shù) 這種方式進(jìn)行數(shù)據(jù)的更新的話,可能會結(jié)合兩種方式來進(jìn)行記錄,這種叫做 混合方式的二進(jìn)制日志
日志滾動?
????????在 my.cnf 中設(shè)定 max_binlog_size = 200M,表示限制二進(jìn)制日志最大尺寸為200M,超過200M后進(jìn)行滾動。
????????MySQL的滾動方式與其他日志不太一樣,滾動時會創(chuàng)建一個新的編號大1的日志用于記錄最新的日志,而
????????原日志名字不會被改變。每次重啟MySQL服務(wù),日志都會自動滾動一次
#日志查看
查看有哪些二進(jìn)制日志文件:mysql> SHOW BINARY LOGS;
查看當(dāng)前正在使用的是哪一個二進(jìn)制日志文件:mysql> SHOW MASTER STATUS;
1.2 MySQL備份
1.2.1 備份類型
根據(jù)服務(wù)器的狀態(tài),備份分為三種類型
熱備份 | 讀、寫不受影響 |
溫備份 | 僅可以執(zhí)行讀操作 |
冷備份 | 讀寫均終止,離線備份 |
從對象的角度分析,分為兩種類型
物理備份 | 復(fù)制數(shù)據(jù)文件 |
邏輯備份 | 將數(shù)據(jù)導(dǎo)出至目標(biāo) XXX.sql? 文件中 |
邏輯備份的優(yōu)缺點:
? ? ? ? 優(yōu)點:
? ? ? ? ? ? ? ? 1、在備份速度上兩種備份要取決于當(dāng)前的存儲引擎
? ? ? ? ? ? ? ? 2、物理備份的還原速度非??欤俏锢韨浞莸淖钚卧荒茏龅奖?/strong>
????????????????3、邏輯備份保存的結(jié)構(gòu)通常都是ASCII形式,所以我們只能通過.sql方式進(jìn)行保存
? ? ? ? ? ? ? ? 4、邏輯備份有非常強的兼容性,而物理備份對版本要求非常高
? ? ? ? ? ? ? ? 5、邏輯備份對保持?jǐn)?shù)據(jù)的安全性有保障
? ? ? ? 缺點:
? ? ? ? ? ? ? ? 1、邏輯備份會對DBMS產(chǎn)生額外的壓力,物理備份則無明顯壓力
????????????????2、邏輯備份的結(jié)果可能比信息本身還要大??梢酝ㄟ^壓縮來緩解這一現(xiàn)象
????????????????3、針對于高精度內(nèi)容,邏輯備份可能會倒置浮點精度丟失
從數(shù)據(jù)收集上來分,分為三種類型
完全備份 | 備份全部的數(shù)據(jù) |
增量備份 | 僅備份上次完全備份或增量式備份后所變化的數(shù)據(jù) |
差異備份 | 僅備份上次完全備份后變化的數(shù)據(jù) |
1.2.2 備份內(nèi)容
數(shù)據(jù)文件
數(shù)據(jù)結(jié)構(gòu)
日志(二進(jìn)制日志,事務(wù)日志)
存儲過程,存儲函數(shù),觸發(fā)器
個人配置信息
腳本信息
1.2.3 常見的備份工具
MySQL自帶的工具
基于DBMS --------> mysqldump
mysqldump 是 mysql 數(shù)據(jù)庫管理系統(tǒng),自帶的邏輯備份工具。支持所有的主流引擎,MyISAM引擎是溫備,InnoDB 引擎是熱備。備份速度中等,還原速度較慢。因此在實現(xiàn)還原時,我們會采用其他的方式進(jìn)行操作
#備份所有數(shù)據(jù)庫:
mysqldump -uroot -p --all-databases > /usr/local/databases.sql
#備份指定的數(shù)據(jù)庫(數(shù)據(jù)表)
mysqldump -uroot -p MySchool_db student grade > /usr/local/MySchool_db.sql;
-------------------------------------------------------------------------------------------
#還原方式1
use MyScl_db;
source/usr/local/MySchool_db.sql;
#還原方式2
mysql -uroot -p MyScl_db < /usr/local/MySchool_db.sql
-------------------------------------------------------------------------------------------
其他工具
ibbackup 商業(yè)工具 MyISAM是溫備份,InnoDB是熱備份 ,備份和還原速度都很快,這個軟件它的每服務(wù)器授權(quán)版本是5000美元
xtrabackup 開源工具 MyISAM是溫備份,InnoDB是熱備份 ,是ibbackup商業(yè)工具的替代工具
mysqlbackup ORACLE公司也提供了針對企業(yè)的備份軟件MySQL Enterprise Backup簡稱:mysqlbackup文章來源:http://www.zghlxwxcb.cn/news/detail-823138.html
MySQL企業(yè)備份工具執(zhí)行在線“熱備“,無阻塞的MySQL數(shù)據(jù)庫備份。全備份可以在所有InnoDB數(shù)據(jù)庫上 執(zhí)行,而無需中斷MySQL查詢或更新。此外,支持增量備份,只備份自上次備份后有變化的數(shù)據(jù)。另外部分備 份,支持特定的表或表空間按需要進(jìn)行備份文章來源地址http://www.zghlxwxcb.cn/news/detail-823138.html
#備份
選擇需要備份的數(shù)據(jù)庫,右鍵-》備份/導(dǎo)出-》以SQL轉(zhuǎn)儲文件備份數(shù)據(jù)庫
選擇需要恢復(fù)的數(shù)據(jù)庫,右鍵-》導(dǎo)入-》從sql轉(zhuǎn)儲文件導(dǎo)入數(shù)據(jù)庫
PS 不要混用,可能會出現(xiàn)沖突,注意甄別核心命令
到了這里,關(guān)于數(shù)據(jù)庫(MySQL的備份和恢復(fù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!