MySQL資料庫 mysqldump方式備份恢復

2022-03-19 01:07:23 字數 3840 閱讀 8424

等等,諸如此類。

我遇到的情況不一樣,在此總結一下,希望能幫到和我一樣遇到這樣困擾的同行。

本人不是專業的mysql dba,資料庫管理純屬兼職。:)

mysqldump備份出來的結果大體有兩種,一種是sql檔案,另外一種是gz檔案(本質上也是sql,只不過備份後用gzip進行了壓縮處理),但是恢復方式卻不太相同,這裡記錄一下。

使用mysqldump匯出sql檔案,再使用tar命令進行壓縮後存放的。

備份命令:

mysqldump -u root -p confluence > /opt/confluence.sql

tar confluence.sql.tar.gz confluence.sql

這類檔案的恢復方法按道理說很簡單,無非是解壓後,恢復到資料庫中

tar xzf confluence.sql.tar

.gz# 登入mysql資料庫

mysql -u root -p

# 建立資料庫:

mysql>create database confluence default character set utf8 collate utf8_bin;

# 匯入資料

use confluence;

source confluence.sql

至此恢復完成。

當然也可以不登入mysql資料庫恢復資料到指定資料庫中

mysql -uroot -p confluence < /opt/confluence.sql
但是有人非要使用如下方法恢復資料,這就會出現文章開頭提到的錯誤。很多人可能和筆者一樣,一臉懵逼。

~]# gunzip

< confluence.tar.gz |mysql -uroot -p confluence

enter password:

error: ascii '\0

if ascii '

\0' is expected. query: '

confluence.sql

'.

我開始也遇到了這個問題,不得不說筆者這個mysql菜鳥還不是一般的菜。希望讀者你沒有遇到。:)

遇到問題並不可怕,只要有鑽研精神,把問題分析透徹,了解清楚就行了。

使用mysqldump備份資料庫時,直接用管道符號交給gzip進行壓縮儲存。

備份命令:

mysqldump -hlocalhost -uroot -p confluence | gzip > /opt/confluence-`date +%y-%m-%d`.sql.gz
恢復方法有二

1、使用gunzip命令直接恢復壓縮檔案,命令如下:

gunzip

< confluence-2020-09-28.sql.gz | mysql -uroot -p confluence

# 解壓檔案

gunzip confluence-2020-09-28

.sql.gz

# 恢復到資料庫

mysql -uroot -p confluence < confluence-2020-09-28.sql

#!/bin/bash

# mysql_backup.sh: backup mysql databases and keep newest 7 days backup.

# # $ is mysql username

# $ is mysql password

# $ is mysql host

# —————————–

#/root/mysql_backup.sh

# everyday 3:00 am execute database backup

# 0 3 * * * /root/mysql_backup.sh

#/etc/cron.daily

db_user="root"

db_password="nmm#t87to2jl&zq2"

db_host="localhost"

sock_file=/tmp/mysql.sock

# the directory for story your backup file. #

backup_dir="/opt/backup/mysql/"

# 要備份的資料庫名 #

#all_db="$($ -u $ -h $ -p$ -bse 'show databases')" #

all_db="confluence apolloportal apolloconfig17"

# 要保留的備份天數 #

backup_day=7

#資料庫備份日誌檔案儲存的路徑

logfile="/var/log/mysql_backup.log"

# local ip address

local_ip="$(hostname -i)"

# date format for backup file (dd-mm-yyyy) #

time="$(date +"%y-%m-%d")"

# mysql, $ and some other bin's path #

mysql="/ichint/mysql/bin/mysql"

mysqldump="/ichint/mysql/bin/mysqldump"

# the directory for story the newest backup #

test ! -d $ && mkdir -p $

#備份資料庫函式#

mysql_backup()

dobackname=$.$

dumpfile=$$

#將備份的時間、資料庫名存入日誌

echo "------"$(date +'%y-%m-%d %t')" beginning database "$" backup--------" >>$

$ -f -u$ -p$ -s $sock_file $ > $.sql 2>>$ 2>&1

#$ --login-path=my3306 $ > $.sql 2>>$ 2>&1

#開始將壓縮資料日誌寫入log

echo $(date +'%y-%m-%d %t')" beginning zip $.sql" >>$

#將備份資料庫檔案庫壓成zip檔案,並刪除先前的sql檔案. #

tar -czf $.tar.gz $.sql 2>&1 && rm $.sql 2>>$ 2>&1

#將壓縮後的檔名存入日誌。

echo "backup file name:"$".tar.gz" >>$

echo -e "-------"$(date +'%y-%m-%d %t')" ending database "$" backup-------\n" >>$

done

}delete_old_backup()

# 刪除舊的備份 查詢出當前目錄下七天前生成的檔案,並將之刪除

find $ -type f -mtime +$ | tee delete_list.log | xargs rm -rf

cat delete_list.log >>$

}#進入資料庫備份檔案目錄

cd $

mysql_backup

delete_old_backup

echo -e "********** mysql backup done at "$(date +'%y-%m-%d %t')" **********\n\n">>$

#cat $

如果希望用第二種備份方式,自行修改下備份函式中的備份命令即可。

MySQL資料的匯出和匯入 mysqldump

ysql環境變數設定,將 mysql home 下的mysql server 5.1 bin放到path下。mysql的mysqldump工具,基本用法是 shell mysqldump options database tables 通過執行mysqldump help,得到當前mysqldump...

mysql資料庫效能資料 MYSQL資料庫效能優化

1.選取最適用的字段屬性 表中字段的寬度設得盡可能小 char 的上限為 255 位元組 固定占用空間 varchar 的上限 65535 位元組 實際占用空間 text 的上限為 65535。盡量把字段設定為 not null,執行查詢的時候,資料庫不用去比較 null 值。2.使用連線 join...

MySQL資料庫使用 MySQL資料庫管理

開發時一般不使用系統的root使用者,應該是建立乙個新的使用者,管理乙個工程。登入使用者的命令 mysql uusername p 登入完成後就進入sql命令格式,格式以 結尾。windows用安裝的時候設定的root登入命令列,如下圖所示。linux安裝時若沒有提示設定root密碼的,可以使用系統...