mysql(8.0版本测试) 数据库的备份,还原

方法一:非常规方法

可以实现脚本操作.
直接备份data目录,这种备份方法很简单,还原操作也很简单,将备份的data目录下的文件全部拷贝过来,就完成了数据库的还原,包括数据库,表,用户,及其权限等等都可以完美还原.
这种方法可以应对数据库服务器瘫痪,但是又无其它备份可用,可以先把数据库目录直接拷贝出来,然后部署完环境后,直接覆盖目录即可.

方法二:通过mysqldump备份

可以实现脚本操作.
1)备份某个数据库或者某个数据库的某几个表:
mysqldump [OPTIONS] database [tables]
比如:
备份db1库

mysqldump -u root -p db1 > db1.sql

备份db1库的tb1,tb2表

mysqldump -u root -p  db1 tb1 tb2 >db1-1.sql

2)备份某几个数据库:
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
比如:
备份db1,db2数据库

mysqldump -u root -p --databases db1 db2 > bak01.sql

3)备份所有数据库:
mysqldump [OPTIONS] --all-databases [OPTIONS]
比如:
备份所有数据库

mysqldump -u root -p --all-databases > all_db.sql

这种方法备份的文件内容都是sql语句,可以直接使用mysql命令导入,即用如下形式:

mysql -u root -p database < bak.sql

方法三:使用binlog日志备份还原

1,首先要开启binlog日志
表象就是在mysql根目录下会有诸如binlog.index,binlog.000001,binlog.00000等等的文件存在
mysql(8.0版本测试) 数据库的备份,还原
可以在数据库中使用如下方法查看:
show variables like '%log_bin%';
mysql(8.0版本测试) 数据库的备份,还原
第一行就表明了已经开启了binlog日志
二进制日志的好处就是,当你的数据库因为某些因素数据库丢数据了,或者被删库了,但是如果还有日志文件,那就不用慌
比如,现在我有一个数据库db1,库中有两个表tb01,tb02
mysql(8.0版本测试) 数据库的备份,还原
现在,模拟故障,手动删除库db1
mysql(8.0版本测试) 数据库的备份,还原
我们先确认现在正在使用的binlog日志文件是哪一个,一般都是尾数最大的文件为当前日志文件
mysql(8.0版本测试) 数据库的备份,还原
这时先退出mysql,使用mysqlbinlog查看binlog.000008这个文件
mysqlbinlog binlog.000008
可以发现最后有这么一部分内容
mysql(8.0版本测试) 数据库的备份,还原
最后,看见drop database db1就是删库操作,一般就近查找就能找到
注意红框部分,接下来要使用它们还原数据库
1)使用时间点还原数据库:
mysqlbinlog binlog.000008 --stop-datetime="2020-11-26 13:24:16" -d db1|mysql -u root -p
登入mysql,查看数据库又回来了
2)使用位置点还原数据库:
mysqlbinlog binlog.000008 --stop-position="7242045" -d db1|mysql -u root -p
同样查看数据库,已经回复成功了.

方法四:使用第三方工具备份

1)phpmyadmin
该方法需要部署一个phpmyadmin工具,可视化web界面,其中的"导出","导入"功能即可备份,还原数据库,手动操作比较直观,方便.
2)导航猫(navicat)
这个是windows平台下的一个数据库管理软件,是收费的,但是功能很强大,除了手动备份数据,还可以方便的制定定时备份计划等等.除了mysql外,还支持很多其它常见数据库.
3)其它集成工具
如果是用来部署和管理web站点,那么可以选择一些集成工具,这些集成管理工具在提供了数据库管理功能的同时还兼有其它功能,比如windows平台常用的phpstudy,护卫神等等,linux平台的BT(宝塔面板)等等.

猜你喜欢

转载自blog.51cto.com/3823536/2555239