SakaiCLE2.9数据库迁移
为什么80%的码农都做不了架构师?>>>
最近做了很多关于Sakai数据库迁移的工作,服务器和服务器之间,Oralcle和Mysql之间导来导去。尽管最后发现都是无用功,但把数据库迁移的过程记下来,也算没白忙活。
Oracle版本:Oracle11g2
Mysql版本:Mysql5.5.30
Sakai版本:CLE2.9.1
一、Oracle到Oracle
使用的工具:Navicat For Oracle
下载地址:http://pan.baidu.com/share/link?shareid=457377&uk=2819378455
可能要更新一下oci的版本,需要instantclient-sqlplus-win32-11.2.0.1.0.zip这个包(下载地址:http://pan.baidu.com/share/link?shareid=457381&uk=2819378455)
1.软件安装完成以后启动,选择Tools—Option,即可更新Oci及sqlplus的位置,如下图所示。
2.新建两个连接,一个是源服务器连接,一个是目标服务器连接,然后使用Data Transfer的功能,选择好Schema,需要迁移的表,视图,序列等,开始即可。如下图所示。
二、Mysql到Mysql
需要使用的工具:mysql-gui-tools-5.0-r17-win32.msi
下载地址:http://pan.baidu.com/share/link?shareid=457410&uk=2819378455
服务器与服务器之间的迁移使用该工具提供的MySQL Migration Toolkit即可完成,迁移过程在下面Oracle到Mysql的迁移中会详细介绍,这里类似。
一台服务器中数据库的复制,根据要求,要把名为system数据库完全复制到sakai数据库,由于一些外键的限制,使用phpMysqlAdmin工具提供的复制数据库的功能无法顺利完成,而使用该工具进行Backup,然后Restore就可以了。备份system数据库,然后restore到sakai数据库,就ok了,如下图所示。
三、Oracle到Mysql
实现不同服务器间不同数据库的迁移,特定此方法仅对Sakai的数据库迁移工作有效,因为Sakai在启动的时候可以自动把Mysql的表建立起来,就不用考虑Oracle到Mysql引起的字段不同的问题,只要把数据迁过来就行了。
需要使用的工具1:mysql-gui-tools-5.0-r17-win32.msi
下载地址:http://pan.baidu.com/share/link?shareid=457410&uk=2819378455
需要使用的工具2:phpMysqlAdmin
下载地址:http://pan.baidu.com/share/link?shareid=457429&uk=2819378455
(由于MySQL Migration Toolki不提供仅仅转移数据库结构的功能,所以需要用phpMysqlAdmin来完成)
0、准备工作:将sakai在mysql上的某个空库(如sakaitmp)的基础上运行,就会在sakaitmp中生成sakai的表,然后使用phpMysqlAdmin工具的复制数据库功能将sakaitmp库(注意要选择“仅结构”)复制到另外一个数据库(这个数据库的名字与oracle中需要迁移的schema名字相同),这样就把mysql中的表结构建好了。
1、打开MySQL Migration Toolkit工具,点击next,选择Direct Magration,然后next
2、配置源数据库(Oracle)与目标数据库(Mysql)的连接(地址,端口,用户名密码),选择需要迁移的Schema
3、点击details,选择需要迁移的表,视图等,如下图所示
4.设置参数,选择Multilanguage(sakai仅支持utf8),如下图
5.一直点next,到下一步,选择show all objects with messages,把advance展开,把每张表的建表语句都删掉(建表让Sakai在Mysql里自己做,这里不再做,需要删300多张表),apply change即可,如图所示。
6、后面一直next即可。这样既可完成Oracle到Mysql的迁移。
四、Sakai中资源的迁移
Sakai提供两种存放资源的方式,一种是放在数据库中,一种是放在文件系统中,放在文件系统中需要修改配置项(sakai.properties中):
bodyPath@org.sakaiproject.content.api.ContentHostingService = /app/elearndata
bodyVolumes@org.sakaiproject.content.api.ContentHostingService =vol1,vol2,vol3
如果已经放到数据库中了,想转移到文件系统中,就加上下面的配置项:
convertToFile@org.sakaiproject.content.api.ContentHostingService = true
但对于Oracle数据库好像不管用,参考这里报告的问题https://jira.sakaiproject.org/browse/KNL-164,
修改
/kernel/kernel-impl/src/main/java/org/sakaiproject/content/impl/DbContentService.java
这个代码即可(在kernel-impl)。下面是patch文件:
===================================================================
---src/main/java/org/sakaiproject/content/impl/DbContentService.java (revisão 236)
+++src/main/java/org/sakaiproject/content/impl/DbContentService.java (cópia de trabalho)
@@ -2724,12 +2724,10 @@try{
- Object clob = result.getObject(3);
- if(clob != null && clob instanceof byte[])
- {
- edit = new BaseResourceEdit();
- resourceSerializer.parse(edit, (byte[]) clob);
- }
+ Blob clob = result.getBlob(3);
+ edit = new BaseResourceEdit();
+ resourceSerializer.parse(edit, clob.getBytes(1L, (int) clob.length()));
+}
重新启动tomcat,就完成了资源从数据库到文件系统的转移,然后再迁移到别的机器上就方便了。只要把资源文件迁移到目标服务器相同的目录下即可。
转载于:https://my.oschina.net/immk/blog/127301
SakaiCLE2.9数据库迁移相关推荐
- MySQL基础之 恢复数据和数据库迁移
1.mysql命令或者source命令恢复数据 这两个命令在进行恢复数据的时候要检查是否创建数据库.如果数据库不存在,则恢复失败. 数据库迁移 1.相同版本的mysql数据库之间的迁移. mysqld ...
- 简单分析Flask 数据库迁移详情
本文给大家分享的是 Flask 数据库迁移详情,db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all() ...
- 数据库迁移_【干货分享】DM数据库迁移方法(物理迁移)
在数据库的维护过程中,可能涉及换服务器,或者需要现网数据库环境测试的情况,这时,最简单快速的办法就是将源数据库相关的文件拷贝到目标主机,然后注册数据库实例服务.这就是数据库的物理迁移过程,可以是从wi ...
- 数据库迁移用到的命令
//在程序包管理器控制台中执行以下语句,安装EntityFramework. PM> Install-Package EntityFramework //执行成功后,控制台应用程序代码结构中,添 ...
- 如何将本地数据库迁移到数据库上?
使用数据传输服务(DTS)将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作.接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上. 背景 DTS ...
- 用Kettle的一套流程完成对整个数据库迁移 费元星
原地址 :http://ainidehsj.iteye.com/blog/1735434 需求: 1.你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle. 2.你是否还在使用ke ...
- Oracle XTTS跨平台数据库迁移(从Unix迁移数据库到Linux)_Oracle数据库迁移项
Oracle数据库迁移教程04 Oracle XTTS跨平台数据库迁移实战 (真正超越OCP/OCM的项目实战系列教程) 本套风哥Oracle教程学习内容 1.Oracle XTTS技术基础知识 2. ...
- yii 执行指定迁移文件_Web 云开发 · 云开发数据库迁移指南
云开发数据库 云开发为我们提供了一个 JSON 文档型数据库(NoSQL),并集成了 「增删改查」 等 API,操作方便,简单易懂.并且相比传统数据库而言它具有「高性能的数据库读写服务」,「可以直接在 ...
- 使用容器和数据库克隆进行数据库迁移
SQL Server迁移在DBA的生命周期中是一个常量,SQL Server 2008的支持终结正在推动大量的迁移规划.数据库迁移通常涉及将备份还原到目标环境,为应用程序测试提供开发和QA环境,以及识 ...
最新文章
- 流行漏洞利用工具包瞄准Flash、Java和IE
- js调用html5cookie,CSS+JS+Cookie实现页脚固定广告展示
- python基础-分支判断语句(4)
- 【floyd模板】哈利·波特的考试 (25 分)
- python热部署_关于Spring Cloud 框架热部署的方法
- php实现身份证号码获取归属地地址的实列教程,含完整全国地区归属数据!
- WEB安全基础-WEB服务器相关知识
- linux 挂载和网络命令
- C++项目中编译部分C的代码
- talib python文档_TALib中文文档代码实现
- git mac 可视化diff_Git可视化比较工具P4Merge
- 删除重复节点(细节每太明白)
- 产品快速迭代的五大要点
- 记录蓝屏问题FAULTY_HARDWARE_CORRUPTED_PAGE
- 美爆!《自然》公布2018年19张最震撼的科学图片
- 101平衡模式 DIR的理解
- 还在期待安卓9.0吗?Android 10.0要来了
- 统计学中sp_统计学名词解释
- 51单片机LED模拟交通灯
- maven编译jar包时打一个瘦包,依赖包和配置文件到jar包外面
热门文章
- C++socket编程(三):3.1 TCP/IP协议特点
- 用python统计图片中的点_用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)...
- 服务器端添加网站,服务器添加网站
- php镂空窗,木窗镂空的雕刻象征着什么?黑色在彝族人民心中有何寓意?陆川猪为何是著名“陆川三宝”之一?...
- Node.js webpack webpack-dev-server
- Pandas Period
- ubuntu dpkg
- numpy.core.defchararray.join
- Linux进程间通信的方法和示例
- 如何查html病毒svchost.exe,小编教你在Win7系统中检查svchost.exe进程是否为病毒的方法步骤...