linux中利用mysqlhotcopy备份数据脚本示例

mysqlhotcopy只是简单的缓存写入和文件复制的过程,占用资源和备份速度比mysqldump快很多很多。特别适合大的数据库,但需要注意的是:mysqlhotcopy只支持MyISAM 引擎

1.安装perl

 代码如下 复制代码

#yum -y install perl perl-DBI

使用mysqlhotcopy需要安装perl支持,因为mysqlhotcopy是perl写的

2.安装DBD-mysql

 代码如下 复制代码

#wget http://www.fcbu.com/upimages/soft/DBD-mysql-4.020.tar.gz
 代码如下 复制代码

#tar xzvf DBD-mysql-4.020.tar.gz
 代码如下 复制代码

#cd DBD-mysql-4.020
 代码如下 复制代码

#perl Makefile.PL --mysql_config=mysql_config
 代码如下 复制代码

#make
 代码如下 复制代码

#make install

3.备份示例

 代码如下 复制代码

#mysqlhotcopy -u root -p 密码 --addtodest 数据库名1 数据库名2 备份目录

4.恢复

停止mysql服务,复制备份的数据库目录到相应的mysql数据目录下,用chown更改目录所有者为mysql服务器运行的用户,启动mysql服务

5.执行perl Makefile.PL --mysql_config=mysql_config编译的时候如果出现如下错误:

Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 20.
BEGIN failed--compilation aborted at Makefile.PL line 20.

解决方法:

 代码如下 复制代码

#yum -y install perl-ExtUtils-MakeMaker
如果还是不行就用下面两条:
#yum -y install perl-ExtUtils-MakeMaker*
#yum -y install perl-Time-HiRes*

6.mysqldump和mysqlhotcopy备份shell脚本示例,mysqlbackup.sh

 

 代码如下 复制代码

#!/bin/bash

# Enviroment
PATH=/usr/local/sbin:/usr/bin:/bin

# Configure The Directory of Backup
BACKUPDIR=/data/backup/mysql # mysql backup dir
SAVE=4 #how many days to save lastest
HOST=192.168.10.32 # mysql host
ROOT=root # mysql account
ROOTPASS='XXXXXX' # mysql root password
DUMPLIST='mysql database1 database2 database3' # backup with mysqldump
HOTCOPYLIST='database4' # backup with mysqlhotcopy

# define
SQLDIR=$BACKUPDIR/sql/ # mysqldump to sql save path
HOTCOPYDIR=$BACKUPDIR/hotcopy/ # mysqlhotcopy copy files path
TMPDIR=$BACKUPDIR/tmp # temporary dir
DATETIME=`date -d now +%Y-%m-%d_%H-%M` # create date dir

# Create Directory
if [ ! -d $SQLDIR ]; then
  mkdir -p $SQLDIR
fi

if [ ! -d $HOTCOPYDIR ]; then
  mkdir -p $HOTCOPYDIR
fi

rm -rf $TMPDIR
mkdir -p $TMPDIR

# ----- Backup MySQL -----

# Backup with Database
for dbname in $DUMPLIST
do
    mysqldump -h$HOST -u$ROOT -p$ROOTPASS $dbname > $TMPDIR/$dbname.sql
done

for dbname in $HOTCOPYLIST
do
   mysqlhotcopy -u $ROOT -p $ROOTPASS $dbname $TMPDIR
done

# move hotcopy dir
cd $HOTCOPYDIR
mkdir -p $DATETIME
cd $DATETIME
for dbname in $HOTCOPYLIST
do
   mv ../../tmp/$dbname ./
done

# create MySQL tar
cd $SQLDIR
tar -czf $SQLDIR/mysql_backup.$DATETIME.tar.gz ../tmp
rm -fr $TMPDIR
find $SQLDIR -type f -mtime +$SAVE | xargs rm -f
find $HOTCOPYDIR -type d -mtime +$SAVE | xargs rm -rf

时间: 2024-11-06 07:14:01

linux中利用mysqlhotcopy备份数据脚本示例的相关文章

linux中FTP自动备份VPS脚本

  服务器多了,网站也越来越多,总觉得不整个备份心里放不下心,并且有好几次rm的操作失误,造成难以挽回的损失.并且大多数的VPS提供商是不提供自动备份功能或者此功能收费价格略高.所以自己还是有必要把这个工作落实一下,说不定哪天就用到了. 使用的备份空间我自己是用的是Godaddy的Online Storage,优点在于,我的VPS都是美国服务商,选用Godaddy的空间传输速度比较有保证,另外最关键的价格也能接受,100G空间一年下来不到30美金,鉴于目前美金对人民币的汇率,这个价格我觉得已经相

linux中mysql命令方式备份数据的问题

这几天公司新出了个组件化的项目,里面需要用到mysql数据库相关的技术,由于之前一直用的mongodb,所以mysql几乎忘光了,于是只能在linux虚拟机中重新开始学习. 基本的增删改查还好,但是在数据备份的上遇到了一些问题,好在一番尝试之后终于成功. Mysql的api以及网上说的备份命令是:mysqldump  -uroot –p 要备份的数据库名> 目标路径/目标文件名.sql,于是我就照着敲了一遍,但是结果报了一个2002的异常(补充:一开始用这个命令的时候是提示找不到mysqldum

linux中vsftpd虚拟用户配置脚本示例

每次新安装服务器后,都要进行一系列的配置,安装软件,修改配置等,为了今后更好的部署vsftpd,特此写了个脚本用于部署 登录FTP有三种方式,匿名登录.本地用户登录和虚拟用户登录. 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous. 本地用户登录:使用系统用户登录,在/etc/passwd中. 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器. FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的

服务器-请问如何在linux中利用springmv提供一个树结构的数据

问题描述 请问如何在linux中利用springmv提供一个树结构的数据 利用该数据完成一个jquery树插件,要求树的数据在服务器端提供缓存功能!

linux下简单的备份的脚本 2 【转】

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4577034    之前写过 linux下简单的备份的脚本 , 最开始一直用着, 后来觉得有必要改进下它了, 不管是从操作方式上还是工作方式上.有这样的想法是因为一次备份引起的. 我经历过磁盘损坏的痛苦, 花了1500元才勉强将数据拯救回来, 于是导致我对备份要求更加高了, 我期望尽量每周备份, 期望备份的目的地是当前系统的完整镜像,也就是说我能够

嵌入式linux中设置开机运行shell脚本的问题

问题描述 嵌入式linux中设置开机运行shell脚本的问题 想写一个设置静态ip的开机自运行的shell脚本,然后百度说放在rc.local什么的文件里,然后我的板子里/etc 下根本没有这个文件,请大神们指点我应该怎么办? /etc 下只有fstab hosts host.conf group init.d inittab ld.so.conf mdev.conf profile passwd resolv.conf services 解决方案 输入命令 vi /etc/network/in

Linux中利用两个现存文件,生成一个新的文件

Linux中利用两个现存文件,生成一个新的文件的方法 前提条件:每个文件中不得有重复行 1. 取出两个文件的并集(重复的行只保留一份) cat file1 file2 | sort | uniq 2. 取出两个文件的交集(只留下同时存在于两个文件中的文件) cat file1 file2 | sort | uniq -d 3. 删除交集,留下其他的行 cat file1 file2 | sort | uniq –u

Linux中利用Rsync+Inotify-tools实现数据实时同步备份

说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.111cn.net目录实时同步到目标服务器的/home/www.111cn.net下 具体操作: 第一部分:分别在两台目标服务器192.168.21.127,192.168.21.128上操作 一.分别在两台在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config

linux中mysql自动备份脚本

其实这个mysql自动备份的小脚本非常简单,下面是这个小脚本的步骤.  代码如下 复制代码 #cd /www #mkdir mysqlbackup #vi mysqlautobackup.sh 这个mysqlautobackup.sh的文件里写入以下内容:  代码如下 复制代码 filename=`date +%Y%m%d` mysql_bin_dir/mysqldump --opt datename -u dateuser -pdatepassword | gzip > /www/mysqlb