linux数据库备份 LINUX下如何直接对MYSQL数据库进行备份
大家好,今天小编来为大家解答linux数据库备份这个问题,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系统上怎样备份oracle数据库
步骤以下:1、编写备份数据库的shell
1、创建保存shell文件的文件夹,2、文件内容为:#!/bin/sh
PATH=$PATH:$HOME/bin
export
PATH
ORACLE_BASE=/u01/app/oracle
export
ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export
ORACLE_HOME
ORACLE_SID=HRDB
export
ORACLE_SID
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
export
PATH
exp
fact/fact
file=/backup/fact`date
+%y%m%d`.dmp
log=/backup/factlog`date
+%y%m%d`.log
shell文件编写终了1、运行以上的shell文件看是不是能生成备份的.dmp文件,如果能则表示shell文件编写成功
2、然后在此shell文件的所在终端输入命令,将此文件授权让root用户可以履行:
3、命令为:chmod
+x
backup.sh
4、然后到root终端编写定时备份的语句5、语句为:crontab
–e
6、输入i
7、输入10
17
,,,/home/backupscript/backup.sh
8、按下esc建,输入:wq
退出并保存便可。
LINUX下如何直接对MYSQL数据库进行备份
用命令实现备份 MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份。
按提示输入密码,这就把tm数据库所有的表结构和# mysqldump-u root-p tm> tm_050519.sql数据备份到tm_050519.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:
# mysqldump-u root-p tm| gzip> tm_050519.sql.gz
系统崩溃,重建系统时,可以这样恢复数据:
# mysqldump-u root-p tm< tm_050519.sql
从压缩文件直接恢复:
#gzip< tm_050519.sql.gz| mysqldump-u root-p tm
当然,有很多MySQL工具提供更直观的备份恢复功能,比如用phpMyAdmin就很方便。但我认为,mysqldump是最基本、最通用的。
二、利用crontab,系统每天定时备份mysql数据库
利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。
1、创建保存备份文件的路径/var/backup/mysqlbak
# mkdir-p/var/backup/mysqlbak
2、创建/usr/sbin/bakmysql文件
#vi/usr/sbin/bakmysql.sh
#!/bin/bash
# mysql备份脚本
cd/var/backup/mysqlbak/
dateDIR=`date+"%y-%m-%d"`
mkdir-p$dateDIR/data for 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/mysqldump-uroot-plin31415926$i|
gzip>/var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gz
done
3、修改文件属性,使其可执行
# chmod+x/usr/sbin/bakmysql
4、修改/etc/crontab
# crontab-e
在下面添加
01 3*** root/usr/sbin/bakmysql
#表示每天3点钟执行备份
这样每天就可以在/var/backup/mysqlbak下看到备份的sql文件了!LINUX下如何直接对MYSQL数据库进行备份
标签:
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数据库备份和LINUX下如何直接对MYSQL数据库进行备份的问题到这里结束啦,希望可以解决您的问题哈!