MySQL5 5 資料熱備份

2022-03-12 06:18:07 字數 3881 閱讀 6838

mysqlhotcopy使用lock tables、flush tables和cp或scp來快速備份資料庫.它是備份資料庫或單個表最快的途徑,完全屬於物理備份,但只能執行在資料庫目錄所在的機器上.與mysqldump備份不同,mysqldump屬於邏輯備份,備份時是執行的sql。

mysql5.7已經沒有這個命令了,多用於mysql5.5之前。mysqlhotcopy使用lock tables、flush tables和cp或scp來快速備份資料庫或單個表,屬於裸檔案備份(物理備份),只能用於myisam引擎的資料庫。本質是使用鎖表語句,然後cp或scp。

[root@localhost ~]# yum

install

perl-dbd* -y

或者編譯安裝

[root@localhost~]# cp -arp /opt/sql_back/mysqlname /var/lib/mysql/        --將備份的資料移到mysql資料根目錄

1.新增定時執行。

#每一小時進行mysql的備份

0 * * * * /data/shell/mysql_hotbackup.sh

2. 備份指令碼

#!/bin/bashhost="

192.168.1.128

"user="

root

"password="

root

"backup_parent_dir="

/data/backup/";

backup_dir_name="

mysql_data

"current_dir=$(pwd

)current_day=$(date +%y%m%d%h)

delete_day=$(date -d "

2 days ago

" +%y%m%d)

#這裡面有兩個引數,-a、-n,-a的含義是不去預讀全部資料表資訊,這樣可以解決在資料表很多的時候卡死的問題

#-n,很簡單,don'

t write column names in results,獲取的資料資訊省去列名稱

show_databases_cmd="

mysql -h$ -u$ -p$ --default-character-set=utf8 -n -e \"show databases\"

"db_result=$(eval

"$show_databases_cmd"

)#dump_data=./data.user.txt

#>$dump_data

#echo -e "

$result

" >$dump_data

##這裡要額外注意,

echo -e "

$result

" >$dump_data的時候一定要加上雙引號,不讓匯出的資料會擠在一行

db_name_str=$(echo $ | sed

's/ /,/g

' | sed

's/\n//g

' | sed

's/-/@002d/g')

old_ifs="

$ifs

"ifs=","

db_name_array=($db_name_str)

ifs="

$old_ifs

"echo

"start mysql hot backup......";

echo

""echo

""#進入備份目錄

echo

"cd $";

cd $

#建立myql備份目錄

echo

""echo

"mkdir mysql backup dir: $

"mkdir -p $

#備份資料

echo

""echo

""backup_dir=$(cd "

$/$/

"; pwd

)for db_name in$do

###跳過熱備份

if [ "

$db_name

"x = "

information_schema

"x ] || [ "

$db_name

"x = "

mysql

"x ] || [ "

$db_name

"x = "

performance_schema

"x ]; then

continue

fiecho

"mysqlhotcopy -h $ -u $ -p $ --addtodest $ $";

mysqlhotcopy -h $ -u $ -p $ --addtodest $ $

done

#壓縮備份

echo

""echo

""echo

"current dir:$(pwd)

"echo

""echo

"compress mysql backup data......

"echo

"tar zcf ./mysql_data_$.tar.gz $

"tar zcf "

./mysql_data_$.tar.gz"$

echo

""#刪除之前的備份

delete_file="

./mysql_data_$*.tar.gz

"echo

"delete mysql backup data of two days ago: $

"if [ -d "

$delete_file

"];

then

echo

"不允許刪除目錄

"else

echo

"rm -rf $

"rm -rf $

fi#回到當前目錄

mysql 5 5傳馬 mysql5 5安裝文件

groupadd mysql useradd r g mysql mysql mkdir home mysql mkdir p data mysql chown mysql mysql r data mysql yum install y gcc gcc c libtool autoconf aut...

mysql5 5解除安裝未備份如何恢復?

前提 要求在c programdata mysql 下對應版本的mysql資料夾沒有刪除才行。否則沒辦法。1.開啟c programdata mysql mysql server 5.5將其中的data資料夾複製到其他地方備用 2.刪除mysql server 5.5這個資料夾 4.安裝mysql ...

資料庫 Mysql5 5解除安裝

由於本地版本與公司資料庫版本不一致,需要解除安裝原來的mysql 如果解除安裝不乾淨會導致新安裝mysql會失敗 首先需要停止mysql的服務 管理員執行控制台 輸入 net stop mysql 然後解除安裝mysql,控制面板什麼軟體管家之類的隨意了 c programdata mysql 可能...