数据库数据备份与恢复
通过CMD备份数据库,包含Mysql和Oracle
PS:
PLSQL以及Navicat 的工具中也有类似的功能可以实现数据库的备份
MySQL:
备份数据库:
- 使用
mysqldump
命令 :mysqldump -uroot -proot [dbname]> f:/backup/backupfile.sql
; - 备份多个数据库:
mysqldump -u username -p --databases [dbname1] [dbname2]> backupfile.sql
; - 备份所有数据库:
mysqldump -u username -p --all-databases > backupfile.sql
。
说明: 默认在电脑的当前用户目录下(例:
C:\Users\LEGION
)
问题:
-
使用
mysqldump
导出时提示 :Warning:A partial dump from a server that has GTIDs
:Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
- 原因:GTID是5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。
官方给的:A global transaction identifier (GTID) is a unique identifier created and associated with each transaction committed on the server of origin (master). 所以可能是因为在一个数据库里面唯一,但是当导入其他的库就有可能重复。
- 解决:按照提示添加:`--set-gtid-purged=off `或`–gtid-mode=OFF` ;
即:`mysqldump -uroot -set-gtid-purged=off -p mydbname>fbackupfile.sql`。
还原数据库:
- 直接使用
mysql
命令:mysql -u root -p [dbname] < backup.sq
;
更多参考
- mysqldump数据导出问题和客户端授权后连接失败问题
- 学会4种备份MySQL数据库
Oracle:
- 导出(exp):
exp 用户名/密码@IP/ORCL file=e:\backupfile.dmp owner=(用户名)
例:exp myName/myPwd@127.0.0.1/ORCL file=e:\backupfile.dmp owner=(myName)
- 导入(imp):
imp 用户名/密码@IP/ORCL ignore=y full=y file=e:\0202daochu.dmp log=e:\log0202.log
例:imp myName2/myPwd2@127.0.0.1/ORCL ignore=y full=y file=e:\backupfile.dmp log=e:\log0202.log
参考:
Oracle数据库三种备份方案
Oracle数据库逻辑备份与恢复