阿里云mysql数据丢失,如何通过服务器备份在其他服务器上恢复数据,并获取mysql丢失数据,完成mysql数据恢复
一、问题场景
我的一个服务器,自己安装的mysql服务,但是没有定期对mysql数据进行数据库级别的备份,只有对整个阿里云服务器的每日备份,某一天突然误删了一个表的数据,由于没有进行数据库备份,现在无法恢复数据,只能依靠服务器备份恢复当天的数据,因为我只想要当天mysql数据库中丢失的哪个一个表的数据,并不是直接回滚服务器的全部数据恢复到创建快照时的状态。
二、解决过程
1、利用快照创建磁盘挂载到主机,然后拷贝出需要的数据,(就是利用快照,找一个别的主机空闲磁盘,把快照数据恢复到该服务器磁盘上,然后从该磁盘数据中夫指出我想要的表数据)
使用快照创建云盘:使用快照创建新云盘实现数据复制_云服务器 ECS(ECS)-阿里云帮助中心
挂载磁盘:将按量付费云盘挂载到ECS实例作为数据盘使用_云服务器 ECS(ECS)-阿里云帮助中心
2、在新的服务器磁盘上,重新安装一个mysql服务器。安装服务器后,需要修改MySQL配置文件my.cnf 文件,更改mysql的数据目录为原数据库目录(只修改datadir为恢复的mysql数据目录即可):
把数据目录更改到mytemp下,其他配置都不改,还是新安装的mysql服务的默认目录:
[mysqld]
#datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sockdatadir=/mytemp/mysql/data
#socket=/mytemp/mysql/data/mysql.sockskip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
3、登录mysql,导出丢失表对应的数据库全部数据(具体命令,可以百度一下):
4、卸载掉这个磁盘,然后释放云盘 释放云盘您可以参考文档释放云盘_云服务器 ECS(ECS)-阿里云帮助中心 注:释放云盘时,云盘上的数据会被删除,建议您提前备份好数据。
umount /dev/vdd1
三、总结
mysql数据库还是要经常备份一下,特别是那种配置数据,自己要经常备份,避免数据库数据丢失或者误删、误操作,导致的数据丢失。
而本文的这种恢复方式,是没有数据库备份,但是有阿里云每天的服务器备份的情况下,通过恢复服务器数据,并安装新的mysql服务,通过更改mysql的数据目录,实现新的mysql服务直接访问旧的mysql数据,从来将自己丢失的数据导出来,实现恢复mysql数据的方案。