AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 696603
Accepted
Tobia
Tobia
Asked: 2015-06-05 04:48:19 +0800 CST2015-06-05 04:48:19 +0800 CST 2015-06-05 04:48:19 +0800 CST

我可以“刷新并锁定”一个 Oracle 数据库来进行文件系统备份吗?

  • 772

我正在使用 ZFS 拍摄正在运行的 OpenVZ 容器的快照。

对于 MySQL 数据库,我可以flush tables with read lock用来将它们置于刷新和锁定状态。这将使基础文件处于一致状态并保留任何传入查询,直到我完成快照,这最多需要几秒钟。

这是一个示例脚本,没有错误检查和其他内务代码:

vz_root=/var/lib/vz/root/$veid
mysql_locked=/var/run/mysql_locked

# flush & lock MySQL, touch mysql_locked, and wait until it is removed
vzctl exec $veid mysql -NB <<-EOF &
    flush tables with read lock;
    delimiter ;;
    system touch $mysql_locked
    system while test -e $mysql_locked; do sleep 1; done
    exit
EOF

# wait for the preceding command to touch mysql_locked
while ! test -e $vz_root$mysql_locked; do sleep 1; done

# take a snapshot of the VZ filesystem, while MySQL is being held locked
zfs snapshot zpool/private/$veid@$(date +"%Y-%m-%d_%H:%M")

# unlock MySQL
rm -f $vz_root$mysql_locked

我可以为 Oracle 数据库做同样的事情吗?

是否有一个命令可以刷新其表空间,使它们处于一致状态,适合备份,并保持任何活动,直到我解锁它?

我宁愿避免重新配置 Oracle 以直接使用 ZFS 作为存储后端,因为简单的 OpenVZ 容器非常适合我。事实上,我宁愿有一些低维护技术,没有任何复杂的 Oracle 设置(如果有的话)。

mysql
  • 1 1 个回答
  • 356 Views

1 个回答

  • Voted
  1. Best Answer
    ibre5041
    2015-06-05T05:36:15+08:002015-06-05T05:36:15+08:00

    “没有办法”如何阻止 Oracle 工作。甚至备份也是后台非阻塞进程。使用 RMAN 进行备份(推荐)。

    另一种方法是使用非常老派的方法。

    • 为备份创建备用控制文件(它将创建 Oracle 控制文件的备份副本 - 其中包含一些旧的 SCN)
    • 执行alter database begin backup. 这不会停止针对数据文件的 IO 操作。只有SCN不会写在里面
    • 现在您可以创建快照了。
    • 执行alter database end backup
    • 现在您还备份了数据库生成的所有归档重做日志

    恢复工作如下:

    • 将备份控制文件复制到正确的位置
    • 复制数据文件(或使用快照)
    • 尝试启动数据库。数据库将识别 SCN 不同,并且数据文件处于不一致状态。因此它将重新应用重做日志中的所有更改。
    • 然后你可以打开数据库

    整个过程比较复杂,你应该阅读一些有关它的内容。网上有各种各样的文章。这确实需要一些知识。

    恕我直言-您的要求没有多大意义。MySQL 对备份没有任何合理的支持,人们倾向于通过各种 hack 绕过这个限制。商业数据库具有对备份的内置本地支持,并且确实提供了比 ZFS 文件系统更多的功能。例如,您可能会发现 PITR(时间点恢复)非常有用。所以我真的建议你为 Oracle 使用 RMAN 备份,特别是如果你不熟悉 Oracle 架构。

    PS:SCN 代表 System Change Number。每当数据库发生变化时,这个数字就会增加,并写入每个 Oracle 数据文件。

    PPS:如果要恢复数据库状态,可以使用 FLASHBACK DATABASE 命令。

    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve