备份分为两种:物理备份和逻辑备份。
物理备份:备份的是使用过有效的数据页,对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)。
逻辑备份:主要备份的是数据库对象(表、视图、索引等),逻辑备份可以用来数据迁移,历史数据归档。
1.1 物理备份还原
物理备份又分为脱机备份(冷备)和联机备份(热备)两种备份方式。
冷备(DmAPService是打开的,数据库是关闭的)
热备(DmAPService是打开的,数据库是打开的,数据库要打开归档)
1.冷备
冷备有两种方式:console工具、dmrman工具
(1)console工具备份
**1.确定DmAPService是否打开的
[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 22440) is running.
**2.关闭数据库
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
**3.建好备份文件夹
[dmdba@localhost dm8]$ mkdir -p backup
[dmdba@localhost dm8]$ ls
backuo data include license_zh.txt tool
backup desktop jar log uninstall
bin doc jdk samples uninstall.sh
bin2 drivers license_en.txt script web
**4.开始备份啦
[dmdba@localhost tool]$ ./console
(Console:78964): GLib-GObject-WARNING **: 04:21:04.900: invalid (NULL) pointer instance
(Console:78964): GLib-GObject-CRITICAL **: 04:21:04.900: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(Console:78964): Gtk-CRITICAL **: 04:21:04.900: IA__gtk_settings_get_for_screen: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gtk-WARNING **: 04:21:04.909: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Console:78964): Gtk-WARNING **: 04:21:04.909: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_display: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_display_get_pointer: assertion 'GDK_IS_DISPLAY (display)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_monitor_at_point: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gtk-WARNING **: 04:21:04.909: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_n_monitors: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gtk-WARNING **: 04:21:04.909: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_monitor_geometry: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_default_colormap: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_colormap_get_visual: assertion 'GDK_IS_COLORMAP (colormap)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_default_colormap: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
(Console:78964): Gdk-CRITICAL **: 04:21:04.909: IA__gdk_window_new: assertion 'GDK_IS_WINDOW (parent)' failed
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f237dcb32c7, pid=78964, tid=139790923097856
#
# JRE version: OpenJDK Runtime Environment (8.0_20-b26) (build 1.8.0_20-b26)
# Java VM: OpenJDK 64-Bit Server VM (25.20-b23 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libgdk-x11-2.0.so.0+0x7b2c7] gdk_window_enable_synchronized_configure+0x7
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /dm8/tool/hs_err_pid78964.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
./console: 行 17: 78964 已放弃 (吐核)"$JAVA_HOME/bin/java" -XX:+PerfDisableSharedMem -DDM_HOME="$DM_HOME" -Djava.library.path="$DM_HOME/bin" -Ddameng.log.file="$TOOL_HOME/log4j.xml" -DeclipseHome="$TOOL_HOME" -Dosgi.nl="$INSTALL_LANGUAGE" -Ddameng.dts.explorer.root="$TOOL_HOME/workspace/local/dts" -Ddameng.isql.explorer.root="$TOOL_HOME/workspace/local/isql" -Duse_bak2=true -Dapp.name=console -jar "$TOOL_HOME/plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar" -os linux -ws gtk -arch x86_64 -showsplash "$TOOL_HOME/console.bmp" -data "$TOOL_HOME/workspace/console" -product com.dameng.console.product -name Console
一旦发现有这个问题,还是图形化界面打不开的原因,先解决图形化界面打开问题
[dmdba@localhost ~]$ echo $DISPLAY
localhost:11.0
[dmdba@localhost ~]$ export DISPLAY=localhost:11.0
[dmdba@localhost ~]$ xhost +
access control disabled, clients can connect from any host
好,继续备份的事情:
点击确定,备份成功。
完全备份与增量备份的区别:
完全备份:完全备份是指一个备份包含指定数据库或表空间的所有数据
增量备份:增量备份是指在一次备份或者上一次增量备份后,以后每次的备份只需要与前一次相比增加或者被修改的文件
(2)dmrman工具备份
[dmdba@localhost tool]$ cd /dm8/bin
[dmdba@localhost bin]$ ./dmrman
RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup';
2.热备
热备有两种方式:manager 工具、disql 工具
(1)manager
**1.确定DmAPService是否打开的
[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 22440) is running.
**2.确定数据库是否打开的
[dmdba@localhost bin]$ ./DmServiceDMSERVER start
DmServiceDMSERVER (pid 7878) is running.
**3.确定是否打开归档
[dmdba@localhost bin]$ ./disql
disql V8
用户名:sysdba
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.916(ms)
SQL> select name,arch_mode from v$database;
行号 NAME ARCH_MODE
---------- ------ ---------
1 DAMENG N
已用时间: 1.735(毫秒). 执行号:1700.
使用manager工具开启归档
[dmdba@localhost bin]$ mkdir -p /dm8/arch
[dmdba@localhost bin]$ cd ../tool
[dmdba@localhost tool]$ ./manager
**4.开始备份啦
3.还原
先检查备份集的有效性
MAN> check backupset '/dm8/backup'
check backupset '/dm8/backup'
check backupset successfully.
time used: 13.518(ms)
**1.关闭数据库实例
[dmdba@localhost tool]$ cd ../bin
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
**2.通过工具(console)或者命令(dmrman)进行还原(下面以console来进行还原)
还原:就是将某个时间点的数据库副本(备份)拷贝到对应的目录下
恢复:就是在完成数据库还原之后,应用部分或者全部归档日志
**3.使用归档日志进行恢复
**4.更新DB_Magic(一旦更新了DB_Magic,备份就没有用了)
1.1 逻辑备份恢复
达梦数据库逻辑备份工具可以对本地或者远程数据库进行数据库级、模式级和表级的逻辑备份。备份的内容非常灵活,可以选择是否备份索引、数据行和权限,是否忽略各种约束(外键约束、非空约束、唯一约束等)。
- 库级别
- 用户级别
- 模式级别
- 表级别
下面是库级别的示例:
1.备份
2.恢复