mysql单机热备份_mysql数据库热备份

使用Percona XtraBackup

先安装依赖包

yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio*

最后面的参数是备份的目录;

#使用默认的 /etc/my.cnf 配置文件

innobackupex --user=xxx --password=xxx  /home/data/bak_mysql/

由于我们使用的是单机多实例,所以配置文件里面修改了[mysqld]项,xtrabackup无法正确识别datadir,所以复制了一份,使用原来单数据库的格式,将默认的数据库datadir改为我们的主数据库datadir

#自定义配置文件

innobackupex --user=xxx --password=xxx --defaults-file=/home/data/xtrabackup.my.cnf /home/data/bak_mysql/

innobackupex备份速度非常快,完成后会显示:innobackupex: completed OK!

--apply-log操作

innobackupex --user=yourDBuser --password=xxx--apply-log /path/to/backupdir/$TIMESTAMP/

这一步会将ibdata1与ib_logfile0,ib_logfile1的log sequence number对应起来,否则可能会出现表空间和事务日志不一致的情况,

InnoDB: Error: page xxx log sequence number xxx InnoDB: is in the future! Current system log sequence number xxx.

虽然数据库有重建innodb日志的功能,但是,还是避免的好...

下面可以直接用这个备份来做一个Mysql_multi的单机多实例,并且,不需要关闭原来的mysql;

将备份的目录$DATETIME目录改名为mysql2,

mv /home/data/bak_mysql/xxx /home/data/mysql2

chown -R mysql.mysql /home/data/mysql2

cp /etc/my.cnf /home/data/my.cnf

vim /home/data/my.cnf

#修改my.cnf,改为 多实例,参考mysqld_multi --example输出的例子;

启动新增的实例;

mysqld_multi --defaults-file=/home/data/my.cnf start 2

附上一些代码:

#!/bin/bash

DB_CONFIG=/data2/data/xtrabackup.my.cnf

DB_USER=xxx

DB_PASS_FILE='/etc/db/'$DB_USER

BACKUP_HOME=/data2/data

# get database passwordfunctiongetDbPass()

{

RET=`cat$DB_PASS_FILE`echo$RET

}

DB_PASS=$(getDbPass)

cd $BACKUP_HOME

# partial backupfunctionpartial_backup(){

innobackupex--defaults-file=$DB_CONFIG \--user=$DB_USER --password=$DB_PASS \--databases=/xxx/dump.tables \

$BACKUP_HOME

YEAR=`date +"%Y"`

timestamp=`ls |grep 2014 |head -n 1` #得到时间戳名字

innobackupex--user=$DB_USER -password=$DB_PASS --apply-log --export $BACKUP_HOME/$timestamp/

chown -R mysql.mysql $BACKUP_HOME/$timestamp/}

#full backup , can be used as a slave , or base backupfunctionfull_backup(){

innobackupex--defaults-file=$DB_CONFIG \--user=$DB_USER --password=$DB_PASS \

$BACKUP_HOME

timestamp=`ls |grep 2014 |head -n 1` #得到时间戳名字

innobackupex--defaults-file=$DB_CONFIG --user=$DB_USER --password=$DB_PASS --apply-log $BACKUP_HOME/$timestamp/

chown -R mysql.mysql $BACKUP_HOME/$timestamp/}

#incremental backup , can be used as a slave , or base backupfunctionincremental_backup(){

timestamp=`ls |grep 2014 |head -n 1` #得到时间戳名字

INCREMENTAL_BASE_DIR=/data2/data/mysql3/BACKUP_DIR=/data2/data/backups/innobackupex--user=$DB_USER --password=$DB_PASS \--incremental $BACKUP_DIR \--incremental-basedir=$INCREMENTAL_BASE_DIR

#同样可以使用LSN来进行增量备份

#innobackupex--incremental $BACKUP_DIR --incremental-lsn=XXX

}

full_backup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值