linux备份mysql数据库,Linux下mysql数据库备份方法
其实linux备份mysql数据库的问题并不复杂,但是又很多的朋友都不太了解Linux下mysql数据库备份方法,因此呢,今天小编就来为大家分享linux备份mysql数据库的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
linux怎么备份数据库(linux如何备份mysql数据库)
一、使用mysql相关命令进行简单的本地备份
1mysqllmp命令
mysqlmp是采用SQL级别的备份机制,它将数据表导成SQL脚本文件,在不同的MySQL版本之间升级时相对比较合适,这也是最常用的备份方法。
使用mysqlmp进行备份非常简单,如果要备份数据库”db_backup”,使用命令:
#mysqlmp_u-pphpbb_db_backup
还可以使用gzip命令对备份文件进行压缩:
#mysqlmpdb_backup|gzip
只备份一些频繁更新的数据库表:
##mysqlmpsample_dbarticlescommentslinks
上面的命令会备份articles,comments,和links三个表。
恢复数据使用命令:
#mysql_u-pdb_backup
注意使用这个命令时必须保证数据库正在运行。
2使用SOURCE语法
其实这不是标准的SQL语法,而是mysql客户端提供的功能,例如:
#SOURCE/tmp/db_name.sql;
这里需要指定文件的绝对路径,并且必须是mysqld运行用户(例如nobody)有权限读取的文件。
3备份
只能用于备份MyISAM,并且只能运行在linux和Unix和NetWare系统上。支持一次性拷贝多个数据库,同时还支持正则表达。以下是几个例子:
#-h=localhost-u=goodcjh-p=goodcjhdb_name/tmp
(把数据库目录db_name拷贝到/tmp下)
注意,想要使用,必须要有SELECT、RELOAD(要执行FLUSHTABLES)权限,并且还必须要能够有读取datadir/db_name目录的权限。
还原数据库方法:
备份出来的是整个数据库目录,使用时可以直接拷贝到mysqld指定的目录(在这里是/usr/local/mysql/data/)目录下即可,同时要注意权限的问题,另外首先应当删除数据库旧副本如下例:
#/bin/rm-rf/mysql-backup/**//*old
关闭mysql服务器、复制文件、查询启动mysql服务器的三个步骤:
#/etc/init.d/mysqldstop
StoppingMySQL:[OK]
#cp-af/mysql-backup/**//*/var/lib/mysql/
#/etc/init.d/mysqldstart
StartingMySQL:[OK]
#chown-Rnobody:nobody/usr/local/mysql/data/(将db_name目录的属主改成mysqld运行用户)
二、使用网络备份
将MYSQL数据放在一台计算机上是不安全的,所以应当把数据备份到局域网中其他Linux计算机中。假设Mysql服务器IP地址是:192.168.1.3。局域网使用Linux的远程计算机IP地址是192.168.1.4;类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。linux系统NFS服务端配置方法如下:
(1)修改/etc/exports,增加共享目录
/export/home/sunky192.168.1.4(rw)
/export/home/sunky1*(rw)
/export/home/sunky2linux-client(rw)
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
Linux自动备份MySQL数据库的实用方法
MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。
◆1、创建备份文件夹
#cd/www
#makedir backup
◆2、编写运行脚本
#vi autobackup
写入以下内容:
filename=`date+%Y%m%d`
mysql_bin_dir/mysqldump _opt dataname-u user-ppassword| gzip
/www/mysqlbackup/name$filename.gz
保存退出
说明:
(1)mysql_bin_dir:mysql的bin路径;
(2)dataname:数据库名;
(3)user:数据库用户名;
(4)password:用户密码;
(5)name:自定义备份文件前缀标识。
如上例,将自动备份mysql数据库,并以gzip压缩方式存储,文件名为name20080101.gz的形式。
◆3、为脚本添加执行权限
#chmod+x autobackup
◆4、让crontab来完成定期执行的任务
这一步中,Redhat的方法会不一样,后面专门给出。
编辑crontab:
#vi/etc/crontab
在最后一行中加入:
01 5*** root/www/autobackup
每天5点运行脚本,也可以修改5为其他指定时间。
Redhat方法:
Redhat的crontab采用按时间调用4个目录(/etc/cron.hourly:每小时;/etc/cron.daily:每天;/etc/cron.weekly:每周;/etc/cron.monthly:每月)中脚本出来运行的方式。
Redhat中只需要将刚才编辑的脚本复制到相应的目录即可。
◆5、重启crontab
#/etc/rc.d/init.d/crond restart
完成。
关于linux备份mysql数据库到此分享完毕,希望能帮助到您。