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数据库(基本备份方面没问题了)
前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...
随机推荐
- ASP入门(二十一)- 如何自己获取 ADO 连接字符串
1.新建一个文本文件,并将文件名修改为[ado.udl] 注意 如果不显示扩展名,请在资源管理器的[查看 | 选项]对话框中去掉"隐藏已知文件类型的扩展名"勾就可以了. 2.双击这 ...
- 浮动闭合最佳方案:clearfix
之前给大家介绍两种浮动闭合的办法CSS清除浮动 万能float闭合,得知很多同学都在使用下面的骨灰级解决办法: .clear{clear:both;height:0;overflow:hidden;} ...
- Python代码规范(PEP8)问题及解决
转载:https://blog.csdn.net/Jason_Lewis/article/details/75386598 最近刚刚接触Python,为了养成好习惯,尽量保证自己写的代码符合PEP8代 ...
- Jquery 中的CheckBox、 RadioButton、 DropDownList的取值赋值
1.获取选中值,三种方法都可以: $('input:radio:checked').val(): $("input[type='radio']:checked").val(); $ ...
- linux加入windows域
http://www.redhat.com/rhecm/rest-rhecm/jcr/repository/collaboration/jcr:system/jcr:versionStorage/36 ...
- Fiber Channel SAN Storage
http://www.infotechguyz.com/VMware/FiberChannelSANStorage.html Using Fibre Channel with ESX/ESXi Fib ...
- Zabbix通过Nginx状态来监控网站并发量
一.开 启Nginx状态 一.安装Nginx 执行命令:yum install nginx 二.启动Nginx 执行命令:systemctl start nginx 三.配置Nginx开启Status ...
- Kafka部署与代码实例(转)
来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/det ...
- Android为ViewPager添加切换动画——自己定义ViewPager
转载请注明出处:http://blog.csdn.net/allen315410/article/details/44224517 在上篇博客中,我写了一个使用属性动画为ViewPager加入切换动画 ...
- Ant脚本简介与基础知识
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6624003.html 一:Ant是什么 Ant相当于Linux环境下的shell脚本,只不过是用xml文档来 ...