mysql表的备份是InnoDB 类型的,但备份过后,恢复读取不了表。请问如何读取这种类型的。谢谢啊,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql表的备份是InnoDB 类型的,但备份过后,恢复读取不了表。请问如何读取这种类型的。谢谢啊,相关的知识,希望对你有一定的参考价值。

mysql表的备份是InnoDB 类型的,但备份过后,恢复读取不了表。请问如何读取这种类型的。谢谢啊,

innoDB不像myisam表那样直接备份表结构,因为它支持事务,事务id存放在共享表空间里,不同服务器存放不同,所以不能直接备份myisam那样备份,需要一些独特的方法和工具。。。 参考技术A 修复sql和mysql数据库,你可以下载达思sql数据库修复软件看看,很不错。

mysql xtrabackup备份工具使用

工具介绍:
1、xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表, 也不能备份数据表结构;
2、innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。
3、xtrabackup 2.3版本开始innobackupex全部集成到xtrabackup,innobackupex已经被废弃。

1.检查和安装与Perl相关的模块
xtrabackup工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。
依赖包检查命令为:
rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
如果有依赖包确实,可以使用下面的命令安装:
yum -y install perl-DBI
yum -y install perl-DBD-MySQL
yum install perl-Time-HiRes
yum install perl-IO-Socket-SSL


2、安装过程
Warning: Make sure that you have the libev package installed before installing Percona XtraBackup. The libev package is available from the EPEL repositories.

从http://rpmfind.net/linux/rpm2html/search.php上下载 libev-4.03-3.el6.x86_64.rpm安装包,然后安装即可,如下所示


[root@oracle12c /]# rpm -ivh libev-4.03-3.el6.x86_64.rpm

[root@oracle12c /]# rpm -ivh mysql-community-libs-compat-5.7.19-1.el6.x86_64.rpm

[root@oracle12c /]# rpm -ivh perl-DBD-MySQL-4.022-1.el6.rfx.x86_64.rpm

[root@oracle12c /]# rpm -ivh percona-xtrabackup-80-8.0.6-1.el6.x86_64.rpm
检查安装
[root@oracle12c /]# rpm -qa |grep xtrabackup
percona-xtrabackup-80-8.0.6-1.el6.x86_64

 

3、备份过程:
全备:
xtrabackup --backup --password=123456 --target-dir=/mysql/backups/base/
增量:
xtrabackup --backup --password=123456 --target-dir=/mysql/backups/inc1 --incremental-basedir=/mysql/backups/base
xtrabackup --backup --password=123456 --target-dir=/mysql/backups/inc2 --incremental-basedir=/mysql/backups/inc1

4、恢复过程:

前提要求
1、Backup needs to be prepared before it can be restored.
2、mysql服务datadir目录为空。
3、mysql服务停止运行。
4、有需要恢复的时间范围的binlog日志。


基于时间点恢复,确定恢复到哪个增量备份
cat /path/to/backup/xtrabackup_binlog_info
mysql-bin.000003 57

数据增量恢复
xtrabackup --prepare --apply-log-only --target-dir=/mysql/backups/base
xtrabackup --prepare --apply-log-only --target-dir=/mysql/backups/base --incremental-dir=/mysql/backups/inc1
xtrabackup --prepare --apply-log-only --target-dir=/mysql/backups/base --incremental-dir=/mysql/backups/inc2

恢复数据文件到my.cnf指定的datadir
xtrabackup --copy-back --target-dir=/mysql/backups/base
OR:
rsync -avrP /mysql/backups/ /mysql/data/

修改权限
chown -R mysql:mysql /mysql/data/

启动数据库
service mysqld start

binlog日志挖掘并恢复数据
mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 --start-position=57 --stop-datetime="11-12-25 01:00:00" | mysql -u root -p

 

以上是关于mysql表的备份是InnoDB 类型的,但备份过后,恢复读取不了表。请问如何读取这种类型的。谢谢啊,的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 数据还原

MySQL备份工具收集

MySQL没有备份怎么恢复被drop的表(利用undrop-for-innodb)

mysql 数据迁移

MySQL笔记:备份与还原

mysqldump 的备份/恢复问题(带有 URL 的表)