欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL日志管理和備份與恢復

 更新時間:2023年04月03日 09:20:55   作者:Zcien  
這篇文章主要介紹了MySQL如何實現(xiàn)日志的管理,備份與恢復,本文有一定的參考價值,感興趣的小伙伴可以參考閱讀

一.MySQL 日志管理

MySQL 的日志默認保存位置為 /usr/local/mysql/data
MySQL 的日志配置文件為/etc/my.cnf ,里面有個[mysqld]項
修改配置文件:

vim /etc/my.cnf
[mysqld]

1、錯誤日志

##錯誤日志,用來記錄當MySQL啟動、停止或運行時發(fā)生的錯誤信息,默認已開啟

log-error=/usr/local/mysql/data/mysql_error.log #指定日志的保存位置和文件名

2、通用查詢?nèi)罩?/h3>

##通用查詢?nèi)罩荆脕碛涗汳ySQL的所有連接和語句,默認是關閉的

general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

3、二進制日志

##二進制日志(binlog),用來記錄所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的語句,記錄了數(shù)據(jù)的更改,可用于數(shù)據(jù)恢復,默認已開啟
log-bin=mysql-bin #也可以 log_bin=mysql-bin

4、慢查詢?nèi)罩?/h3>

##慢查詢?nèi)罩?,用來記錄所有?zhí)行時間超過long_query_time秒的語句,可以找到哪些查詢語句執(zhí)行時間長,以便于優(yōu)化,默認是關閉的

slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5 #設置超過5秒執(zhí)行的語句被記錄,缺省時為10秒

systemctl restart mysqld

mysql -u root -p

5、查看日志

show variables like 'general%'; #查看通用查詢?nèi)罩臼欠耖_啟

show variables like 'log_bin%'; #查看二進制日志是否開啟

show variables like '%slow%'; #查看慢查詢?nèi)展δ苁欠耖_啟
show variables like 'long_query_time'; #查看慢查詢時間設置

set global show_query_log=ON; #在數(shù)據(jù)庫中設置開啟慢查詢的方法

6、實例操作

6.1 修改配置文件并重啟服務

[root@www ~]# tail -10 /etc/my.cnf
 
log-error=/usr/local/mysql/data/mysql_error.log
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
log-bin=mysql-bin
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5

[root@www ~]# systemctl restart mysqld.service

6.2 查詢?nèi)罩?/p>

6.3 開啟以及關閉慢查詢的方法

二、數(shù)據(jù)庫備份的重要性與分類

1、數(shù)據(jù)備份的重要性

• 備份的主要目的是災難恢復

• 在生產(chǎn)環(huán)境中,數(shù)據(jù)的安全性至關重要

• 任何數(shù)據(jù)的丟失都可能產(chǎn)生嚴重的后果

造成數(shù)據(jù)丟失的原因:

程序錯誤

人為操作錯誤

運算錯誤

磁盤故障

不可控因素

2、從物理與邏輯的角度,備份分為:

• 物理備份: 對數(shù)據(jù)庫操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、日志文件等)的備份

• 邏輯備份:對數(shù)據(jù)庫邏輯組件(如:表等數(shù)據(jù)庫對象)的備份

物理備份方法:

? 冷備份(脫機備份):是在關閉數(shù)據(jù)庫的時候進行的

? 熱備份(聯(lián)機備份):數(shù)據(jù)庫處于運行狀態(tài),依賴于數(shù)據(jù)庫的日志文件

? 溫備份:數(shù)據(jù)庫鎖定表格(不可寫入但可讀)的狀態(tài)下進行備份操作

3、從數(shù)據(jù)庫的備份策略角度,備份可分為:

• 完全備份:每次對數(shù)據(jù)庫進行完整的備份

• 差異備份:備份自從上次完全備份之后被修改過的文件

• 增量備份:只有在上次完全備份或者增量備份后被修改的文件才會被備份

三、常見的備份方法

1、物理冷備

• 備份時數(shù)據(jù)庫處于關閉狀態(tài),直接打包數(shù)據(jù)庫文件

• 備份速度快,恢復時也是最簡單的

2、專用備份工具mydump或mysqlhotcopy

• myaqldump常用的邏輯備份工具

• mysqlhotcopy僅擁有備份MyISM和ARCHIVE表

3、啟用二進制日志進行增量備份

• 進行增量備份,需要刷新二進制日志

4、第三方工具備份

• 免費MySQL熱備份軟件Percona XtraBackup

四、MySQL完全備份

1、完全備份的概念

是對整個數(shù)據(jù)庫,數(shù)據(jù)庫結(jié)構(gòu)和文件結(jié)構(gòu)的備份

保存的是備份完成時刻的數(shù)據(jù)庫

是差異備份與增量備份的基礎

2、優(yōu)點

• 備份與恢復操作簡單方便

3、缺點

• 數(shù)據(jù)存在大量的重復

• 占用大量的備份空間

• 備份與恢復時間長

4、數(shù)據(jù)庫完全備份分類

4.1 物理冷備份與恢復

• 關閉MySQL數(shù)據(jù)庫

• 使用tar命令直接打包數(shù)據(jù)庫文件夾

• 直接替換現(xiàn)有MySQL目錄即可

4.2 mysqldump備份與恢復

• Mysql自帶的備份工具,可方便實現(xiàn)對MySQL的備份

• 可以將指定的庫、表導出為SQL腳本

• 使用命令mysql導入備份的數(shù)據(jù)

五、MySQL增量備份

1、使用mysqldump進行完全備份存在的問題

• 備份數(shù)據(jù)中有重復數(shù)據(jù)

• 備份時間與恢復時間過長

2、增量備份的概念

是自上一次備份后增加/變化的文件或者內(nèi)容

3、增量備份的特點

• 沒有重復數(shù)據(jù),備份不大,時間短

• 恢復需要上次完全備份及完全備份之后所有的增量備份才能恢復,且要對所有增備份進行逐個反推恢復

4、增量備份的方法

MySQL沒有提供直接的增量備份方法

可通過MySQL提供的二進制日志間接實現(xiàn)增量備份

5、MySQL二進制日志對備份的意義

• 二進制日志保存了所有更新或者可能更新數(shù)據(jù)庫的操作

• 二進制日志在啟動MySQL服務器后開始記錄,并在文件達到max_ binlog_ size所設 置的大小或者接收到flush logs命令后重新創(chuàng)建新的日志文件

• 只需定時執(zhí)行flush logs方法重新創(chuàng)建新的日志,生成二進制文件序列,并及時把這些日志保存到安全的地方就完成了-一個時間段的增量備份

6、MySQL數(shù)據(jù)庫增量恢復

6.1 一般恢復

• 將所有備份的二進制日志內(nèi)容全部恢復

6.2 基于位置恢復

• 數(shù)據(jù)庫在某一時間點可能既有錯誤的操作也有正確的操作

• 可以基于精準的位置跳過錯誤的操作

6.3 基于時間點恢復

• 跳過某個發(fā)生錯誤的時間點實現(xiàn)數(shù)據(jù)恢復

六、MySQL 完全備份與恢復

InnoDB存儲引擎的數(shù)據(jù)庫在磁盤上存儲成三個文件:

• db.opt(表屬性文件)
• 表名.frm(表結(jié)構(gòu)文件)
• 表名.ibd(表數(shù)據(jù)文件)

1、物理冷備份與恢復

systemctl stop mysqld
yum -y install xz
 
cd /usr/local/mysql
#壓縮備份
tar Jcvf /opt/mysql_all_$(date +%F).tar.xz ./data
#解壓恢復
tar Jxvf /opt/mysql_all_2021-8-30.tar.xz  

1.1 備份data目錄

1.2 刪除數(shù)據(jù)庫bbc,測試備份能否恢復

2、mysqldump 備份與恢復

2.1 完全備份一個或多個完整的庫(包括其中所有的表)

mysqldump -u root -p[密碼] --databases 庫名1 [庫名2] … > /備份路徑/備份文件名.sql #導出的就是數(shù)據(jù)庫腳本文件

例:

mysqldump -u root -p --databases bbc > /opt/bbc.sql
mysqldump -u root -p --databases mysql bbc > /opt/mysql-bbc.sql

2.2 完全備份 MySQL 服務器中所有的庫

mysqldump -u root -p[密碼] --all-databases > /備份路徑/備份文件名.sql
例:

mysqldump -u root -p --all-databases > /opt/all.sql 

#使用“-d”選項,說明只保存數(shù)據(jù)庫的表結(jié)構(gòu)

#不使用“-d”選項,說明表數(shù)據(jù)也進行備份

2.4 查看備份文件

grep -v “^–” /opt/bbc_test1.sql | grep -v “^/” | grep -v “^$”

2.5 開啟服務

systemctl start mysqld 

2.6 恢復數(shù)據(jù)庫

mysql -u root -p -e 'drop database bbc;'
#“-e”選項,用于指定連接 MySQL 后執(zhí)行的命令,命令執(zhí)行完后自動退出
mysql -u root -p -e 'SHOW DATABASES;'
 
mysql -u root -p < /opt/bbc.sql
mysql -u root -p -e 'SHOW DATABASES;'

2.7 恢復數(shù)據(jù)表

當備份文件中只包含表的備份,而不包含創(chuàng)建的庫的語句時,執(zhí)行導入操作時必須指定庫名,且目標庫必須存在。

mysqldump -u root -p bbc test1 > /opt/bbc_test1.sql
 
mysql -u root -p -e 'drop table bbc.test1;'
mysql -u root -p -e 'show tables from bbc;'
 
mysql -u root -p bbc < /opt/bbc_test1.sql
mysql -u root -p -e 'show tables from bbc;'

七、MySQL 增量備份與恢復

1、MySQL 增量備份

1.1、開啟二進制日志功能

vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED   指定二進制日志(binlog)的記錄格式為 MIXED
server-id = 1  

#二進制日志(binlog)有3種不同的記錄格式:STATEMENT(基于SQL語句)、ROW(基于行)、MIXED(混合模式),默認格式是STATEMENT

只要重啟服務就會生成二進制文件

systemctl restart mysqld
ls -l /usr/local/mysql/data/mysql-bin.*  

1.2、可每周對數(shù)據(jù)庫或表進行完全備份

mysqldump -u root -p bbc test1 > /opt/bbc_test1_$(date +%F).sql
mysqldump -u root -p --all-databases> /opt/all_$(date +%F).sql

1.3、可每天進行增量備份操作,生成新的二進制日志文件(例如 mysql-bin.000002)

mysqladmin -u root -p flush-logs

1.4、插入新數(shù)據(jù),以模擬數(shù)據(jù)的增加或變更

use bbc;
insert into test1 values(4,‘nancy’,‘女’,23);
insert into test1 values(5,‘jack’,‘男’,26);

1.5、再次生成新的二進制日志文件(例如 mysql-bin.000003)

mysqladmin -u root -p flush-logs 

1.6、查看二進制日志文件的內(nèi)容

cp /usr/local/mysql/data/mysql-bin.000002 /opt/
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002  

#–base64-output=decode-rows:使用64位編碼機制去解碼并按行讀取
#-v:顯示詳細內(nèi)容

2、MySQL 增量恢復

2.1.一般恢復

(1)模擬丟失更改的數(shù)據(jù)的恢復步驟

use bbc;
delete from test1 where id=4;
delete from test1 where id=5;
 
mysqlbinlog --no-defaults /opt/mysql-bin.000005 | mysql -u root -p

(2)模擬丟失所有數(shù)據(jù)的恢復步驟

use bbc;
drop table test1;
 
mysql -u root -p bbc < /opt/bbc_test1_2021-8-31.sql
mysqlbinlog --no-defaults /opt/mysql-bin.000005| mysql -u root -p


2.2.斷點恢復

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000009 #查看二進制日志文件
例:

BEGIN
/*!*/;
# at 831104   #斷點
#210831 11:19:18 server id 1  end_log_pos 831220 CRC32 0xa8f834ba   Query   thread_id=55    exec_time=0 error_code=0 #時間
SET TIMESTAMP=1630379958/*!*/;
insert into test1 values(4,'nancy',20,'女') #插入數(shù)據(jù)
/*!*/;
# at 831220
#210831 11:19:18 server id 1  end_log_pos 831251 CRC32 0xe3304ac7   Xid = 1393
COMMIT/*!*/;
 
BEGIN
/*!*/;
# at 831393
#210831 11:19:41 server id 1  end_log_pos 831508 CRC32 0x54ef1c18   Query   thread_id=55    exec_time=0 error_code=0
SET TIMESTAMP=1630379981/*!*/;
insert into test1 values(5,'jack',23,'男')
/*!*/;
# at 831508
#210831 11:19:41 server id 1  end_log_pos 831539 CRC32 0x0284ebb0   Xid = 1394
COMMIT/*!*/;
 
BEGIN
/*!*/;
# at 831681
#210831 11:20:05 server id 1  end_log_pos 831796 CRC32 0x3a5b528d   Query   thread_id=55    exec_time=0 error_code=0
SET TIMESTAMP=1630380005/*!*/;
insert into test1 values(6,'lucy',21,'女')
/*!*/;
# at 831796
#210831 11:20:05 server id 1  end_log_pos 831827 CRC32 0xe10e3da2   Xid = 1395
COMMIT/*!*/;  

(1)基于位置恢復

#僅恢復到操作 ID 為“4”之前的數(shù)據(jù),即不恢復“5”的數(shù)據(jù)
mysqlbinlog --no-defaults --stop-position='831393' /opt/mysql-bin.00009 | mysql -uroot -p

#僅恢復“6”的數(shù)據(jù),跳過“5”的數(shù)據(jù)恢復
mysqlbinlog --no-defaults --start-position='831681' /opt/mysql-bin.000009 | mysql -uroot -p

(2)基于時間點恢復

#僅恢復到 11∶19∶41 之前的數(shù)據(jù),即不恢復“5”的數(shù)據(jù)
mysqlbinlog --no-defaults --stop-datetime='2021-08-31 11:19:41'/opt/mysql-bin.000009 |mysql -uroot -p

#僅恢復“6”的數(shù)據(jù),跳過“5”的數(shù)據(jù)恢復
mysqlbinlog --no-defaults--start-datetime='2021-08-31 11:20:05' /opt/mysql-bin.000009 |mysql -uroot -p

加粗樣式

以上就是MySQL日志管理和備份與恢復的詳細內(nèi)容,更多關于MySQL日志管理備份與恢復的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解mysql中的concat相關函數(shù)

    詳解mysql中的concat相關函數(shù)

    這篇文章主要介紹了mysql中的concat相關函數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Centos MySQL 5.7安裝、升級教程

    Centos MySQL 5.7安裝、升級教程

    這篇文章主要為大家詳細介紹了Centos MySQL 5.7安裝、升級教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL語句之刪除指令deleted和truncate在使用中的異同詳解

    MySQL語句之刪除指令deleted和truncate在使用中的異同詳解

    這篇文章主要介紹了MySQL語句之刪除指令deleted和truncate在使用中的異同,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 使用mysqladmin檢測MySQL運行狀態(tài)的教程

    使用mysqladmin檢測MySQL運行狀態(tài)的教程

    這篇文章主要介紹了使用mysqladmin檢測MySQL運行狀態(tài)的教程,包括mysqladmin工具簡單的awk使用,需要的朋友可以參考下
    2015-06-06
  • MySQL之權(quán)限以及設計數(shù)據(jù)庫案例講解

    MySQL之權(quán)限以及設計數(shù)據(jù)庫案例講解

    這篇文章主要介紹了MySQL之權(quán)限以及設計數(shù)據(jù)庫案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Mysql忘記密碼解決方法

    Mysql忘記密碼解決方法

    這篇文章主要給大家風向的是Mysql忘記密碼解決方法,我們忘記mysql密碼時,我們可以通過mysql的配置文件設置登錄不需要認證就可以不需要密碼進行登錄了,下面我們就進入文章學習具體的解決方法吧
    2022-02-02
  • MySQL不區(qū)分大小寫配置方法

    MySQL不區(qū)分大小寫配置方法

    MySQL 表內(nèi)數(shù)據(jù)條件查詢不區(qū)分大小寫是因為排序規(guī)則的問題,本文主要介紹了MySQL不區(qū)分大小寫配置方法,對大家的學習或者工作有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2024-01-01
  • MySQL數(shù)據(jù)庫配置信息查看與修改方法詳解

    MySQL數(shù)據(jù)庫配置信息查看與修改方法詳解

    我們通常把在項目中使用的常量收集在一個文件,這個文件就是配置文件,下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫配置信息查看與修改的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 一文帶你學會Mysql表批量添加字段

    一文帶你學會Mysql表批量添加字段

    本文主要介紹了MySQL表如何批量添加字段的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Linux安裝Mysql8.0.20并配置主從復制(一主一從,雙主雙從)

    Linux安裝Mysql8.0.20并配置主從復制(一主一從,雙主雙從)

    本文主要介紹了Linux安裝Mysql8.0.20并配置主從復制,包含一主一從和雙主雙從,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06

最新評論