xtrabackup 备份mysql数据库三: innobackupex 测试一个全量和两个增量的备份恢复测试

## 查看当前库中表的数据
(root@localhost) [test]>select count(*) from t_innodb;
+----------+
| count(*) |
+----------+
|        0 | 
+----------+
1 row in set (0.00 sec)


## 执行插入数据操作,该操作在全备之后执行完成
(root@localhost) [test]>call addTest(100000,0);


## 执行全库备份
#  备份文件夹:2014-06-19_20-53-41
#  backup_type = full-backuped
#  from_lsn = 0
#  to_lsn = 3768612700
#  last_lsn = 3788082769
#  compact = 0
innobackupex --user=bkpuser --password=s3cret --defaults-file=/etc/my.cnf /backup


## 全备备份完成后,等待addTest 执行完成后,检查数据量
(root@localhost) [test]>select count(*) from t_innodb;
+----------+
| count(*) |
+----------+
|   100000 | 
+----------+
1 row in set (0.03 sec)


## 再执行一个增量的备份
#  备份文件夹:2014-06-19_20-59-02
#  backup_type = incremental
#  from_lsn = 3768612700
#  to_lsn = 3837968338
#  last_lsn = 3837968338
#  compact = 0
innobackupex --user=bkpuser --password=s3cret --defaults-file=/etc/my.cnf --incremental --incremental-basedir=/backup/2014-06-19_20-53-41 /backup


## 在库中新建一个表
CREATE TABLE `t_innodb_1` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `password` varchar(150) DEFAULT NULL,
  `userstatus` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Insert into t_innodb_1 select * from t_innodb where id<101;


(root@localhost) [test]>select count(*) from t_innodb_1;
+----------+
| count(*) |
+----------+
|      100 | 
+----------+
1 row in set (0.00 sec)


## 再执行一个增量的备份
#  备份文件夹:2014-06-19_21-05-02
#  backup_type = incrementall
#  from_lsn = 3837968338    
#  to_lsn = 838021951      
#  last_lsn = 3838021951    
#  compact = 0              
innobackupex --user=bkpuser --password=s3cret --defaults-file=/etc/my.cnf --incremental --incremental-basedir=/backup/2014-06-19_20-59-02 /backup


## 二次增量备份完成后,再次插入1000数据
(root@localhost) [test]>call addTest(1000,0);
Query OK, 1 row affected (0.32 sec)


(root@localhost) [test]>select count(*) from t_innodb;
+----------+
| count(*) |
+----------+
|   101000 | 
+----------+
1 row in set (0.03 sec)


## 停止MySQL服务
[mysql@rhel5 data]$ /etc/init.d/mysql stop 
Shutting down MySQL....                                    [  OK  ]


## 移动之前的数据目录
[mysql@rhel5 data]$ mkdir ../bak
[mysql@rhel5 data]$ mv auto.cnf ib* mysql* p* test zabbix/ ../bak


## Prepare 全备,使用--redo-only
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /backup/2014-06-19_20-53-41/


## Prepare 第一个增量,使用--redo-only
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --incremental-dir=/backup/2014-06-19_20-59-02/ /backup/2014-06-19_20-53-41/


## Prepare 第二个增量,最后一个增量不需要--redo-only
innobackupex --defaults-file=/etc/my.cnf --apply-log --incremental-dir=/backup/2014-06-19_21-05-02/ /backup/2014-06-19_20-53-41/


## 针对完整备份,执行一次Restore
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/2014-06-19_20-53-41/


## 启动数据库,检查mysqld-error.log有无异常
[root@rhel5 ~]# /etc/init.d/mysql start
Starting MySQL.                                            [确定]


## 登陆检查数据,发现正常
(root@localhost) [test]>select count(*) from t_innodb_1;
+----------+
| count(*) |
+----------+
|      100 | 
+----------+
1 row in set (0.00 sec)


(root@localhost) [test]>select count(*) from t_innodb;
+----------+
| count(*) |
+----------+
|   100000 | 
+----------+
1 row in set (0.00 sec)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用xtrabackup工具和shell脚本来实现1小时全量备份和每小时增量备份备份策略。下面是一个示例的备份脚本: ```bash #!/bin/bash # 设置备份目录 BACKUP_DIR="/path/to/backup" # 设置MySQL服务器的连接信息 MYSQL_USER="username" MYSQL_PASSWORD="password" # 创建全量备份的函数 function full_backup() { # 创建全量备份目录 FULL_BACKUP_DIR="${BACKUP_DIR}/full" mkdir -p "$FULL_BACKUP_DIR" # 使用xtrabackup工具创建全量备份 innobackupex --user="$MYSQL_USER" --password="$MYSQL_PASSWORD" --no-timestamp "$FULL_BACKUP_DIR" # 删除过期的备份(保留最近24小时的备份) find "$FULL_BACKUP_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +1 -exec rm -rf {} + } # 创建增量备份的函数 function incremental_backup() { # 创建增量备份目录 INCREMENTAL_BACKUP_DIR="${BACKUP_DIR}/incremental/$(date +%Y%m%d%H%M%S)" mkdir -p "$INCREMENTAL_BACKUP_DIR" # 使用xtrabackup工具创建增量备份 innobackupex --user="$MYSQL_USER" --password="$MYSQL_PASSWORD" --no-timestamp --incremental "$INCREMENTAL_BACKUP_DIR" --incremental-basedir="$BACKUP_DIR/full" # 删除过期的备份(保留最近24小时的备份) find "$BACKUP_DIR/incremental" -mindepth 1 -maxdepth 1 -type d -mtime +1 -exec rm -rf {} + } # 执行备份 full_backup incremental_backup ``` 上述脚本会在指定的`BACKUP_DIR`目录下创建全量备份增量备份的子目录,并使用xtrabackup工具进行备份。您可以将脚本保存为`backup.sh`文件,并使用`crontab`设置定时任务,例如每小时执行一次备份: ```bash 0 * * * * /path/to/backup.sh ``` 请注意,使用xtrabackup进行备份需要安装对应的软件包,并确保MySQL服务器的连接信息正确。此外,您可以根据需求调整备份目录、保留备份的时间等参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值