首页数据库linux备份mysql数据库,Linux下mysql数据库备份方法

linux备份mysql数据库,Linux下mysql数据库备份方法

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

其实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

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

linux备份mysql数据库,Linux下mysql数据库备份方法

##mysqlmpsample_dbarticlescommentslinks

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

恢复数据使用命令:

#mysql_u-pdb_backup

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

2使用SOURCE语法

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

#SOURCE/tmp/db_name.sql;

linux备份mysql数据库,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下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数据库到此分享完毕,希望能帮助到您。

电脑主机怎样拆开?电脑主机后盖怎么拆开域名查ip地址(如何查看一个域名所对应的IP地址)