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数据库(基本备份方面没问题了)
前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...
随机推荐
- [Jade] Piped text
Another way to add plain text to templates is to prefix a line with a pipe character (|). This metho ...
- background-size中contain和cover中的数学公式
background-size的contain和cover是怎么用的,大家应该都明白.但是里面也有一些有趣的数学关系. 基本概念 上面就是我们对于 rimage (图片宽高比).rviewport ( ...
- 使用visual studio code调试php代码
这回使用visual studio code折腾php代码的调试,又是一顿折腾,无论如何都进不了断点.好在就要放弃使用visual studio code工具的时候,折腾好了,汗~ 这里把步骤记录下来 ...
- 高效率、简洁、CSS代码优化原则
高效率.简洁.CSS代码优化原则 CSS学起来并不难,但在大型项目中,一个团队中不同的人在书写CSS风格上也有不同这样这个项目就变得难以管理,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CS ...
- 如何进入docker容器
http://blog.csdn.net/u010397369/article/details/41045251
- MongoDB高可用架构:Replica Sets+Sharding
MongoDB的sharding解决了海量存储和动态扩容的问题.但是遇到单点故障就显得无能为力了.MongoDB的副本集可以很好的解决单点故障的问题.所以就有了Sharding+Replica Set ...
- jquery append()方法与html()方法使用方法差别
append(content):方法在被选元素的结尾(仍然在内部)插入指定内容,有非常多朋友认为append与html差点儿相同.其他从英文意义上append是在原有基础上添加,而html中是替换当前 ...
- CentOS卸载Oracle 11gR2(x64)
环境 OS: CentOS 7.4; hosts: L134; IP: 192.168.1.134 Oracle安装文件目录:/opt/oracle_install ORACLE_BASE:/data ...
- java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1 ...
- Docker安装和常用命令
Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...