首页 > 代码库 > mysql 数据迁移
mysql 数据迁移
安装第三方软件XtraBackup对数据做增量备份
XtraBackup介绍:
在线热备份工具,备份过程中不锁库表,
只备份表记录,不备份表结构
表的存储引擎必须是InnoDB/XtraDB
必须先有一次完全备份,这样再执行备份时才知道那些数据是新产生。
安装XtraBackup: perl(DBD::mysql) perl(Time::HiRes) 先安装两个依赖包
rpm -q perl-Time-HiRes
rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm
提供2个备份命令:
xtrabackup:C程序,支持InnoDB/XtraDB
innobackupex:以Perl脚本封装xtrabackup,还支持MyISAM
xtrabackup_56 命令语法格式:
(完全备份 完全恢复 增量备份 增量恢复)
————————————
xtrabackup_56 <选项>
--backup 备份数据
--prepare 恢复数据
--target-dir=目录名 指定备份文件存储的目录
--datadir=/var/lib/mysql 指定数据库目录的位置
--incremental-basedir=目录名 增量备份时,指定上一次备份文件存储的目录
--incremental-dir=目录名 增量恢复数据时,指定使用恢复文件所在的目录
————————————————————————————————————————————————————————
实验操作:(首先对库做一个完全备份,当增加数据时,做一个增量备份序号1,再增加数据,再做一个增量备份2,再增加数据,再做一个增量备3,再增加数据, 完全备份+增量备份)
(恢复:先恢复完全备份,再恢复增量备份,按顺序从最开始的一个一个恢复,这里恢复的是xtrabackup_checkpoints 中所对应的序列号,最后所有恢复完再把备份文件拷贝会对应数据库目录下,重启服务)
【 注意这个只能恢复一次 一次性】
1.先备份:完全备份+增量备份
db1.a 5 -> 999 完全备份
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/allbak
10 -> 301 第1次增量备份
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new1 --incremental-basedir=/allbak
8 -> 801 第2次增量备份
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new2 --incremental-basedir=/new1
3 -> 777 第3次增量备份
xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new3 --incremental-basedir=/new2
2.xtrabackup恢复数据的步骤:
1)准备恢复数据
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak --incremental-dir=/new1
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak --incremental-dir=/new2
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak --incremental-dir=/new3
2) 把备份文件拷贝回对应的数据库目录下
[root@stu ~]# cp /allbak/bbsdb/a.ibd /var/lib/mysql/bbsdb/
cp:是否覆盖"/var/lib/mysql/bbsdb/a.ibd"? y
[root@stu ~]#
3) 重启数据库服务
service mysql restart
4) 查看恢复是否成功
select * from bbsdb.a;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
__________________________________________________________________________
[root@host ~]# cd /var/lib/mysql
[root@host mysql]# ls
auto.cnf ib_logfile0 performance_schema
host.tedu.cn.err ib_logfile1 python
host.tedu.cn.pid mysql RPM_UPGRADE_HISTORY
ibdata1 mysql.sock RPM_UPGRADE_MARKER-LAST
__________________________________________________________________________
事务日志 /var/lib/mysql/
ib_logfile0
ib_logfile1 ---sql命令
idbata1 记录数据信息
xtrabackup_checkpoints lsn序列号对应文件
xtrabackup_logfile 序列号所对应的sql命令文件
备份过程
在增量备份时,如何知道在所有记录中,哪些记录是新产生的
在增量备份时:如何知道有新数据写入,有写入的话也要把新数据备份上
本文出自 “12336621” 博客,请务必保留此出处http://12346621.blog.51cto.com/12336621/1903267
mysql 数据迁移