首页 > 数据库 >[官翻]mysqlbackup的乐观备份

[官翻]mysqlbackup的乐观备份

时间:2024-09-17 22:23:37浏览次数:11  
标签:-- 备份 mysqlbackup 官翻 optimistic home backup admin

  1. 乐观备份可以用来提升备份和恢复体量比较大的数据库(只有少量的表经常变更)的性能。
    2)在大型数据库的热备份过程中(例如,以TB为单位),当备份进行时,可能会在服务器上生成巨大的重做日志文件。由于重做日志文件的增长速度快于mysqlbackup处理的速度,因此当mysqlbackup无法赶上重做日志周期,并且LSN在被mysqlbackup读取之前被服务器覆盖时,备份操作实际上可能会失败。此外,准备恢复备份的apply-log步骤可能需要很长时间,因为mysqlbackup有大量的ibbackup_logfile文件(从大型重做日志文件创建)要应用于备份。在备份和恢复过程中,当可用于读取和写入重做日志的I/O资源稀缺时,问题会加剧。
  2. 乐观备份通过将备份过程分为两个内部阶段来缓解问题,这两个阶段对用户是透明的:
    a. 乐观阶段:在第一阶段,备份过程中不太可能修改的表(以下称为“inactive tables”,由用户使用optimistic-time选项标识,或者排除使用optimistic-busy-tables选项标识)将在MySQL实例上不加任何锁的情况下进行备份。由于这些表在备份完成之前不会更改,因此在这个阶段,mysqlbackup不会备份redo log、undo log和系统表空间。
    b. 正常阶段:在第二阶段中,第一阶段未备份的表(以下称为“busy tables”)的备份方式与普通备份中的处理方式类似:首先复制InnoDB文件,然后复制其他相关文件,并在不同时间对数据库应用各种锁进行复制或处理。redo log、undo log和系统表空间在这个阶段被备份
  3. 只要使用 optimistic-time或者 optimistic-busy-tables选项,就会进行乐观备份。如果如预期的那样,乐观选项标识的inactive table列表在备份过程中没有更改(或者,即使更改了很小的百分比),大多数用户会发现,与普通备份相比,总体备份时间显著缩短,因为要备份的重做日志数据的大小要小得多。此外,备份的恢复时间也将减少,因为由于重做日志较小,apply-log操作将更快。但是,如果发现在备份过程中,所标识的非活动表的列表有很大一部分发生了更改,则执行乐观备份的好处将变得有限,而且在最坏的情况下,乐观备份实际上可能需要更长的时间才能执行。对于单个文件备份,与普通备份相比,备份的大小会更大。因此,用户在尝试执行乐观备份时,应小心识别哪些表“inactive”,哪些表“busy”。
  4. 注意:
    a. 对于增量备份或使用可传输表空间(TTS)的备份,不能执行乐观备份。
    b. 不要在服务器上与乐观备份并行执行DDL操作,否则备份将失败。
  5. 使用optimistic-time=YYMMDDHHMMSS选项的乐观备份(自2011年5月16日中午起修改的表被视为busy tables,并在乐观备份的正常阶段进行备份,所有其他表都在乐观阶段进行备份:)
    mysqlbackup --defaults-file=/home/dbadmin/my.cnf --optimistic-time=110516120000
    --backup-image= --backup-dir= backup-to-image
  6. 使用optimistic-time=now选项的乐观备份(所有表被标识为inactive tables并在乐观备份的乐观阶段备份)
    mysqlbackup --defaults-file=/home/dbadmin/my.cnf --optimistic-time=now \
    --backup-image= --backup-dir= backup-to-image
  7. 使用optimistic-busy-tables选项的乐观备份
    mysqlbackup --defaults-file=/home/dbadmin/my.cnf --optimistic-busy-tables="^mydatabase.mytables-.*"
    --backup-image= --backup-dir= backup
  8. 使用ptimistic-busy-tables和 optimistic-time 选项的乐观部分备份(mydatabase中名称中以mytables为前缀的表被视为繁忙表,并在正常阶段进行备份,即使自2010年5月16日(乐观时间指定的时间)以来未进行过修改:)
    mysqlbackup --defaults-file=/home/dbadmin/my.cnf --optimistic-busy-tables="^mydatabase.mytables-.*"
    --optimistic-time=100516 --backup-image= --backup-dir= backup
    注意:如果同时使用ptimistic-busy-tables和optimistic-time选项,并且它们在确定哪些表是繁忙表时发生冲突,则ptimistic-busy-tables优先于optimistic-time。
  9. 使用乐观备份和乐观增量备份
    通过在备份计划中同时使用乐观备份和乐观增量备份,您可以加快大型数据库的备份速度,尤其是当自某个时间以来只有相对较少的表被修改,并且没有多少表被频繁修改时。
# A full optimistic backup performed on 2017/02/04, Sat, at 1130 PM.
# The --optimistic-time option is used to specify an optimistic time of 2016/08/16, 0800 PM 

mysqlbackup --defaults-file=/home/admin/my.cnf --optimistic-time=160816200000 \ 
  --backup-dir=/home/admin/temp_dir --backup-image=/home/admin/backups/mydb_full_201702042330.bi \
  --with-timestamp \
  backup-to-image  

# A sequence of optimistic incremental backups are then performed on each the following six days at 1130 PM
# On Sunday, 2017/02/05 
mysqlbackup --defaults-file=/home/admin/my.cnf \
  --incremental=optimistic --incremental-base=history:last_backup \
  --backup-dir=/home/admin/temp_dir \
  --backup-image=/home/admin/backups/mydb_incremental__201702052330.bi \
  --with-timestamp \
  backup-to-image
# On Monday, 2017/02/06
mysqlbackup --defaults-file=/home/admin/my.cnf \
  --incremental=optimistic --incremental-base=history:last_backup \
  --backup-dir=/home/admin/temp_dir \
  --backup-image=/home/admin/backups/mydb_incremental__201702062330.bi \
  --with-timestamp \
  backup-to-image
# On Tuesday, 2017/02/07
mysqlbackup --defaults-file=/home/admin/my.cnf \
  --incremental=optimistic --incremental-base=history:last_backup \
  --backup-dir=/home/admin/temp_dir \
  --backup-image=/home/admin/backups/mydb_incremental__201702072330.bi \
  --with-timestamp \
  backup-to-image
# On Wednesday, 2017/02/08
mysqlbackup --defaults-file=/home/admin/my.cnf \
  --incremental=optimistic --incremental-base=history:last_backup \
  --backup-dir=/home/admin/temp_dir \
  --backup-image=/home/admin/backups/mydb_incremental__201702082330.bi \
  --with-timestamp backup-to-image
# On Thursday, 2017/02/09
mysqlbackup --defaults-file=/home/admin/my.cnf \
  --incremental=optimistic --incremental-base=history:last_backup \
  --backup-dir=/home/admin/temp_dir \
  --backup-image=/home/admin/backups/mydb_incremental__201702092330.bi \
  --with-timestamp \
  backup-to-image
# On Friday, 2017/02/10
mysqlbackup --defaults-file=/home/admin/my.cnf \
  --incremental=optimistic --incremental-base=history:last_backup \
  --backup-dir=/home/admin/temp_dir \
  --backup-image=/home/admin/backups/mydb_incremental__201702102330.bi \
  --with-timestamp \
  backup-to-image

# Another full optimistic backup is performed on Saturday, 2017/02/11
mysqlbackup --defaults-file=/home/dbadmin/my.cnf --optimistic-time=110516200000 \  
 --backup-dir=/home/admin/temp_dir --backup-image=/home/admin/backups/mydb_full_201702112330.bi \
  --with-timestamp \
  backup-to-image

=================restore================
# Restore the database to its state at Tuesday, 2017/02/07, at 11:30 PM
# First, restore the full optimistic backup taken on the Saturday before, which was 2017/02/04:
mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/home/admin/backups/mydb_full_201702042330.bi \
  --backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql \
  --with-timestamp \
  copy-back-and-apply-log
# Next, restore the optimistic incremental taken on the Sunday, Monday, and Tuesday that follow:  
mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/home/admin/backups/mydb_incremental__201702052330.bi \
  --backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql --incremental \
  --with-timestamp \
  copy-back-and-apply-log
mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/home/admin/backups/mydb_incremental__201702062330.bi \
  --backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql --incremental \
  --with-timestamp \
  copy-back-and-apply-log
mysqlbackup --defaults-file=/etc/my.cnf --backup-image=/home/admin/backups/mydb_incremental__201702072330.bi \
  --backup-dir=/home/admin/temp_dir --datadir=/var/lib/mysql --incremental \
  --with-timestamp \
  copy-back-and-apply-log

标签:--,备份,mysqlbackup,官翻,optimistic,home,backup,admin
From: https://blog.51cto.com/ablewang/12038940

相关文章

  • 易优CMS后台如何备份数据库
    步骤1:进入后台登录易优CMS后台。在后台左侧菜单栏中找到“功能地图”(低版本的程序点击“更多功能”)。步骤2:进入备份还原功能在“功能地图”中找到“备份还原”功能,并点击进入。步骤3:进行数据备份在“备份还原”页面中,点击“数据备份”。等待一段时间,直到备份完成。......
  • k8s集群备份与迁移
    什么是Velero?Velero是一个用Go语言开发的开源工具,用于Kubernetes集群的备份、恢复、灾难恢复和迁移。Velero备份工作流程当用户发起velerobackupcreate时,会执行如下四个动作:velero客户端调用KubernetesAPI创建自定义资源并存储到etcd;BackupController通过Kuber......
  • 帝国CMS搬家以及帝国cms备份数据库方法
    帝国CMS(EmpireCMS,简称ECMS)搬家以及备份数据库的方法主要包括几个步骤:备份数据库、备份网站文件、在新服务器上恢复数据、测试新站点等。下面将详细说明这些步骤:1.备份数据库使用帝国CMS后台备份登录后台:登录帝国CMS的管理后台。进入备份与恢复数据页面:在后台导航中......
  • 帝国网站如何备份数据库
    帝国CMS(EmpireCMS,简称ECMS)提供了多种方法来备份数据库,包括使用内置的备份工具、通过数据库管理工具(如phpMyAdmin)或使用命令行工具(如mysqldump)。下面是几种常见的备份方法:1.使用帝国CMS后台备份步骤:登录帝国CMS后台:使用管理员账号登录帝国CMS的管理后台。进入备份与恢......
  • 帝国CMS备份还原数据库
    帝国CMS(EmpireCMS,简称ECMS)提供了内置的备份与恢复工具,允许用户轻松地备份和恢复数据库。以下是使用帝国CMS后台工具进行数据库备份和恢复的步骤,以及一些额外的方法。使用帝国CMS后台工具备份和恢复数据库备份数据库登录帝国CMS后台:使用管理员账号登录帝国CMS的管理后台。......
  • 帝国cms备份和恢复 帝国cms恢复数据
    帝国CMS(EmpireCMS,简称ECMS)提供了内置的备份与恢复工具,使得用户能够方便地备份和恢复数据库。下面是使用帝国CMS后台工具进行数据库备份和恢复的具体步骤。备份数据库登录帝国CMS后台:使用管理员账号登录帝国CMS的管理后台。进入备份与恢复数据页面:在后台管理界面中,进入......
  • 帝国cms备份的数据库文件夹-帝国CMS备份中心
    帝国CMS提供了内置的备份工具,称为“帝国备份王”,用于备份和恢复数据库。备份的数据库文件通常会被保存在一个特定的文件夹中。以下是关于帝国CMS备份的一些基本信息和备份文件夹的位置:备份文件夹位置帝国CMS备份的文件通常保存在网站根目录下的/data/backup/文件夹中。在这个文......
  • dedecms备份数据库文件在哪里
    DEDECMS备份数据库文件通常保存在一个特定的目录中。以下是DEDECMS数据库备份文件的一般位置:备份目录:备份文件通常保存在/data/backupdata目录中。如何找到备份文件通过FTP客户端访问:使用FTP客户端(如FileZilla、WinSCP等)连接到你的服务器或虚拟主机。寻找DEDECMS的安装......
  • 使用MySQL Workbench进行数据库备份
    1、打开MySQLWorkbench2、进行数据库连接配置 如果之前连过,会有历史记录,直接点击需要备份的连接即可3、进入主界面后,选择左侧的Administration选项卡,然后点击DataExport;或者点击工具栏的Server——DataExport4、选择要备份的数据库,默认选择所有的表,在objectstoexpo......
  • 监控存储可以用来备份服务器数据吗
    监控存储通常是为了捕获和存储监控数据而设计的,例如系统日志、性能指标、网络流量等信息。它并不是为了备份服务器数据而设计的。以下是关于监控存储与数据备份之间的区别:监控存储:目的:监控存储的目的是为了持续跟踪和记录系统的状态和性能,以便于实时监控和分析。数据类型:监控存储通......