久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

MySQL數(shù)據(jù)備份及還原(一)

 小仙女本仙人 2022-04-06

關(guān)于刪庫(kù)跑路的事故現(xiàn)在已經(jīng)屢見(jiàn)不鮮了,,數(shù)據(jù)備份的必要性是企業(yè)數(shù)據(jù)管理極其重要的一項(xiàng)工作,。關(guān)于數(shù)據(jù)備份,、恢復(fù)也有很多場(chǎng)景及方法,,本系列也會(huì)將主要的幾種工具通過(guò)案例進(jìn)行演示,。

本系列將從邏輯備份及恢復(fù)開(kāi)始講起,,邏輯備份的工具主要有mysqldump/mydumper等其中mydumper可以指定多線程工作,,本文介紹的是mysqldump,。

1.  mysqldump 備份

mysqldump是MySQL數(shù)據(jù)庫(kù)自帶的邏輯備份工具,屬于熱備工具,。它的備份結(jié)果是根據(jù)設(shè)置的參數(shù)將數(shù)據(jù)庫(kù)中的信息通過(guò)生成創(chuàng)建庫(kù),、表等對(duì)象以及對(duì)應(yīng)表的insert語(yǔ)句組成。

mysqldump 參數(shù)選項(xiàng)特別多,,可以通過(guò)mysqldump --help 查看對(duì)應(yīng)的參數(shù)及說(shuō)明()

[root@testdb ~]# mysqldump --help
mysqldump  Ver 10.13 Distrib 5.7.25-28, for Linux (x86_64)
Copyright (c) 2009-2019 Percona LLC and/or its affiliates
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

mysqldump常用的選項(xiàng)如下

1.1  備份指定表

mysqldump可以備份指定的單個(gè)表或指定庫(kù)的多個(gè)表,,例如備份testdb庫(kù)的test1表的表結(jié)構(gòu)和數(shù)據(jù)

/* 備份testdb庫(kù)的test1表 */
/usr/local/mysql5.7/bin/mysqldump -uroot -p  --socket=/tmp/mysql.sock   --master-data=2 --default-character-set=utf8   --single-transaction  testdb  test1 > test1.sql

備份后的文件主體部分如下:

 主要參數(shù)說(shuō)明:

 --master-data=2          記錄當(dāng)前binlog信息,有1和2兩個(gè)值,如果值等于1,,就會(huì)添加一個(gè)CHANGE MASTER語(yǔ)句;如果值等于2,,也會(huì)生成一個(gè)CHANGE MASTER,但是語(yǔ)句前添加注釋,,
                  如本例中所示(建議設(shè)置為2),,此信息可以用作后期配置搭建主從同步用 --default-character-set=utf8 設(shè)置字符集,,建議指明字符集 --single-transaction    配合RR隔離級(jí)別使用,用于保證innodb備份數(shù)據(jù)一致性,,且不會(huì)鎖表,,此參數(shù)很重要,生產(chǎn)環(huán)境中一定要設(shè)置該參數(shù) testdb            庫(kù)名 test1             需要備份的表名,,如果需要備份多張表 可以將表名直接羅列在后面 如 test1 test2

1.2.  備份單個(gè)數(shù)據(jù)庫(kù)

mysqldump可以備份指定的數(shù)據(jù)庫(kù),,可以是單個(gè)庫(kù)也可以是多個(gè)庫(kù),先備份單個(gè)庫(kù),,如下

/* 備份整個(gè)testdb庫(kù) */
 /usr/local/mysql5.7/bin/mysqldump -uroot -p  --socket=/tmp/mysql.sock   --master-data=2 --default-character-set=utf8   --single-transaction  testdb  > testdb.sql

結(jié)果如下,,會(huì)將testdb庫(kù)下的所有表的結(jié)構(gòu)和數(shù)據(jù)都備份出來(lái)

1.3  備份多個(gè)庫(kù)

備份多個(gè)數(shù)據(jù)庫(kù)可以用如下命令

/* 備份monitor庫(kù)及testdb庫(kù) */
/usr/local/mysql5.7/bin/mysqldump -uroot -p  --socket=/tmp/mysql.sock   --master-data=2 --default-character-set=utf8   --single-transaction  --databases monitor testdb  > mul_db.sql

結(jié)果中主要信息如下,包含了創(chuàng)建庫(kù)及切換庫(kù)的內(nèi)容

 參數(shù)說(shuō)明(其他參數(shù)之前也說(shuō)明,,此處不再贅述):

--databases     后面填寫(xiě)需要備份的數(shù)據(jù)庫(kù)名即可指定備份對(duì)應(yīng)的庫(kù)

1.4  備份所有的數(shù)據(jù)庫(kù)

如果想備份所有的數(shù)據(jù)庫(kù),,可以使用如下命令:

/*  備份所有數(shù)據(jù)庫(kù) */ 
 /usr/local/mysql5.7/bin/mysqldump -uroot -p  --socket=/tmp/mysql.sock   --master-data=2 --default-character-set=utf8   --single-transaction  --all-databases   > all_db.sql

注: 備份中沒(méi)有information_schema、performance_schema,、sys庫(kù)的信息(MySQL5.7及以上版本)

1.5  其他情況

實(shí)際使用中可能還會(huì)遇到只備份表結(jié)構(gòu),、只備份數(shù)據(jù),需要備份存儲(chǔ)過(guò)程及事件等需求,,相應(yīng)參數(shù)如下:

--no-data        只備份表結(jié)構(gòu),,不包含數(shù)據(jù),可以簡(jiǎn)寫(xiě)為 -d
--no-create-info   只備份數(shù)據(jù),,不備份建表信息,,也可以簡(jiǎn)寫(xiě)為-t
--routines        備份存儲(chǔ)過(guò)程及函數(shù),可以簡(jiǎn)寫(xiě)為 -R
--events         備份事件,可以簡(jiǎn)寫(xiě)為 -E
--triggers       備份觸發(fā)器
--flush-logs      備份完成后切換日志
--flush-privileges  備份完成后刷新權(quán)限
--set-gtid-purged   開(kāi)啟了GTID的庫(kù)需要設(shè)置該參數(shù),,值可以是ON, OFF 或 AUTO
--where           指定條件,,例如每張表導(dǎo)出1000行的記錄或者 導(dǎo)出每張表id<=10的記錄等,可以參考?xì)v史文章查看示例
--skip-add-drop-table 不生成刪除表的語(yǔ)句

1.6  示例腳本

備份全部數(shù)據(jù)庫(kù),,包含觸發(fā)器,、事件、存儲(chǔ)過(guò)程,,同時(shí)刷新日志及權(quán)限的實(shí)例

 /usr/local/mysql5.7/bin/mysqldump -uroot -p  --socket=/tmp/mysql.sock   --master-data=2 --default-character-set=utf8  --routines   --triggers --events --flush-logs --flush-privileges --single-transaction  --all-databases >backup.sql

注意:備份中存在drop表的情況,如果確定需要重建表則保持默認(rèn),,否則保險(xiǎn)起見(jiàn),,添加--skip-add-drop-table 參數(shù)

1.7  說(shuō)點(diǎn)特別的

mysqldump也可以生成平面文件,同時(shí)指定分隔符等,,此情況比較簡(jiǎn)單,,可以自行測(cè)試

1.8  使用場(chǎng)景

mysqldump屬于邏輯備份,使用的主要場(chǎng)景如下:

  • 備份部分庫(kù)或備份部分表
  • 數(shù)據(jù)規(guī)模較小的庫(kù)
  • 有指定條件的備份等

 

 2  模擬誤刪數(shù)據(jù)操作

模擬誤刪除testdb庫(kù)的test1表中的一條記錄

mysql> delete from test1 where name='孫權(quán)';
Query OK, 1 row affected (0.00 sec)

 

3.  恢復(fù)數(shù)據(jù)

通過(guò)mysqldump備份的數(shù)據(jù)還原比較簡(jiǎn)單,,將備份的文件導(dǎo)入數(shù)據(jù)庫(kù)中即可,。

3.1  恢復(fù)test1表

可以使用如下三種方式恢復(fù):

a)  登錄進(jìn)數(shù)據(jù)庫(kù)里用source 命令恢復(fù)

/*  將備份數(shù)據(jù)恢復(fù)至 rec 庫(kù)中 */
mysql> use rec;
Database changed
/*  恢復(fù)數(shù)據(jù)  */
mysql> source test1.sql;

b)  使用 mysql -e 的方式恢復(fù)

/*  此方式等同于第一種 */
[root@testdb ~]#   /usr/local/mysql5.7/bin/mysql --socket=/tmp/mysql.sock --port=3306 -uroot -p -e "use rec ; source  test1.sql;"
Enter password: 

c)  直接 MySQL  導(dǎo)入備份文件的方式

[root@testdb ~]#   /usr/local/mysql5.7/bin/mysql --socket=/tmp/mysql.sock --port=3306 -uroot -p   rec  < test1.sql
Enter password: 

注:

a) 還原命令使用起來(lái)比較方便,,但是實(shí)際生產(chǎn)環(huán)境中還原數(shù)據(jù)時(shí)不建議直接還原至目標(biāo)表里(尤其處理誤刪除恢復(fù)數(shù)據(jù)時(shí)),而是建議先還原至其他實(shí)例或其他庫(kù)里,,確認(rèn)無(wú)誤后再將需要還原的記錄導(dǎo)入至目標(biāo)表里;

b) 要警惕備份文件中是否有刪除庫(kù)或刪表的指令,,否則如果選擇在同一實(shí)例中還原即使選擇了臨時(shí)恢復(fù)的庫(kù),而備份文件里有use db,;及drop table的語(yǔ)句,,則會(huì)將目標(biāo)表全部刪掉。

3.2 恢復(fù)誤刪除的記錄至目標(biāo)表

mysql> insert into  testdb.test1 select * from rec.test1 where  name='孫權(quán)';
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

此時(shí)記錄恢復(fù)至數(shù)據(jù)庫(kù)中了,。

4.  mysqldump的原理

通過(guò)查看備份文件可以看到大致的流程,,也可以通過(guò)開(kāi)啟general log的方式看具體都執(zhí)行哪些SQL。

4.1  查看general log  

先查看配置

 然后開(kāi)啟genera-log

4.2  開(kāi)始備份

我們就用之前的推薦備份腳本進(jìn)行備份

/usr/local/mysql5.7/bin/mysqldump -uroot -p  --socket=/tmp/mysql.sock   --master-data=2 --default-character-set=utf8  --routines   --triggers --events --flush-logs --flush-privileges --single-transaction  --all-databases   > all_db.sql

4.3  關(guān)閉general-log

因開(kāi)啟general-log對(duì)數(shù)據(jù)庫(kù)性能影響大(表現(xiàn)特別明顯),,因此測(cè)試完畢后關(guān)閉general log,。勿忘,切記,。

4.4 查看general-log內(nèi)容

 后面開(kāi)始備份具體庫(kù)的內(nèi)容

備份其他庫(kù)的內(nèi)容與此相同,,省略。

以上內(nèi)容,,如需轉(zhuǎn)載,,請(qǐng)注明出處,謝謝)

 

使用mysqldump工具備份及恢復(fù)數(shù)據(jù)至此就基本介紹完畢了,,如果補(bǔ)充或想獲取原圖的請(qǐng)聯(lián)系我(關(guān)注公眾號(hào): 數(shù)據(jù)庫(kù)干貨鋪),。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多