Linux下mysql数据库备份方法

如题所述

通过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 21
   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 password not set, Copy to Ftp Failed ..." $logfile
   exit 3
   else
   echo "Start copy to Ftp server ...." $logfile
   ftp -n$logfile
   fi
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜