日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL数据库的mysqldump完全备份、binlog的增量备份与还原

發(fā)布時間:2023/12/10 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL数据库的mysqldump完全备份、binlog的增量备份与还原 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL數(shù)據(jù)庫的mysqldump完全備份、binlog的增量備份與還原

一、 備份的目的:

做災難性恢復:對損壞的書籍進行恢復和還原

需求改變:因需求改變而需要把數(shù)據(jù)還原到改變以前

二、 備份需要考慮的問題:

可以容忍丟失多長時間的數(shù)據(jù);(數(shù)據(jù)不能百分百全部恢復)

恢復數(shù)據(jù)要在多長時間內完成;

恢復的時候是否需要持續(xù)提供服務;

恢復的對象:是整個庫、多個表,還是單個庫、單個表。

備份的數(shù)據(jù)庫大小不超過50G

三、 按照備份時對數(shù)據(jù)庫的影響范圍分類:

hot backup :指在數(shù)據(jù)庫運行中直接備份,對正在運行的數(shù)據(jù)庫沒有任何影響;稱為 在線備份(Online

Backup) (備份的同時,業(yè)務不受影響)

cold backup:指在數(shù)據(jù)庫停止的情況下進行備份;稱為 離線備份(Offline

Backup) (需要關mysql服務,讀寫請求均不允許狀態(tài)下進行)

warm backup:同樣在數(shù)據(jù)庫運行時進行備份,但僅支持讀請求,不允許寫請求;例如:加一個讀鎖以保證備份數(shù)據(jù)的一致性 (服務在線,但僅支持讀請求,不允許寫請求)

四、 按照備份后文件內容分類:

邏輯備份:指備份后的文件內容是可讀的,通常為文本文件,內容一般是SQL語句,或者是表內的實際數(shù)據(jù);適用于數(shù)據(jù)庫的升級和遷移,回復時間較長

物理文件備份:對數(shù)據(jù)庫物理文件(如數(shù)據(jù)文件、日志文件等)的備份;恢復時間較短

支持熱備份與冷備份

五、 按照備份數(shù)據(jù)庫的內容分類:

完全備份:每次對數(shù)據(jù)進行完整的備份(備份的是數(shù)據(jù)庫中的全部數(shù)據(jù)),包含用戶表、系統(tǒng)表、索引、視圖和存儲過程等,但需要花費更多的時間和存儲空間。

差異備份:在上一次完全備份原有的基礎上,對更新的數(shù)據(jù)進行備份(對上一次完整備份后更新的數(shù)據(jù))

增量備份:在上次備份的基礎上,對更新的數(shù)據(jù)進行備份

日志備份:二進制日志備份

注:建議的備份策略

完全備份 + 增量備份 + 二進制日志

完全備份 + 差異備份 + 二進制日志

六、 邏輯備份工具 mysqldump:

mysqldump屬于單線程(備份時間較長),通過tcp協(xié)議連接到mysql數(shù)據(jù)庫,將數(shù)據(jù)轉換成標準的SQL語句

優(yōu)點:

備份“粒”度靈活;既可以針對整個MySQL服務,也可以只備份某個或者某幾個DB,或者還可以指定只備份某個或者某幾個表對象,甚至可以實現(xiàn)只備份表中某些符合條件的記錄(-w, --where: 只導出符合條件的記錄)。

缺點:

a) 當數(shù)據(jù)是浮點數(shù)時,會出現(xiàn)精度丟失。

b) Mysqldump的備份過程屬于邏輯備份,備份速度、恢復速度與物理備份工具相比較慢,而且mysqldump備份的過程是串行化的,不會并行的進行備份,當數(shù)據(jù)量較大時,一般不會使用mysqldump進行備份,因為效率較低。只適合備份50G以下的數(shù)據(jù)

mysqldump對innodb存儲引擎支持熱備

mysqldump對myisam存儲引擎只支持溫備

七、 導出數(shù)據(jù)的語法及選項:

語法:mysqldump [options] [db_name [tbl_name …]]>導出的文件名.sql

語法:mysqldump 選項 庫名.表名(一個或多個) >導出的文件名.sql

常用的參數(shù):

-?, --help: 顯示幫助信息,英文的;

-u, --user: 指定連接的用戶名;

-p, --password: 指定用戶的密碼,可以交互輸入密碼;

-S , --socket: 指定socket文件連接,本地登錄才會使用。

-h, --host: 指定連接的服務器名稱或者IP。

-P, --port=: 連接數(shù)據(jù)庫監(jiān)聽的端口。

–default-character-set:

設置字符集,默認是UTF8。

-A,–all-databases:

導出所有數(shù)據(jù)庫。不過默認情況下是不會導出information_schema系統(tǒng)數(shù)據(jù)庫。

-B, --databases:

導出指定的某個/或者某幾個數(shù)據(jù)庫,參數(shù)后面所有名字都被看作數(shù)據(jù)庫名,用空格隔開,包含CREATE DATABASE創(chuàng)建庫的語句。

–tables: 導出指定表對象,參數(shù)格式為“庫名

表名”,默認該參數(shù)將覆蓋-B參數(shù)。

-w, --where: 只導出符合條件的記錄。

-l, --lock-tables:

默認參數(shù),鎖定讀取的表對象,想導出一致性備份的話最好使用該參數(shù),但會導致無法對表執(zhí)行寫入操作。

–single-transaction:

該選項在導出數(shù)據(jù)之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數(shù)據(jù)庫的一致性狀態(tài)。它只適用于innoDB存儲引擎。

在InnoDB導出時會建立一致性快照,在保證導出數(shù)據(jù)的一致性前提下,又不會堵塞其他會話的讀寫操作。指定這個參數(shù)后,其他連接不能執(zhí)行ALTER TABLE、DROP TABLE 、RENAME TABLE、TRUNCATE TABLE這類語句,事務的隔離級別無法控制DDL語句。本選項和–lock-tables 選項是互斥的,使用參數(shù)–single-transaction會自動關閉該選項。

-d, --no-data: 只導出表結構,不導出表數(shù)據(jù)。

-t, --no-create-info: 只導出數(shù)據(jù),而不添加CREATE TABLE

語句。

-f, --force: 即使遇到SQL錯誤,也繼續(xù)執(zhí)行。

-F, --flush-logs: 在執(zhí)行導出前先刷新二進制日志文件,一般來說,如果是全庫導出,建議先刷新日志文件,否則就不用了。

-x, --lock-all-tables: 在導出任務執(zhí)行期間鎖定所有數(shù)據(jù)庫中的所有表,以保證數(shù)據(jù)的一致性。這是一個全局鎖定,并且自動關閉–single-transaction 和–lock-tables 選項。這個參數(shù)副作用比較大,這是全庫鎖定,備份執(zhí)行過程中,該庫無法進行讀寫操作,不是所有業(yè)務場景都能接受的。請慎用。(讀寫操作無法執(zhí)行)

-n, --no-create-db: 不生成建庫的語句CREATE DATABASE … IF EXISTS,即使指定—all-databases或–databases這類參數(shù)。

–triggers: 導出表的觸發(fā)器腳本,默認就是啟用狀態(tài)。使用–skip-triggers禁用它。

-R, --outines: 導出存儲過程以及自定義函數(shù)

導出數(shù)據(jù):

A:導出所有數(shù)據(jù)庫

mysql -u用戶名

-p密碼 -A>導出的文件名.sql

#mysqldump -uroot -p123456 -A >all.sql

#mysqldump -uroot -p123456 --all-databases >all2.sql

參數(shù)-A代表所有,等同于—all-databases

B:導出某個數(shù)據(jù)庫

mysqldump

-u 用戶名 -p 數(shù)據(jù)庫名 > 導出的文件名.sql

#mysqldump -uroot -p123456 book >book.sql

#vim book.sql

C:導出單張表

#mysqldump -uroot -p123456 book books >books.sql #導出book庫books表

D:導出庫的表結構

#mysqldump -uroot -p123456 -d book>booktable.sql #只導出book庫的表結構

E:只導出數(shù)據(jù)

#mysqldump -uroot -p123456 -t book>bookdata.sql #只導出book庫中的數(shù)據(jù)

F:導出數(shù)據(jù)庫,并自動生成庫的創(chuàng)建語句

#mysqldump -uroot -p123456 -B book2 >book2.sql

#mysql -uroot -p123456 < book2.sql 導入不用指定數(shù)據(jù)名

導入數(shù)據(jù):

A:導入所有數(shù)據(jù)庫

#mysql -uroot -p123456 <all.sql

B:導入數(shù)據(jù)庫

#mysql -uroot -p123456 book <book.sql #如果導入時,沒有對應的數(shù)據(jù)庫,需要你手動創(chuàng)建一下:mysql> create database book;

使用source導入

mysql> create database book;

mysql> use book;

mysql> source /root/book.sql

c:導入表

mysql> drop table books;

mysql> source /root/books.sql;

##導入表時,不需要重新,創(chuàng)建表。要先進到相應的數(shù)據(jù)庫中

mysql> select * from books;

D:導入表結構和數(shù)據(jù)

mysql> create database book;

#mysql -uroot -p123456 book<booktable.sql

#mysql -uroot -p123456 book<bookdata.sql

八、 二進制日志:Binary Log & Binary Log Index

mysql的二進制日志記錄著數(shù)據(jù)庫的所有增、刪、改等操作日志(前提是要在自己的服務器上開啟binlog),還包括了這些操作的執(zhí)行時間。

2.binlog的用途:

1):主從同步

2):恢復數(shù)據(jù)庫

執(zhí)行mysql> show

variables like ‘log_bin%’;查看binlog是否開啟

Off表示mysql當前binlog功能沒有開啟。

mysql>

flush logs; 刷新日志

filename.index 存放binlog的日志清單文件

開啟binary

log功能:

修改/etc/my.cnf配置文件使二進制文件生效,添加如下內容:

log-bin=/data/mysql/log/mysql_bin

(二進制日志文件存放路徑)

server-id=1

重啟Mysql服務,使配置文件修改生效

[root@localhost log]# systemctl

restart mysqld

九、 binlog的附加選項參數(shù):

1、“max-binlog-size”設置binlog 的最大存儲上限,一般設置為512M或1G,一般不能超過1G。

2、“binlog-do-db=db_name”參數(shù)明確告訴MySQL,需要對某個(db_name)數(shù)據(jù)庫記錄binlog,如果有了“binlog-do-db=db_name”參數(shù)的顯式指定,MySQL 會忽略針對其他數(shù)據(jù)庫執(zhí)行的sql query,而僅僅記錄針對指定數(shù)據(jù)庫執(zhí)行的sql query。

3、“binlog-ignore-db=db_name”與“binlog-do-db=db_name”完全相反,它顯式指定忽略某個(db_name)數(shù)據(jù)庫的binlog 記錄,當指定了這個參數(shù)之后,MySQL 會記錄指定數(shù)據(jù)庫以外所有的數(shù)據(jù)庫的binlog。

4、binlog-cache-size :一個事務,在沒有提交(uncommitted)的時候,產生的日志,記錄到Cache中;等到事務提交(committed)的時候,則把日志持久化到磁盤。

十、查看二進制日志:

1、查看binlog日志文件列表:

mysql> show binary logs;

2、查看當前使用的二進制文件及日志文件中事件當前位置:

mysql> show master status;

Binlog_Do_DB:顯示對那個數(shù)據(jù)庫進行增、刪、改操作

3、刪除所有的二進制日志:

mysql>reset master;

restet master:清空index文件中列出的所有二進制日志,并創(chuàng)建一個新的二進制日志文件

4、重新開始一個新的日志文件:

使用flush logs生成新的二進制日志文件,用以保存之后的數(shù)據(jù)庫操作語句的記錄。

mysql> flush logs; 用于生成新的binlog日志文件

5、查看binlog(二進制日志文件)內容命令語法:

查看二進制日志文件語法格式:mysqlbinlog [options] log_file …

mysqlbinlog選項:

-v:顯示簡化的日志內容

-vv:顯示詳細的日志內容

總結

以上是生活随笔為你收集整理的MySQL数据库的mysqldump完全备份、binlog的增量备份与还原的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。