您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

使用mysqlhotcopy备份MySQL_MySQL

2024/4/14 16:11:06发布15次查看
我以前备份都使用mysqldump,导成文本文件便于存放,但是速度很慢的。最快的备份方法当然是直接把数据目录copy一份了。但是一般来说,都要关闭 mysql的服务才能做,不然在你copy的时候刚好还有人读写表那麻烦就大了。这次朋友介绍我使用mysqlhotcopy。就相当于上面,不过他可以热备份.他备份非常快,我测试一个2.8g的mysql他备份的时间在3分钟内完成.
    下面是它的介绍.
    mysqlhotcopy是一个perl脚本,最初由tim bunce编写并提供。它使用lock tables、flush tables和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机器上。mysqlhotcopy只用于备份myisam。它运行在unix和netware中
    使用方法见下面的脚本.加入crotab中吧.
    #!/bin/sh
    # name:mysqlbackup.sh
    # ps:mysql database backup,use mysqlhotcopy script.
    # last modify:2008-06-12
    # 定义变量,请根据具体情况修改
    # 定义脚本所在目录
    scriptsdir=`pwd`
    # 数据库的数据目录
    datadir=/var/lib/mysql
    # 数据备份目录
    tmpbackupdir=/tmp/mysqlblackup
    backupdir=/backup/mysql
    # 用来备份数据库的用户名和密码
    mysqluser=root
    mysqlpwd='you password'
    # 如果临时备份目录存在,清空它,如果不存在则创建它
    if [[ -e $tmpbackupdir ]]; then
    rm -rf $tmpbackupdir/*
    else
    mkdir $tmpbackupdir
    fi
    # 如果备份目录不存在则创建它
    if [[ ! -e $backupdir ]];then
    mkdir $backupdir
    fi
    # 得到数据库备份列表,在此可以过滤不想备份的数据库
    for databases in `find $datadir -type d | \
    sed -e s/\/var\/lib\/mysql\/// | \
    sed -e s/test//`; do
    if [[ $databases == ]]; then
    continue
    else
    # 备份数据库
    /usr/bin/mysqlhotcopy --user=$mysqluser --password=$mysqlpwd -q $databases $tmpbackupdir
    datetime=`date +%y.%m.%d %h:%m:%s`
    echo $datetime database:$databases backup success! >>mysqlbackup.log
    fi
    done
    # 压缩备份文件
    date=`date -i`
    cd $tmpbackupdir
    tar czf $backupdir/mysql-$date.tar.gz ./
    #end完成
    加入到crontab中设置每周5运行
    0 0 * * 5 /backup/blackup.sh
    注意:恢复数据库到备份时的状态
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product