mysql数据库热备份
使用Percona XtraBackup
先安装依赖包
yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio*
到Percona官网下载Percona XtraBackup,安装
然后执行热备份,官网有详细教程:http://www.percona.com/doc/percona-xtrabackup/2.1/howtos/setting_up_replication.html
最后面的参数是备份的目录;
#使用默认的 /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 password
function getDbPass()
{
RET=`cat $DB_PASS_FILE`
echo $RET
}
DB_PASS=$(getDbPass) cd $BACKUP_HOME
# partial backup
function partial_backup(){
innobackupex --defaults-file=$DB_CONFIG \
--user=$DB_USER --password=$DB_PASS \
--databases=/xxx/dump.tables \
$BACKUP_HOME
YEAR=`date +"%Y"`
timestamp=`ls |grep |head -n ` #得到时间戳名字 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 backup
function full_backup(){
innobackupex --defaults-file=$DB_CONFIG \
--user=$DB_USER --password=$DB_PASS \
$BACKUP_HOME
timestamp=`ls |grep |head -n ` #得到时间戳名字
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 backup
function incremental_backup(){
timestamp=`ls |grep |head -n ` #得到时间戳名字
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
mysql数据库热备份的更多相关文章
- mysql 数据库热备份
https://www.percona.com/doc/percona-xtrabackup/2.2/index.html
- Xtrabackup全量备份与恢复mysql数据库
一.Xtrabackup简单概述: Percona Xtrabackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同 ...
- MySQL数据库双机热备份
MySQL数据库双机热备份 1.mysql 数据库没有增量备份的机制 当数据量太大的时候备份是一个很大的问题.还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备 ...
- MySQL数据库的热备份和冷备份
冷备份(off, 慢, 时间点上恢复)冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库.冷备份是将关键性文件拷贝到另外位置的一种说法.对于备份数据库信息而言,冷备份是最 ...
- [转]MySQL数据库的热备份
一.系统环境描述: 1.两台数据库服务器,A和B: 2.当前A正在使用,将作为主服务器,B为准备用来做备用数据库服务器: 3.要进行热备份的数据库中含有类型为MyISAM ...
- MySQL 数据库通过日志恢复
http://blog.csdn.net/hanxin1987216/article/details/5976856 要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名.一般可以从选 ...
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- Centos下mysql数据库备份与恢复的方法
一.mysqldump工具备份 mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于InnoDB的热备份.但由于是逻辑备份,所以速度不是很快,适合备份 ...
- 学会4种备份MySQL数据库(基本备份方面没问题了)
前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...
随机推荐
- 微信、支付宝App支付-JPay0.0.2发布
JPay 对微信App支付.支付宝App支付的二次封装,对外提供一个相对简单的接口以及支付结果的回调 GitHub:https://github.com/Javen205/JPay OsChina:h ...
- C++ 容器元素的存储和获取
1.存储对象,存储的是对象的副本,并不是原对象.2.获取对象,获取的是对象的引用,为什么要这样设计?a.存储对象只发生一次,而获取对象往往会有多次,获取对象,如果每次都返回对象的副本,这个开销很大.b ...
- MySQL常用处理方法
1.replace into replace into t(id, update_time) values(1, now());或 replace into t(id, update_time) se ...
- Jquery——hover与toggle
hover方法的语法结构为:hover(enter,leave) hover()当鼠标移动到元素上时,会触发第一个方法,当鼠标移开的时候会触发第二个方法 复制代码 <html> <h ...
- JPA的配置文件
一.引入包 <dependencies> <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistenc ...
- from flask.ext.wtf import Form导入报错
问题来源: 在学习Flask网上教程(PS:中文版教程链接,英文版教程其中代码是对的,运行没错误,我为了看的快一些,所以就直接看的中文版>~<,英文版教程链接)时,使用如下代码: from ...
- python xlsxwriter写excel并操作各种格式属性
# -*- coding: utf-8 -*- import xlsxwriter workbook = xlsxwriter.Workbook('test.xlsx') worksheet = wo ...
- merge-two-sorted-lists合并链表
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- Centos 6下安装Oracle 11gR2
一.安装环境 CentOS release 6.7 (Final) Oracle Database 11g Release 2 二.安装前准备 #修改主机名 修改/etc/sysconfig/netw ...
- log4j2的xml的配置样例
log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status ...