首页数据库linux数据库备份 LINUX下如何直接对MYSQL数据库进行备份

linux数据库备份 LINUX下如何直接对MYSQL数据库进行备份

编程之家2023-10-17101次浏览

大家好,今天小编来为大家解答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

只备份一些频繁更新的数据库表:

linux数据库备份 LINUX下如何直接对MYSQL数据库进行备份

##mysqlmpsample_dbarticlescommentslinks

上面的命令会备份articles,comments,和links三个表。

恢复数据使用命令:

#mysql_u-pdb_backup

注意使用这个命令时必须保证数据库正在运行。

2使用SOURCE语法

其实这不是标准的SQL语法,而是mysql客户端提供的功能,例如:

#SOURCE/tmp/db_name.sql;

linux数据库备份 LINUX下如何直接对MYSQL数据库进行备份

这里需要指定文件的绝对路径,并且必须是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数据库进行备份的问题到这里结束啦,希望可以解决您的问题哈!

大象数据库?大象数据库中文错码云主机能干什么,云主机是做什么用的吗