首页 > 数据库 >数据库备份-逻辑备份与物理备份的区别

数据库备份-逻辑备份与物理备份的区别

时间:2023-08-09 13:48:54浏览次数:51  
标签:逻辑 database 备份 directory backup 数据库

数据库备份是指将数据库中的数据和结构进行备份,以便在发生故障或数据丢失时恢复数据库的操作。逻辑备份和物理备份是两种备份的方式。

  1. 逻辑备份:逻辑备份是指通过导出数据库中的数据和结构的逻辑表示(例如SQL语句),将其保存到文件中。逻辑备份可以是数据库的逻辑结构、表结构和数据等,可以通过数据库管理系统提供的导出工具(如mysqldump)来进行备份。逻辑备份的优点是备份文件相对较小,备份和恢复速度较快,可以跨平台进行备份和恢复。缺点是备份和恢复的过程较慢,特别是在数据量较大的情况下。

  2. 物理备份:物理备份是指直接将数据库的二进制文件进行备份,包括数据文件、日志文件和索引文件等。物理备份是通过复制数据库文件来进行备份,可以通过文件系统工具(如cp或rsync)进行备份。物理备份的优点是备份和恢复的速度较快,特别是在数据量较大的情况下,而且备份的过程比逻辑备份简单。缺点是备份文件较大,不能跨平台进行备份和恢复。

总结:

  • 逻辑备份是通过导出数据库的逻辑表示进行备份,文件相对较小,备份和恢复速度较快,可以跨平台进行备份和恢复。
  • 物理备份是直接复制数据库的二进制文件进行备份,备份和恢复速度较快,但备份文件较大,不能跨平台进行备份和恢复。

数据库逻辑备份的方式有以下几种:

  1. SQL导出:使用数据库管理系统提供的导出工具(如mysqldump)将数据库中的数据和结构导出为SQL语句,保存到文件中。

  2. 数据库复制:使用数据库复制技术,将数据库的数据和结构复制到另一个数据库服务器上,作为备份。

  3. 数据库备份工具:使用第三方的数据库备份工具,如DBeaver、Navicat等,可以通过图形界面或命令行来进行逻辑备份。

数据库物理备份的方式有以下几种:

  1. 文件系统级别备份:直接复制数据库的二进制文件,包括数据文件、日志文件和索引文件等。可以使用文件系统工具(如cp、rsync)进行备份。

  2. 存储级别备份:使用存储设备提供的快照或镜像功能,对数据库的存储进行备份。这种方式可以快速创建一个数据库的副本,而无需复制整个数据库文件。

  3. 数据库备份工具:使用数据库管理系统提供的备份工具,如Oracle的RMAN(Recovery Manager)、MySQL的XtraBackup等,可以对数据库进行物理备份。

需要注意的是,逻辑备份和物理备份的方式可以结合使用,根据实际需求选择合适的备份策略。

MySQL逻辑备份与恢复的示例:

  • 逻辑备份示例:

    • 使用mysqldump备份整个数据库:mysqldump -u username -p password database > backup.sql
    • 使用mysqldump备份指定表:mysqldump -u username -p password database table1 table2 > backup.sql
  • 逻辑恢复示例:

    • 使用mysql命令恢复整个数据库:mysql -u username -p password database < backup.sql
    • 使用mysql命令恢复指定表:mysql -u username -p password database < backup.sql

PostgreSQL逻辑备份与恢复的示例:

  • 逻辑备份示例:

    • 使用pg_dump备份整个数据库:pg_dump -U username -W -F p -f backup.sql database
    • 使用pg_dump备份指定表:pg_dump -U username -W -F p -f backup.sql -t table1 -t table2 database
  • 逻辑恢复示例:

    • 使用psql命令恢复整个数据库:psql -U username -W -d database -f backup.sql
    • 使用psql命令恢复指定表:psql -U username -W -d database -f backup.sql -t table1 -t table2

MongoDB逻辑备份与恢复的示例:

  • 逻辑备份示例:

    • 使用mongodump备份整个数据库:mongodump --db database --out backup_directory
    • 使用mongodump备份指定集合:mongodump --db database --collection collection1 --out backup_directory
  • 逻辑恢复示例:

    • 使用mongorestore恢复整个数据库:mongorestore --db database backup_directory
    • 使用mongorestore恢复指定集合:mongorestore --db database --collection collection1 backup_directory/database/collection1.bson

Oracle逻辑备份与恢复的示例:

  • 逻辑备份示例:

    • 使用expdp备份整个数据库:expdp username/password directory=backup_directory dumpfile=backup.dmp full=y
    • 使用expdp备份指定表:expdp username/password directory=backup_directory dumpfile=backup.dmp tables=table1,table2
  • 逻辑恢复示例:

    • 使用impdp恢复整个数据库:impdp username/password directory=backup_directory dumpfile=backup.dmp full=y
    • 使用impdp恢复指定表:impdp username/password directory=backup_directory dumpfile=backup.dmp tables=table1,table2

请注意,示例命令中的参数如用户名、密码、数据库名等需要根据实际情况进行替换。

逻辑备份与恢复的执行方式对于不同的数据库管理系统可能会有一些差异。以下是常见数据库管理系统(MySQL、PostgreSQL、MongoDB、Oracle、Redis)的逻辑备份与恢复的执行方式及示例:

MySQL:

  • 逻辑备份:使用mysqldump命令进行备份,例如:
    mysqldump -u username -p password database > backup.sql
    这将导出名为backup.sql的SQL文件,其中包含数据库的结构和数据。

  • 逻辑恢复:使用mysql命令进行恢复,例如:
    mysql -u username -p password database < backup.sql
    这将从backup.sql文件中读取SQL语句并将其导入到数据库中。

PostgreSQL:

  • 逻辑备份:使用pg_dump命令进行备份,例如:
    pg_dump -U username -W -F p -b -v -f backup.sql database
    这将导出名为backup.sql的SQL文件,其中包含数据库的结构和数据。

  • 逻辑恢复:使用psql命令进行恢复,例如:
    psql -U username -d database -f backup.sql
    这将读取backup.sql文件中的SQL语句并将其导入到数据库中。

MongoDB:

  • 逻辑备份:使用mongodump命令进行备份,例如:
    mongodump --db database --out backup_directory
    这将导出名为backup_directory的目录,其中包含数据库的数据。

  • 逻辑恢复:使用mongorestore命令进行恢复,例如:
    mongorestore --db database backup_directory
    这将从backup_directory目录中读取数据并将其导入到数据库中。

Oracle:

  • 逻辑备份:使用expdp命令进行备份,例如:
    expdp username/password directory=backup_directory dumpfile=backup.dmp
    这将导出名为backup.dmp的文件,其中包含数据库的结构和数据。

  • 逻辑恢复:使用impdp命令进行恢复,例如:
    impdp username/password directory=backup_directory dumpfile=backup.dmp
    这将从backup.dmp文件中读取数据并将其导入到数据库中。

Redis:

  • 逻辑备份:使用redis-cli命令进行备份,例如:
    redis-cli save
    这将触发Redis服务器执行数据快照,将数据保存到默认的dump.rdb文件中。

  • 逻辑恢复:将备份的dump.rdb文件放回Redis服务器的数据目录,并重新启动Redis服务器即可。

请注意,以上示例仅为了演示目的,实际使用时可能需要根据具体的数据库管理系统版本和配置进行适当调整和参数设置

标签:逻辑,database,备份,directory,backup,数据库
From: https://www.cnblogs.com/heidsoft/p/17616610.html

相关文章

  • 数据库-mysql/postgresql/mongo/oracle/redis 物理备份与恢复的执行方式有
    以下是每个数据库的物理备份与恢复的执行方式示例:MySQL:备份:使用mysqldump命令进行备份。示例:mysqldump-uusername-pdatabase_name>backup.sql恢复:使用mysql命令从备份文件中恢复数据。示例:mysql-uusername-pdatabase_name<backup.sqlPostgreSQL:备份:使用pg_d......
  • Django 离线脚本(数据库添加admin用户)
     importosimportsysimportdjangobase_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.append(base_dir)os.environ.setdefault('DJANGO_SETTINGS_MODULE','day06order.settings')django.setup()fromwebimportmodels......
  • clickhouse备份遇到的问题和处理
    错误一使用以下命令备份表的时候报错:ck:)backuptableabce.tbtodisk('backups','tb.zip');BACKUPTABLEabce.tbTOdisk('backups','tb.zip')Queryid:bc17655c-cd6f-4aca-a13f-644f5b4f713c0rowsinset.Elapsed:0.002sec.......
  • kingbase-数据库和实例管理
    1、实例管理1.1实例创建使用数据库对象管理工具创建实例使用initdb命令创建实例$initdb-Usystem-W--encoding=UTF8-D/home/kingbase/app/ES/V8/data2initdb:警告:为本地连接启用"trust"身份验证你可以通过编辑sys_hba.conf更改或你下次执行initdb时使用......
  • SQL SERVER 2019 数据库还原测试库的方法
    1、备份正式库数据2、在其它电脑上还原备份的数据库 不需要覆盖其它数据库,直接还原出数据库还原时修改文件名和数据库名称: 修改文件名称      还原成功......
  • Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)
    一.Sqlserver还原失败(数据库正在使用,无法获得对数据库的独占访问权)本次测试使用数据库实例SqlServer2008r2版错误详细:标题:MicrosoftSQLServerManagementStudio------------------------------还原数据库“Mvc_HNHZ”时失败。(Microsoft.SqlServer.Management.Rel......
  • sqlserver 数据库显示 正在还原
    问题描述之前不太会搞差异备份的恢复,然后恢复发生了失败之后这个数据库一直处于(正在还原……状态并且出现数据库无法访问的情况尝试解决1执行查询RestoreDatabase数据库名称withRecovery然后不太能行 2执行查询RestoreDatabase数据库名称withNoRecovery似乎没有报......
  • python 测试框架中的数据库连接类(mysql示例)
     1.数据库信息yaml文件conf_env.yamlhost:doname:demo.pab.com.cnport:80database:host:"db.fat.qa.pab.com.cn"user:"deploy"password:"thess"dbname:"testdb"charset:"utf8"2.与数据库yaml文件同级目录,创建配置conf......
  • ORACLE到达梦数据库DBLINK配置
    ORACLE到达梦数据库DBLINK配置1.ORACLE到达梦数据库DBLINK说明创建ORACLE到达梦数据库的DBLINK,基于ORACLE透明网关+ODBC协议连接达梦数据库原理。以下为创建DBLINK过程案例。2.配置ORACLE到DM的DBLINK2.1环境说明源数据库:ORACLE11.0.2.4目标数据库:DM82.2安装DM客户端在ORAC......
  • golang自定义 os.stderr 数据读取逻辑
    原始需求只是一个很简单的需求,使用golang的exec运行一个命令然后获取实时结果,命令是trivyimage--download-db-only正常的打印应该是2023-08-08T17:06:02.929+0800INFONeedtoupdateDB2023-08-08T17:06:02.929+0800INFODBRepository:ghcr.io/aquas......