derby数据库的数据_Derby数据库备份

derby数据库的数据

抽象

我已经发布了许多有关Derby的博客:

  • 同一主机上的多个Derby网络服务器
  • Apache Derby数据库用户和权限
  • 与Maven和内存中Derby数据库的集成测试

这本不打算是一个系列。 但是多年来,我越来越多地使用Derby。 最近,我开始将Derby用作微服务体系结构的首选数据库。 这些是个人使用的应用程序,因此Derby绰绰有余。 即使这些是个人使用的应用程序,我也需要具有受限用户权限的 多台服务器 ,并且最重要的是要备份。 我不想丢失我的数据! 这篇文章的目的是演示如何备份Derby数据库。

免责声明

这篇文章仅供参考。 在使用所提供的任何信息之前,请认真思考。 从中学到东西,但最终自己做出决定,风险自负。

要求

我使用以下主要技术完成了本文的所有工作。 您可能可以使用不同的技术或版本来做相同的事情,但不能保证。

  • Apache Derby 10.14.2.0
  • OpenJDK 64位服务器VM Zulu 11.1 + 23(内部版本11-ea + 22,混合模式)

下载

此博客文章没有下载。 脚本完整显示。

Derby系统实用程序

备份Derby数据库确实非常简单。 Derby具有用于执行备份的内置系统实用程序。 该实用程序是SYSCS_UTIL.SYSCS_BACKUP_DATABASE('/location/of/the/backup/') 。 调用时,Derby将锁定数据库并执行到您指定为SYSCS_BACKUP_DATABASE参数的文件系统位置的复制操作。 现在我们知道执行备份的系统实用程序,让我们看一下bash脚本来自动执行备份。

备份脚本

清单1是一个bash脚本,可以轻松对其进行修改以备份任何网络服务器上的任何Derby数据库。

清单1 – derby-mydatabase-backup.sh

#!/bin/bash# Define a bunch of variables which will be used within this script.
# The names of the variables should be self-explanatory.
DERBY_HOME=/opt/db-derby-10.14.2.0-bin/
NETWORK_SERVER_HOST=localhost
NETWORK_SERVER_PORT=1527
DATABASE_NAME=mydatabase
DATABASE_USER=sa
DATABASE_PASSWORD=abc123
JDBC_URL="jdbc:derby://$NETWORK_SERVER_HOST:$NETWORK_SERVER_PORT/$DATABASE_NAME"
BACKUP_DIRECTORY="/tmp/$DATABASE_NAME-backup/$NETWORK_SERVER_PORT"
BACKUP_SCRIPT="$BACKUP_DIRECTORY/backup.sql"# Remove old backup if it exists. It is not a good idea to
# perform a backup on top of an existing backup.
rm -rf $BACKUP_DIRECTORY
mkdir -p $BACKUP_DIRECTORY
cd $BACKUP_DIRECTORY# Use the `echo` command to dynamically create an SQL file.
# This SQL file will be used by Derby `ij` to connect to
# the database and perform the backup.
echo "connect '$JDBC_URL' user '$DATABASE_USER' password '$DATABASE_PASSWORD';" >> $BACKUP_SCRIPT
echo "CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE('$BACKUP_DIRECTORY');" >> $BACKUP_SCRIPT
echo "exit;" >> $BACKUP_SCRIPT# Run the Derby `ij` application, passing it the SQL file
# that was just dynamically created. `ij` will read the 
# SQL file, executing its commands. This will then
# cause `ij` to connect to the database and call the 
# system utility to perform the backup.
$DERBY_HOME/bin/ij $BACKUP_SCRIPT

让我们更详细地看一下这个脚本。

第5-15行设置了脚本中使用的许多变量。 一些变量用于设置其他变量的值。 这里没有什么太复杂的。 变量的名称不言自明。

第17-19行是文件系统维护。 在现有备份之上执行备份不是一个好主意。 因此,这些行将删除现有备份(如果存在),并创建一个新的空备份目录。

然后,第24–26行负责创建backup.sql脚本文件。 该脚本文件包含执行备份SQL命令。 第24行是connect命令,因此Derby ij可以连接到要备份的数据库。 第25行是调用SYSCS_BACKUP_DATABASE系统实用程序的SYSCS_BACKUP_DATABASE 。 备份目录的位置作为参数传递给实用程序。 执行此SQL命令后,Derby将锁定数据库并执行备份。 第26行是退出ijexit命令。

最后,第33行就是一切发生的地方。 使用动态创建的backup.sql文件的位置作为命令行参数传递给ij来调用Derby ij命令。 当bash执行第33行时,如果一切顺利,则将备份Derby数据库。

注意如果使用Java安全策略运行Derby网络服务器,则此脚本可能会遇到一些问题。 Java SecurityManager可能会阻止与数据库或SecurityManager的网络连接,而我在写入备份目录时遇到权限问题。

摘要

备份Derby数据库非常容易。 只需调用SYSCS_UTIL.SYSCS_BACKUP_DATABASE('/location/of/the/backup/')

参考资料

备份数据库。 (2013年1月24日)。 db.apache.org。 从https://db.apache.org/derby/docs/10.0/manuals/admin/hubprnt43.html检索。

翻译自: https://www.javacodegeeks.com/2018/11/derby-database-backup.html

derby数据库的数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet中获取请求行的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request; /*** 获取请求行的数据** author liaowenxiong* date 2021/12/29 09:22*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import j…

没有内存条电脑能开机吗_开机键过时了!3种电脑开机方法,能让你睡懒觉的技术还不快来学...

电脑开机谁都会,按下电源键等他几十秒就好。不过还有其他的开机方式,有的能让你睡懒觉,有的能让你炫技,还有更多创意等你发挥,想不想来尝试一下呢?能睡懒觉的定时开机如果有每天定时开机的需求,…

c语言编程数独游戏,编程做数独游戏

数独游戏非常好玩,可以训练玩家的逻辑推理能力。数独游戏的规则是:1.在99的大九宫格内,已给定若干数字,其他宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。2.必须满足的条件&…

反引号包裹反引号_五个金色反引号

反引号包裹反引号五种琴弦 从Java 1.0开始,我们就有了字符串文字"like this" 。 我们还想要其他什么字符串? 其他编程语言为我们提供: 表达式插值: s"I am ${age - 10} years old." 插值格式: f…

c语言iota怎么用,C++ std::iota用法及代码示例

存储顺序递增分配val的[first,last]个连续值范围内的每个元素,就像在写入每个元素之后以 val递增。模板:void iota (ForwardIterator first, ForwardIterator last, T val);参数:first, lastForward iterators to the initial and…

web自动化如何在不同浏览器运行_自动化决策环节的“心脏”将如何与众不同?...

原标题:自动化决策环节的“心脏”将如何与众不同?原宝钢研究院首席研究员郭朝晖博士认为:自动化本质是感知、决策和执行的统一自动化的理论基础是控制论。控制论诞生时,控制论之父维纳思考了这样一个问题:机器和人(动物…

Servlet中获取请求头的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request;/*** 获取请求头的数据** author liaowenxiong* date 2021/12/29 11:21*/ import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; import java.ut…

jdk8 :: 什么意思_JDK 13:什么是AggressiveOpts?

jdk8 :: 什么意思JVM 11中已弃用Java VM标志-XX:AggressiveOpts [请参见JDK-8199777和JDK-8199778 ]“因为其行为是不明确的。” JDK-8199778的“问题”部分进一步解释了(我强调了 ): AggressiveOpts已被用作实现各种实验性能功能的一种包罗…

c语言递归函数检测回文,在C中使用递归函数的回文测试

我试图编写用于测试字符串的程序,如果它是回文或不是,但我总是得到输出,因为它不是一个。我的代码有什么问题?在C中使用递归函数的回文测试#include #include int is_palindrome(int start, int end, char *str){if (str[start] !…

获取macos mojave_高仿MacOS教程

“潮办公”关注我们拥有一台MacBook是很多人的梦想,但是高昂的售价成功逼退了一大波人。MacBook一直以颜值高、轻薄、系统流畅而出名,那么其他的小伙伴们想体验一波苹果系统怎么办?这个软件或许能帮你。Part 1安装Mydockmydock是windows下的一…

Servlet中防止盗链的代码

package priv.lwx.javaex.servlet_demo.web.servlet.request;/*** 获取referer,防止盗链** author liaowenxiong* date 2021/12/29 11:21*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpSer…

android wtf_WTF连接池

android wtf让我们谈谈连接池。 我声称: 大多数流行的连接池的默认设置都很差! 对您来说,这意味着: 去查看您的连接池设置。 如果您依赖默认设置,则可能会遇到问题。 您可能有内存泄漏和应用程序无响应&#xff08…

c语言实验5上机刘若慧2017年,《《 C语言程序设计案例教程》》.ppt

《《 C语言程序设计案例教程》》.ppt课堂练习: 7、求三个整数之和: 1 只用main函数 2 用求两个整数之和的函数实现 main int a, b, c, sum; scanf “%d, %d,%d”, &a, &b, &c ; sum abc; printf “sum %d\n”,sum ; printf “%d%…

c++ vs 输出log到窗口_欧冠豪门碰撞,尤文vs巴萨,曼联vs红牛

点击上方蓝色字关注我们 “ 欧冠第二轮昨日完成8场比赛,3胜3平2负,各队保平争胜策略明显。今日各豪门再出发,竞彩推出4场热门比赛。热门014尤文vs巴萨,015曼联vs莱比锡红牛。”01—周三014 欧冠 尤文图斯vs巴塞罗那 2020-10-29 04…

Servlet中判断浏览器版本的代码

package priv.lwx.javaex.servlet_demo.web.servlet.request;/*** 获取user-agent,判断浏览器版本** author liaowenxiong* date 2021/12/29 11:21*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.htt…

jakarta ee_在等待Jakarta EE时

jakarta ee自Oracle在JavaOne 2017宣布将Java™EE转移到Eclipse Foundation以来已有一年多了。此后,发生了很多事情: Java™EE 8 API和实现项目已在EE4J下建立 。 Eclipse GlassFish 5.1 即将发布 。 全新的Jakarta EE规范流程指日可待。 社区显示出…

c语言解析分隔符文本,c – 使用分隔符读取文件

正如其他两个答案所指出的那样,你必须使用std :: getline,但这就是我要做的:if (std::getline(is, zipcode, ,) &&std::getline(is, city, ,) &&std::getline(is, state)){d.zipCode std::stoi(zipcode);}我做的唯一真正的改变是我将提取包含在if语…

很高兴加入 英文_XR车载公司Holoride加入高通XR计划

原标题:XR车载公司Holoride加入高通XR计划XR车载公司Holoride进来了高通的Qualcomm XR Eneerprise决策 你大约没有听说过holoride,但你势必听说过高通公司。下面我们就来看看Holoride,他是一家确立两年的XR车载公司,起劲于提供家用…

Servlet中获取请求体的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request;/*** 获取请求体的数据** author liaowenxiong* date 2021/12/29 11:21*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import ja…

go语言var 和make_Var和语言设计

go语言var 和makeJava中的var是什么 在Java 10中引入的var预定义类型使您可以在为变量分配值时声明局部变量,而无需指定变量的类型。 当给变量赋值时,表达式的类型已经定义了变量的类型,因此没有理由在行的左侧再次键入类型。 例如&#xff0…