首頁 Mysql教程常用的MySQL備份/還原 的方法

常用的MySQL備份/還原 的方法

運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

mysql備份數據庫

mysql備份單個數據庫

#mysql備份某個庫格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” –database 數據庫名 > 文件名.sql

#實例:mysql備份某個庫:
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –single-transaction –master-data=2 –set-gtid-purged=OFF –database -B db_mystorage > mysqldump_db_mystorage_`date +%Y%m%d-%H%M`.sql

mysql備份多個數據庫

#mysql備份某個庫格式:
mysqldump -h主機名 -P端口 -u用戶名 -p"密碼" --database 數據庫名1 數據庫名2 數據庫名3 > 文件名.sql

#實例:mysql備份某個庫:
mysqldump -h10.*.*.9 -P3306 -uroot -p"密碼" --single-transaction --master-data=2 --set-gtid-purged=OFF --database -B db_mystorage db_myblogs db_myOA > mysqldump_db_mystorage_db_myblogs_db_myOA_`date +%Y%m%d-%H%M`.sql

mysql備份所有的庫

#mysql備份所有的庫格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” –all-databases > 文件名.sql

#實例:mysql備份所有的庫:
mysqldump -h10.*.*.9 -P3306 -u用戶名 -p”密碼” –single-transaction –master-data=2 –set-gtid-purged=OFF –all-databases > mysqldump_all_databases_`date +%Y%m%d-%H%M`.sql

注意:如上命令?-A?或者?--all-databases?是備份該用戶名擁有的全部數據庫。

mysql備份特定表

#mysql備份某個庫格式:
mysqldump -h主機名 -P端口 -u用戶名 -p"密碼" 數據庫名 表名 > 文件名.sql

#實例:備份db_plus_core庫中的tb_doc_permission表
mysqldump -h10.*.*.9 -P3306 -uroot -p"密碼" --single-transaction --master-data=2 --set-gtid-purged=OFF db_plus_core tb_doc_permission > mysqldump_tb_doc_permission_`date +%Y%m%d-%H%M`.sql

mysql備份特定多個表

#mysql備份某個庫格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” 數據庫名 表名1 表名2 > 文件名.sql

#實例:備份db_plus_core庫中的tb_doc_permission表
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –single-transaction –master-data=2 –set-gtid-purged=OFF db_plus_core tb_1 tb_2 > mysqldump_tb_1_tb_2_`date +%Y%m%d-%H%M`.sql

備份命令的 -B 參數

執行備份語句的時候,其中可以加上很多的參數,用來添加一些備份的時候的特殊要求的,其中有一個-B參數。執行備份語句時,如果加上了-B參數,那么將來再執行數據還原的時候,就不需要自己到數據庫里面去先創建一個目標庫了,并且執行數據還原語句的時候也不需要指定目標庫了。如果沒有加-B參數,就需要自行到數據庫中先創建一個目標庫,并且執行恢復語句時要指定將數據恢復到目標庫。

原因是-B參數導出的文件中自帶創建數據庫和連接數據庫的功能:(使用-B參數備份出來的內容自帶create database 庫名和use 庫名的功能)。

備份命令的 | gzip 管道符

【壓縮備份】:實際生產上導出的數據有可能比較大,不好備份到遠程,這時候就需要進行壓縮。
mysql壓縮備份:

#mysql壓縮備份格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” –database 數據庫名 | gzip > 文件名.sql.gz

#實例一:mysql壓縮備份
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –single-transaction –master-data=2 –set-gtid-purged=OFF –database db_plus_core | gzip > mysqldump_db_plus_core_`date +%Y%m%d-%H%M`.sql.gz

#實例二:mysql壓縮備份全部數據庫:
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –single-transaction –master-data=2 –all-databases | gzip > mysqldump_alldatabases_`%Y%m%d-%H%M`.sql.gz

#實例三:如果mysql開了GTID模式就要用這個命令
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –single-transaction –master-data=2 –set-gtid-purged=OFF –all-databases | gzip > mysqldump_alldatabases_`%Y%m%d-%H%M`.sql.gz

mysql備份數據帶出刪除數據庫或者表的sql備份

備份時,可以帶出刪除庫的參數--add-drop-database,帶出刪除表的參數--add-drop-table

#格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” –add-drop-table –add-drop-database 數據庫名 > 文件名.sql
#示例:
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –add-drop-table –add-drop-database cmdb > /data/backup/mysqldump_cmdb_`%Y%m%d-%H%M`.sql

僅備份數據庫結構,不包含數據

有時候我們僅僅只想備份出環境,數據庫/表/字段結構,可以加命令參數--no-data

#格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” –no-data 數據庫名1 數據庫名2 > 文件名.sql
#示例:
mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –no-data db1 db2 > /data/backup/mysqldump_no_data_db1_db2_`%Y%m%d-%H%M`.sql

mysqldump恢復數據備份

#格式:
mysqldump -h主機名 -P端口 -u用戶名 -p”密碼” –no-data 數據庫名1 數據庫名2 > 文件名.sql

#示例:還原db_plus_core庫中的tb_doc_permission表的備份
mysqldump -uroot -p”密碼” db_plus_core < mysqldump_20180114_tb_doc_permission.sql

#示例:還原所有的庫(保底操作,按需執行)
mysqldump -uroot -p”密碼” < mysqldump_20240114_all_databases.sql

通過mysql默認的終端執行恢復命令

【通過source命令恢復數據庫】
進入mysql數據庫控制臺,mysql -uroot -p3306登陸后
    mysql>use 數據庫;
    然后使用source命令,后面參數為腳本文件(如這里用到的是.sql文件,如果你備份的是.txt文件,那這里寫.txt文件)

    mysql>source crm2.sql #這個文件是系統路徑下的,默認是登陸mysql前的系統路徑,在mysql中查看系統路徑的方法是通過system+系統命令來搞的
    mysql>system ls

【利用mysql命名恢復(標準)】
如下:

mysql -root -p3306 -e "use crm2;drop table student;show tables;"?必須是雙引號
mysql -uroot -p3306 crm2<f:\數據庫備份練習\crm2.sql
mysql -uroot -p3306 -e "use crm2;show tables;"

注:如果sql文件里面沒有use db這樣的字樣時,在導入時就要指定數據庫名了。

mysql -uroot -p3306 crm2<.sql文件

建議備份數據庫時都指定上-B參數,效果好。

說明:mysql不光可以恢復mysqldump的備份,只要文件中是sql語句,都可以通過mysql命令執行到數據庫中
mysql 帶?-e?參數實現非交互式對話,就是不需要到mysql里面去,在外面執行里面的指令的方法,例如:

mysql -uroot -p3306 -e "use crm2;show tables;",但是語句必須是雙引號包裹。

詳情參考鏈接:https://www.cnblogs.com/yanghongtao/p/10897282.html

Mysql備份表及部分數據

有時候我們只需要備份某個表里面的部分數據,快速恢復關鍵業務。
【原理】:使用 like 命令快速復制一個表(結構一模一樣),將要備份的部分數據查詢出來備份到新表里面,使用完了以后再恢復回去。

#示例:
mysql -h10.*.*.9 -P3306 -uroot -p”密碼”
use db_mystorage;
#step1:拷貝一份新的表結構
create table tb_staff_bak like tb_staff;
#step2:將要備份的部分數據查詢出來備份到新表里面
insert into tb_staff_bk select * from tb_staff where name in (‘xiong’,’zhang’);
#step3:清理目標數據
delete from tb_staff where name in (‘xiong’,’zhang’);

#回滾與恢復:
insert into tb_staff select * from tb_staff_bk;

drop table tb_staff_bk;

實例:mysql自動備份腳本

備份方式:通過mysqldump的方式備份數據庫,并保留7天備份數據。

#!/bin/bash
backupdir=/data/mysqlbak #備份文件存放路徑
time=`date +%Y%m%d-%H%M` #備份文件名稱時間標記

mysqldump -h10.*.*.9 -P3306 -uroot -p”密碼” –all-databases –single-transaction –default-character-set=utf8 |gzip > $backupdir/mysql$time.sql.gz #備份所有數據庫并打包

find $backupdir -name “mysql*.sql.gz” -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1 #刪除7天之外的備份文件

創建備份目錄
mkdir -pv /data/mysqlbak

給備份腳本授權
chmod +x /data/mysqlbak/mysqlbak.sh

添加計劃任務
crontab -e
00 3 * * * /data/mysqlbak/bakmysql.sh

【恢復使用】
解壓
gzip -d mysql2020703.sql.gz

非壓縮備份文件恢復:
mysql -u用戶名 -p < mysql2020703.sql

從壓縮文件直接恢復:
gzip < mysql22020703.sql.gz | mysql -u 用戶名 -p

鏈接:https://www.cnblogs.com/xiongzaiqiren/p/17965612/mysqldump

(版權歸原作者所有,侵刪)

常用的MySQL備份/還原 的方法插圖
常用的MySQL備份/還原 的方法插圖1

需要完整資料的看這里

掃碼回復666 根據提示 添加小助理領取

5 萬字 160道MySQL經典面試題總結(2024修訂版)插圖3

本文鏈接:http://www.thecarconnectin.com/46157.html

網友評論comments

發表回復

您的電子郵箱地址不會被公開。

暫無評論

Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
掃二維碼
掃二維碼
返回頂部
国产曰批视频免费观看完|久久久一本精品99久久精品66直播|色天使色偷偷AV一区二区三区|国产色秀视频在线播放|亚洲欧洲免费三级网站