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 类型的,但备份过后,恢复读取不了表。请问如何读取这种类型的。谢谢啊,的主要内容,如果未能解决你的问题,请参考以下文章