mysql自動備份linux
方法/步驟
1. 在根目錄下新建定時備份存儲文件夾mkdir /mysql_backup
2.新建備份的腳本vim /root/mysql_backup.sh
3.在mysql_backup.sh中輸入內容:
backupdir=/mysqlbackup time=` date +%Y%m%d%H`mysqlmp -uroot -proot abc | gzip > $backupdir/abc$time.sql.gzfind $backupdir -name 「abc*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1
——————————————————————————————
說明:
backupdir = 備份文件存儲文件夾time = 獲取當前時間 年月日時(2014111417)2014年11月14日17點mysqlmp 備份資料庫指令 abc要備份的資料庫find $backupdir -name 「abc*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1 刪除5天前的備份文件
3 :wq 文件保存成功後
先按一下鍵盤上的 " esc " 然後輸入 」 :wq 「
執行一下腳本,看根目錄下的mysql_backup文件夾是否有.sql.gz後綴名的文件
./mysql_backup.sh
寫入每天的定時任務 修改 /etc/crontabvi /etc/crontab
按鍵盤上的"i",開始輸入
02 4 * * * root /root/mysql_backup.sh
表示每天4點2分執行備份任務
先按一下鍵盤上的 " esc " 然後輸入 」 :wq 「 表示保存
重新啟動crond
service crond restart 或 /etc/rc.d/init.d/crond restart
❷ Linux下mysql資料庫備份方法
通過mysql提供的功能
導出
命令:
mysqlmp -u 用戶名 -p 資料庫 資料庫.sql
示例:
代碼如下 復制代碼
mysqlmp -u root -p db1 db1.sql(將資料庫db1備份到db1.sql中)
提示輸入密碼,完成即可。
導入
需要先創建一個空資料庫
mysql -u root -p(輸入密碼後進入mysql)
create database db1;(創建一個名為db1的資料庫)
exit(退出mysql)
命令:
mysql -u 用戶名 -p 資料庫 資料庫.sql
示例:
代碼如下 復制代碼
mysql -u root -p db1 db1.sql(從備份文件db1.sql中導入數據到資料庫db1中)
提示輸入密碼,完成即可。
通過拷貝文件
如果資料庫特別大,可以使用拷貝的方式進行備份,不過不同的操作系統間可能會導致不兼容。
導出
進入mysql目錄,打包需要備份的資料庫目錄
示例:
代碼如下 復制代碼
cd /var/lib/mysql(進入mysql目錄)
tar -zcvf db1.tar.gz db1(打包db1目錄,如果提示沒有許可權,在前面加上sudo,提示輸入密碼後即可)
導入
首先創建一個空資料庫,將打包的文件拷貝到mysql目錄後解壓
示例:
代碼如下 復制代碼
mysql -u root -p(輸入密碼後進入mysql)
create database db1;(創建一個名為db1的資料庫)
exit(退出mysql)
cp db1.tar.gz /var/lib/mysql(將打包文件拷貝到mysql目錄下)
cd /var/lib/mysql(進入mysql目錄)
tar -zxvf db1.tar.gz(解壓到當前目錄)
後現在linux中腳本
代碼如下 復制代碼
#!/bin/bash
#Mysql autobackup shell#write by tuspark.cn
#-------------------資料庫相關的用戶名、密碼、需要備份的資料庫名、備份目錄等
dbuser=root
dbpasswd=XXXXX
dbserver=localhost
dbname=XXXXX
dbopt=--opt
backupdir=/dcbackup/
#-------------------是否開啟ftp遠程備份,0為否,1為是。
toftp=1
ftpserver=XXXXX
ftpuser=XXXXX
ftppasswd=XXXXX
#-------------------以下參數
fileprefix=dcradiusmp
filename=$backupdir`date +%F`.sql
newfile=$fileprefix-`date +%F`.tar.gz
keepdays=10
#-------------------以下為備份時的日誌
logfile=/var/log/mysqlbackup.log
logtmp=/var/log/mybackup.tmp
#===============================================
if [ ! -d $backupdir ]
then
echo "$backupdir is not exist, then make ..." $logfile
mkdir -p $backupdir
fi
echo "start===================================="$logfile
echo "Beginning backup `date '+%F %T'`" $logfile
echo "Delete $keepdays days ago files ..." $logfile
find $backupdir -name $fileprefix* -mtime +$keepdays -fls $logtmp -exec rm {} ;
echo "Deleted Backup file is :"$logfile
cat $logtmp $logfile
echo "Delete old file Success!" $logfile
if [ -f $backupdir$newfile ]
then
echo "$newfile backup exist, backup stop ..." $logfile
else
if [ -z $dbpasswd ]
then
mysqlmp -u$dbuser -h$dbserver $dbopt $dbname $mpfilename
else
mysqlmp -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname $mpfilename
fi
tar czvf $backupdir$newfile $mpfilename $logfile 21
echo "$backupdir$newfile Backup Success!" $logfile
rm -fr $mpfilename
if [ $toftp = 1 ]; then
if [ -z $ftpserver ];then
echo "Ftp Server not set,Copy to Ftp Failed ..." $logfile
exit 1
elif [ -z $ftpuser ];then
echo "Ftp user not set, Copy to Ftp Failed ..." $logfile
exit 2
elif [ -z $ftppasswd ]; then
echo "Ftp password not set, Copy to Ftp Failed ..." $logfile
exit 3
else
echo "Start to Ftp server ...." $logfile
ftp -n$logfile
fi
❸ linux下如何備份還原mysql資料庫_MySQL
本文介紹了linux下如何備份與恢復mysql資料庫。
資料庫備份是非常重要的。如果定期做好備份,這樣就可以在發生系統崩潰時恢復數據到最後一次正常的狀態,把損失減小到最少。
一、用命令實現備份
MySQLl提供了一個mysqlmp命令,我們可以用它進行數據備份。
按提示輸入密碼,這就把tm資料庫所有的表結構和# mysqlmp -u root -p tm > tm_050519.sql數據備份到tm_050519.sql了,因為要總進行備份工作,如果數據量大會佔用很大空間,這時可以利用gzip壓縮數據,命令如下:
# mysqlmp -u root -p tm | gzip > tm_050519.sql.gz系統崩潰,重建系統時,可以這樣恢復數據:
# mysqlmp -u root -p tm < tm_050519.sql從壓縮文件直接恢復:
#gzip < tm_050519.sql.gz | mysqlmp -u root -p tm當然,有很多MySQL工具提供更直觀的備份恢復功能,比如用phpMyAdmin就很方便。但我認為,mysqlmp是最基本、最通用的。
二、利用crontab,系統每天定時備份mysql資料庫
利用系統crontab來定時執行備份文件,按日期對備份結果進行保存,達到備份的目的。
1、創建保存備份文件的路徑/var/backup/mysqlbak
# mkdir -p /var/backup/mysqlbak2、創建/usr/sbin/bakmysql文件
#vi /usr/sbin/bakmysql.sh
#!/bin/bash# mysql備份腳本cd /var/backup/mysqlbak/dateDIR=`date +"%y-%m-%d"`mkdir -p $dateDIR/datafor i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e "show databases" | grep -v "Database" | grep -v "information_schema"`do /usr/local/www/mysql/bin/mysqlmp -uroot -plin31415926 $i | gzip > /var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gzdone3、修改文件屬性,使其可執行
# chmod +x /usr/sbin/bakmysql4、修改/etc/crontab
# crontab -e在下面添加01 3 * * * root /usr/sbin/bakmysql#表示每天3點鍾執行備份
這樣每天就可以在/var/backup/mysqlbak下看到備份的sql文件 了!
❹ linux系統下,使用mysql的命令mysqlmp備份數據,默認的存
在Linux系統下使用MySQL的備份工具mysqlmp備份資料庫時,首先需了解其命令格式和常用參數。
命令基本格式為:mysqlmp[OPTIONS]database[tables],其中database指明要備份的資料庫名稱,tables表示需要備份的表名。
以下是一些常見錯誤和解決方法:
2.1、提示命令未找到-bash:mysqlmp:未找到命令:這表明系統中並未安裝MySQL或環境變數未配置。執行如下命令sudo apt-get install mysql-client(對於Ubuntu)或sudo yum install mysql-python(對於CentOS)以安裝MySQL客戶端。確保MySQL環境變數已添加至/etc/profile文件中,通常環境變數路徑為/usr/local/mysql/bin。
2.2、:這是MySQL5.6及以上版本的安全提示,表明在命令行界面直接使用密碼存在安全隱患。解決方法是修改MySQL配置文件,增加用戶名和密碼,重啟MySQL資料庫。備份命令可改為mysqlmp --opt -u用戶名 -p密碼 database_name > backup_filename.sql。
2.3、Gotpacketbiggerthan『max_allowed_packet『bytes:這表示MySQL在接收數據包時發現數據包大小超過允許的最大值,通常發生在數據量過大時。解決方法是增加max_allowed_packet參數,修改備份命令為mysqlmp --opt -u用戶名 -p密碼 --max_allowed_packet=512M database_name > backup_filename.sql。
常用的備份命令包括:
mysqlmp --opt -u用戶名 -p密碼 database_name > backup_filename.sql:備份指定資料庫到文件。
mysqlmp --opt -u用戶名 -p密碼 -R database_name > backup_filename.sql:備份包含表結構信息的資料庫。
mysqlmp --opt -u用戶名 -p密碼 --databases > backup_filename.sql:備份所有資料庫。
通過這些方法,可以有效地備份MySQL資料庫,確保數據安全和可用性。