设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 服务器 > 安全 > 正文

解锁MySQL备份恢复的4种正确姿势(6)

发布时间:2021-01-21 03:46 所属栏目:53 来源:网络整理
导读:当然我们大多数据时候是不会在原来的实例上做操作的,都会把相应的备份在奇他的实例上进行恢复,然后再导出导入到误操作的实例.这里我们直接清掉目录,然后再次运行,查看恢复后的数据: dbadmin@test 03:41:56select *

当然我们大多数据时候是不会在原来的实例上做操作的,都会把相应的备份在奇他的实例上进行恢复,然后再导出导入到误操作的实例.这里我们直接清掉目录,然后再次运行,查看恢复后的数据:

dbadmin@test 03:41:56>select * from t;
+——-+
| ?id ?|
+——-+
| ?1 ?|
| ?2 ?|
+——-+
2 rows in set (0.00 sec)

同样的被恢复的目录里会多出来两个文件,一个是xtrabackup_binlog_pos_innodb,一个是xtrabackup_info.在这两个文件中都可以看到你最后的log,pos.在info里还可以看到lsn.我们基于这个pos再进行binlog的重演,恢复在binlog没有被备份的数据.

1076
$mysqlbinlog mysql-bin.000001 –start-position=1076 –stop-position=1333 -vv >increment.sql
dbadmin@test 03:51:25>source /u01/my3307/log/increment.sql dbadmin@test 03:51:34>select * from t;
+——-+
| ?id ?|
+——-+
| ?1 ?|
| ?2 ?|
| ?3 ?|
+——-+
3 rows in set (0.00 sec)

至此数据恢复完成.

  • https://www.percona.com/doc/percona-xtrabackup/LATEST/backup_scenarios/full_backup.html

五、直接复制整个数据库目录

MySQL还有一种非常简单的备份方法,就是将MySQL中的数据库文件直接复制出来.这是最简单,速度最快的方法. 不过在此之前,要先将服务器停止,这样才可以保证在复制期间数据库的数据不会发生变化.如果在复制数据库的过程中还有数据写入,就会造成数据不一致.这种情况在开发环境可以,但是在生产环境中很难允许备份服务器.

注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便.同时,还原时MySQL的版本最好相同. 只所以提这一点是因为当有停机窗口时,搭建主从的时候,这个往往是最快的.

一般生产环境的备份都会用percona-xtrabackup或者mysqlbackup,结合自己的情况,选择合适的备份策略,适时拿出来验证备份的有效性.

Q&A

Q1:用innobackupex备份MySQL5.5版本的数据,恢复的时候用backu5.6恢复,出现ibdata1找不到,这是什么原因呢?

A1:跨版本恢复以后,恢复出来的数据的元信息还是以前低版本的,在起动服务器之前需要先执行一下mysql_upgrade.这其实也是一个升级的问题,我们当然可以采用innobackupex来做升级操作了,同样的mysqlbackup也是可以的.因为有些时候我们的库太大了,不适合导入导出来升级的操作.

Q2:你讲的方法适合集群吗?如果不适合集群的话,用什么方法?

A2:当然,其实都是一样的.原理只是对数据库的数据进行复制,主从、PXC、MHA等多种环境都是有在用的.

Q3:生产环境,1T数据量用什么备份好?

A3:我的建议是你可以使用mysqlbackup,比较下来,这个速度算是很快的,不过当你的数据量达到一个T时,也应该去考虑如何分库分表,当做到这一点的时候,也是化整为零,可以把备份和正常的负载都分摊到多台服务器上.

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读