moving to a new server

Sam Lander January 13, 2016

My hosting provider has gone broke.

I need to move Jira+Crucible+PLugins and addons +... to a new home

Old home: Centos6 + Jira6.4.7 + MySQL

New home: I can choose what I want

The pressing factor is time. I don't have enough of that.

I am thinking:

  1. Build a new host. Keep everything at the current versions if possible. 
  2. Connect VPN to new host
  3. stop JIRA and MySQL
  4. Backup db, /opt/atlassian, ...
  5. Restore same
  6. Disconnect new host from internet to 'defang' it 
  7. Start db and JIRA
  8. Test from  VPN

 

My question: IF I am intentionally avoiding upgrades, will this approach work or ... work well-enough?

 

4 answers

1 accepted

0 votes
Answer accepted
Sam Lander January 26, 2016

Wow Nic, you are a ninja! I imagined I was all alone here.

My sequence was:

Notifcations off

start-jira.sh

checks: attachments OK, issue crate OK, add attachment, comment existing ticket (some things that require a DB write). Tailing the log - all ok except for warnings about mail being off

stop-jira.sh

vim setenv.sh (enable notifications)

start-jira.sh

errors.

Here is the top part:

at com.xiplink.jira.git.ao.dao.GitRepositoryDaoImpl.processAll(GitRepositoryDaoImpl.java:153)
    at com.xiplink.jira.git.MultipleGitRepositoryManagerImpl.loadGitManagersFromDatabase(MultipleGitRepositoryManagerImpl.java:143)
2016-01-26 22:17:22,883 localhost-startStop-1 WARN      [NoModule] Could not find JDBC driver class named com.mysql.jdbc.Driver.

2016-01-26 22:17:22,884 localhost-startStop-1 WARN      [NoModule] 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver not found from bundle [com.xiplink.jira.git.jira_git_plugin]
    at org.springframework.osgi.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:103)
    at org.springframework.osgi.util.BundleDelegatingClassLoader.loadClass(BundleDelegatingClassLoader.java:156)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

The caused by

 

at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy2962.stream(Unknown Source)
    at com.xiplink.jira.git.ao.dao.GitRepositoryDaoImpl.processAll(GitRepositoryDaoImpl.java:153)
    at com.xiplink.jira.git.MultipleGitRepositoryManagerImpl.loadGitManagersFromDatabase(MultipleGitRepositoryManagerImpl.java:143)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:772)
    at org.apache.felix.framework.ModuleImpl.access$200(ModuleImpl.java:73)
    at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1690)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:634)
    at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1594)

and the end

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
    at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at com.sun.proxy.$Proxy2962.stream(Unknown Source)
    at com.xiplink.jira.git.ao.dao.GitRepositoryDaoImpl.processAll(GitRepositoryDaoImpl.java:153)
2016-01-26 22:19:23,128 localhost-startStop-1 ERROR      [ofbiz.core.entity.ConnectionFactory] ******* ERROR: No database connection found for helperName "defaultDS"
Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 26, 2016

Answers emails people who have participated smile

The problem you've got here appears to be from a git related plugin - https://marketplace.atlassian.com/plugins/com.xiplink.jira.git.jira_git_plugin/server/overview

It sounds like the rest of JIRA is working, so a quick test before we go off chasing the wrong thing down the wrong rabbit-hole...

Can you disable this plugin (not remove, just disable) and see if the errors go away?

Sam Lander January 26, 2016

Sorry to be dim, but I am not sure where to do that ... grepping ... googling

 

Sam Lander January 26, 2016

mv var/atlassian.../plugins/<blah>git<blah>.jar <blah>._disabled_jar_ ?

 

Sam Lander January 26, 2016

Trying that and a start-jira.sh now

 

Sam Lander January 26, 2016

Here is the quote from near the top of the log:

xom-*.jar
     user.country                                  : US
     user.dir                                      : /opt/atlassian/jira/bin
     user.home                                     : /home/jira
     user.language                                 : en
     user.name                                     : jira
     user.timezone                                 : Australia/Sydney

2016-01-26 22:37:59,693 localhost-startStop-1 INFO      [atlassian.jira.startup.JiraHomeStartupCheck] The jira.home directory '/var/atlassian/application-data/jeenee-jira' is validated and locked for exclusive use by this instance.
2016-01-26 22:37:59,702 localhost-startStop-1 INFO      [jira.config.database.SystemDatabaseConfigurationLoader] Reading database configuration from /var/atlassian/application-data/jeenee-jira/dbconfig.xml
2016-01-26 22:37:59,815 localhost-startStop-1 INFO      [atlassian.jira.startup.JiraStartupLogger] Running JIRA startup checks.
2016-01-26 22:37:59,815 localhost-startStop-1 INFO      [atlassian.jira.startup.JiraStartupLogger] JIRA pre-database startup checks completed successfully.
2016-01-26 22:38:00,646 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Product Name is MySQL
2016-01-26 22:38:00,647 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Product Version is 5.1.73
2016-01-26 22:38:00,647 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Driver Name is MySQL Connector Java
2016-01-26 22:38:00,647 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Driver Version is mysql-connector-java-5.1.26 ( Revision: ${bzr.revision-id} )
2016-01-26 22:38:01,609 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Product Name is MySQL
2016-01-26 22:38:01,609 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Product Version is 5.1.73
2016-01-26 22:38:01,609 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Driver Name is MySQL Connector Java
2016-01-26 22:38:01,609 localhost-startStop-1 INFO      [core.entity.jdbc.DatabaseUtil] Database Driver Version is mysql-connector-java-5.1.26 ( Revision: ${bzr.revision-id} )
2016-01-26 22:38:02,393 localhost-startStop-1 INFO      [jira.config.database.DatabaseConfigurationManagerImpl] Now running Database Checklist Launcher
2016-01-26 22:38:03,628 localhost-startStop-1 INFO      [atlassian.jira.startup.DatabaseChecklistLauncher] JIRA database startup checks completed successfully.
2016-01-26 22:38:03,629 localhost-startStop-1 INFO      [jira.config.database.DatabaseConfigurationManagerImpl] Now running Post database-configuration launchers
2016-01-26 22:38:04,634 localhost-startStop-1 INFO      [jira.config.database.SystemDatabaseConfigurationLoader] Reading database configuration from /var/atlassian/application-data/jeenee-jira/dbconfig.xml
2016-01-26 22:38:05,216 localhost-startStop-1 ERROR      [atlassian.jira.tenancy.PluginKeyPredicateLoader] Could not read tenant-smart pattern file '/opt/atlassian/jira/atlassian-jira/WEB-INF/classes/tenant-smart-patterns.txt' (using defaults)
2016-01-26 22:38:05,547 localhost-startStop-1 INFO      [atlassian.jira.startup.DatabaseLauncher] Database transactions enabled: true
2016-01-26 22:38:05,548 localhost-startStop-1 INFO      [atlassian.jira.startup.DatabaseLauncher] Using JIRA's default for database transaction isolation level: 2
2016-01-26 22:38:05,564 localhost-startStop-1 INFO      [atlassian.jira.startup.JiraStartupLogger] 

Database configuration OK

___ Database Configuration _________________

     Loading entityengine.xml from                 : file:/opt/atlassian/jira/atlassian-jira/WEB-INF/classes/entityengine.xml
     Entity model field type name                  : mysql
     Entity model schema name                      : 
     Database Version                              : MySQL - 5.1.73
     Database Driver                               : MySQL Connector Java - mysql-connector-java-5.1.26 ( Revision: ${bzr.revision-id} )
     Database URL                                  : jdbc:mysql://localhost:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=storage_engine=InnoDB
     Database JDBC config                          : mysql jdbc:mysql://localhost:3306/jiradb?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=storage_engine=InnoDB

2016-01-26 22:38:05,660 localhost-startStop-1 INFO      [atlassian.jira.startup.ClusteringChecklistLauncher] JIRA clustering startup checks completed successfully.
2016-01-26 22:38:05,672 localhost-startStop-1 INFO      [atlassian.jira.startup.JiraStartupLogger] 

___ Starting the JIRA Plugin System _________________

2016-01-26 22:38:05,673 localhost-startStop-1 INFO      [atlassian.plugin.manager.DefaultPluginManager] Plugin system earlyStartup begun

... which looks nice, I thinkk.

Sam Lander January 26, 2016

and, (woo, cautiously) it looks like I have a start! checking ...

Sam Lander January 26, 2016

good so far ... ticket created, sysadmin is OK, comment existing ticket OK, tailing catalina.out... all looks good (except notifications are off)

Stopping and turning on Notifications (fingers crossed)

 

Sam Lander January 26, 2016

Oh that looks MUCH better. I think I couldn't care less about git integration tonight. Checking and check-pointing my work.

 

Sam Lander January 26, 2016

Nic, also, sorry, I see that I have completely ruined the flow of this ticket. Sorry about that. I am trying to give you points for being completely helpful and fantastic though.

Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 26, 2016

Not at all.  I thought you had JIRA running, but throwing errors, so I was assuming you could go to the plugin manager and disable it, but it sounds like you couldn't get that far.  So nice catch on removing it from the file system!

 

0 votes
Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 26, 2016

Ok, you might need to check your database setup and connections, but we could do with a good chunk more of the log - to see what it was trying to do when it failed to hit the database.

0 votes
Sam Lander January 26, 2016

All tested well (twice), but then I enabled notifications and got:

java.lang.ClassNotFoundException: com.mysql.jdbc.

and my log says "DB OK" back near the top....

I wonder if JEMH is confusing things?

0 votes
Phill Fox
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 13, 2016

Yes your method will work as an approach to moving hosts. I would do at least one practice run before you make the final change to ensure that there are no hidden surprises to your approach. You can use your local hosts file to change your connection to the new host whilst still retaining the same urls.

Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 13, 2016

This is a good guide to JIRA, and the principles are similar for Crucible. It's a bit long, and looks scary, but it is trying to cover all the possible options. And you don't have to do the bit about "turn off old servers" until you're happy that the new ones are working. For this case, you're absolutely right to avoid upgrades. They can be easy to integrate with server moves, but if you have a time constraint, stick with the same versions as it'll keep the job easier and quicker. https://confluence.atlassian.com/jira/migrating-jira-to-another-server-151126305.html

Suggest an answer

Log in or Sign up to answer