Linux下mysql数据库备份方法

时间:2016-09-26 20:10:01 

通过mysql提供的功能

导出

命令:

mysqldump -u 用户名 -p 数据库 > 数据库.sql

示例:

代码如下 复制代码

mysqldump -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为是。

copytoftp=1

ftpserver=XXXXX

ftpuser=XXXXX

ftppasswd=XXXXX

#-------------------以下参数

fileprefix=dcradiusdump

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

mysqldump -u$dbuser -h$dbserver $dbopt $dbname >$dumpfilename

else

mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname >$dumpfilename

fi

tar czvf $backupdir$newfile $dumpfilename >>$logfile 2>&1

echo "$backupdir$newfile Backup Success!" >>$logfile

rm -fr $dumpfilename

if [ $copytoftp = 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 passwordnot set, Copy to Ftp Failed ..." >>$logfile

exit 3

else

echo "Start copy to Ftp server ...." >> $logfile

ftp -n>$logfile

fi

看不过瘾?点击下面链接!
本站微信公众号:gsjx365,天天有好故事感动你!

相关电脑知识

美图欣赏

电脑知识排行榜