Limitations of Database Migration
The XML backup built into Confluence is not well suited for database migration for large data sets (see Production Backup Strategy for reference). If the procedures below do not work, use a commercial database migration tool. |
Database Migration
This document outlines how to migrate your data from your existing database to another database. It is designed for migrating from an evaluation to a production database. Large data sets will require third party database migration tools. You should use this method when moving from the embedded DB to an external DB, or from one type of external DB to another (e.g. Oracle to Postgres).
If you are simply moving your DB from one server to another you can just change the JDBC URL in <confluence.home>/confluence.cfg.xml (if you are using a direct JDBC connection) or in the definition of your datasource (if you are connecting via a datasource). |
There are two ways you can perform the migration:
- Method one is the standard procedure.
- For large installations of Confluence using version 2.2 or later: If the total size of attachments on your installation exceeds 500MB, use method two.
On this page:
- Method One - Standard Procedure
- Step One: Backing up your data
- Step Two: Configuring the Confluence Home Directory
- Step Three: Setting up the new database
- Step Four: Setting up Confluence with the new database
- Method Two - For large installations
- Step One: Backing up your data
- Step Two: Configuring the Confluence Home Directory
- Step Three: Moving your attachments
- Step Four: Setting up new database
- Step Five: Setting up Confluence with the new database
- A Note about Case Sensitivity in your Database
- Troubleshooting
Method One - Standard Procedure
Step One: Backing up your data
- Create a backup of your existing data. This is done from the Administration Console. Instructions on how to create a backup can be found here.
- Shut down and backup the Confluence Home Directory.
- If you are already using an external database, please make a backup of it using the utilities that were installed with it.
Note which plugins are currently installed/enabled, so that you can reinstate them later. |
Step Two: Configuring the Confluence Home Directory
- Create a new Confluence Home Directory. You can place this directory anywhere you like and give it a name of your choice.
- Open WEB-INF/classes/confluence-init.properties file in your Confluence installation and change the confluence.home property to point to this new Confluence Home Directory.
Step Three: Setting up the new database
Perform the database setup instructions for your database.
Step Four: Setting up Confluence with the new database
If your databases are not already configured for Confluence, refer to Database Configuration to setup your database access.
- Make sure that the JDBC drivers for your database are available to the application server. If you don't already have the JDBC driver, please download one from here.
- Make sure that your database is using a case-sensitive collation. Please refer to the section on case sensitivity below and see this issue for more details: CONF-7917.
- If you are running the Confluence distribution, copy your JDBC database driver (a .jar file), into the
<confluence-install>/libfolder. - Start up Confluence. You will see the Confluence Setup Wizard.
- Select 'Custom Install'.
- Select your database from the drop down list.
- Select 'Direct JDBC' and then enter the details of the new database you want to migrate to.
Read the documentation on the Setup Wizard for more detailed explanation. - When prompted, restore the contents of the backup you made in Step One into the new Confluence site
Your old Confluence data will now be imported to your new database.
Method Two - For large installations
Step One: Backing up your data
- Before proceeding with these instructions please check that:
- you are upgrading from at least Confluence version 2.2 and
- your attachments are stored in the file system, and not in your database. (To migrate between attachment storage systems, please see Attachment Storage Configuration)
These instructions will not work if either of the above is not true.
- From Confluence, go to
Administration -> Backup & Restoreand create a manual backup that excludes attachments. - Shut down and back up the Confluence Home Directory.
- If you are already using an external database, please make a backup of it using the utilities that were installed with it.
Step Two: Configuring the Confluence Home Directory
- Create a new Confluence Home Directory. You can place this directory anywhere you like and give it a name of your choice.
- Open WEB-INF/classes/confluence-init.properties file in your Confluence installation and change the confluence.home property to point to this new Confluence Home Directory.
Step Three: Moving your attachments
Move the contents of your attachments directory from your old Confluence Home to your new Confluence Home.
Step Four: Setting up new database
Perform the database setup instructions for your database.
Step Five: Setting up Confluence with the new database
If your databases are not already configured for Confluence, refer to Database Configuration to setup your database access.
- Make sure that the JDBC drivers for your database are available to the application server. If you don't already have the JDBC driver, please download one from here.
- Make sure that your database is using a case-sensitive collation. Please refer to the section on case sensitivity below and see this issue for more details: CONF-7917.
- If you are running the Confluence distribution, copy your JDBC database driver (a .jar file), into the
<confluence-install>/libfolder. - Start up Confluence. You will see the Confluence Setup Wizard.
- Select 'Custom Install'.
- Select your database from the drop down list.
- Select 'Direct JDBC' and then enter the details of the new database you want to migrate to.
Read the documentation on the Confluence Setup Wizard for more detailed explanation. - When prompted, restore the contents of the backup you made in Step One into the new Confluence site.
A Note about Case Sensitivity in your Database
'Collation' refers to a set of rules that determine how data is sorted and compared. Case sensitivity is one aspect of collation. Other aspects include sensitivity to kana (Japanese script) and to width (single versus double byte characters).
Case sensitive or case insensitive collation – how should you create your Confluence database? What about when you are migrating your existing Confluence instance from one database to another?
Setting up a New Confluence Instance
For new Confluence instances, we recommend using case sensitive collation for your Confluence database. This is the default collation type used by many database systems.
Note: Even if the database is configured for case sensitive collation, Confluence reduces all usernames to lower case characters before storing them in the database. For example, this means that 'joebloggs', 'joeBloggs' and 'JoeBloggs' will be treated as the same username.
Migrating an Existing Confluence Instance to a Different Database
The default Confluence configuration uses case sensitive database collation. This is typical of databases created under default conditions. If you are migrating from this type of configuration to a new database, we recommend that the new database uses case sensitive collation. If you use case insensitive collation, you may encounter data integrity problems after migration (for example, via an XML import) if data stored within your original Confluence site required case sensitive distinctions.
Troubleshooting
If you're unable to restore your XML backup, consult our Troubleshooting Guide.
RELATED TOPICS
|
Page:
Migrate to Another Database
|
|
Page:
Confluence Configuration Guide
|









14 Comments
Hide/Show CommentsApr 20, 2009
Martin Blazek
Hi, instructions on this page contradict what is said here.
The difference is in the location of the JDBC driver. This page says:
The PostgreSQL documentation says:
Apr 21, 2009
Arie Murdianto
Hi,
You can use both instructions and Confluence should not be complaining anything if you put the driver in either in <Confluence install>/confluence/WEB-INF/lib or <Confluence install>/lib. If you put it to <Confluence install>/lib, it is accessible to any applications which is deployed in the same application server as your Confluence instance. if you put the driver to <Confluence install>/WEB-INF/lib, the driver is only meant for Confluence only.
Cheers,
Apr 21, 2009
Martin Blazek
Hi Arie, and thanks a lot for a prompt and competent response!
Apr 23, 2009
Sorin Cristescu
I migrated from an Oracle DB to a PostgreSQL DB following this procedure. In the process, I lost all the custom themes / layouts and a lot of custom macro functionality. On the other hand, the procedure recommends a source DB backup is run using the specific DBMS-provided backup tools but it is not clear to me what use is this backup afterwards - am I wrong or the procedure above doesn't refer to this source DB backup anymore thereafter ?
Apr 23, 2009
Martin Blazek
Sorin, not sure I got your question right but as far as I know you MUST use an XML backup when migrating between databases (Oracle to Postgres in your case).
Apr 23, 2009
Sorin Cristescu
Thanks for your quick response
I believe I did an XML backup, although I'm not 100% sure ... which brings about another question : what would the rollback procedure look like ? I mean, imagine I'm not happy with the result of my migration and want to go back to using the previous DB - what should I do ? In my specific case, how can I go back to using my original Oracle instance (which still has everything in it, in terms of custom themes and layouts) ?
Apr 23, 2009
Martin Blazek
Atlassian always recommends that (when migrating) you first setup a system (Confluence, JIRA) in a test environment, make sure everything works to your satisfaction and only when happy you upgrade/migrate your live server.
Jun 04, 2009
Anonymous
Using ESF Database Migration Toolkit( http://www.easyfrom.net/download/ )
A toolkit migrates data across various database/file systems. Supporting Oracle, SQL Server, MySQL, PostgreSQL, MS-Access, MS-Excel, Firebird, CSV and so on.
Jun 18, 2009
Anonymous
Is there any other information on how to move to a different db but not a different type of db? For instance we are on an oracle db right now, but in development. We want to move to an oracle db that is production. All I see above is
Do we need to do anything with the confluence data directory? Is there anything we have to back up before this happens? or do we need to have our dba's copy and move the data over?Thanks in advance.
Jun 22, 2009
Azwandi Mohd Aris [Atlassian]
Hi,
The quote above is useful when you are moving to another database server only. If you would like to migrate the Confluence installation as well, you will need to follow the guidelines at Migrating Confluence Between Servers.
Cheers,
Azwandi
Aug 05, 2009
Andy Brook
For anyone wanting to migrate Jira or Confluence from one DB to another (same kind or different), I've just been able to use the Talend open source ETL tool to load all tables from one DB2/win32 instance of Confluence and map through to a Postgres/x86_64, it worked almost flawlessley (minor bug to workaround specific to bodycontent), new system started up first time, an very useful product if you ever need to do such stuff.
Apr 20, 2010
Jonas Sundman
Migrating from MySql to PostgreSQL can be done via csv files using {{select * into outfile ... }} and {{ copy ... from ... }}. To setup the database, I started from an empty instance and tweaked it to exactly match the source database regarding columns and column ordering. I was not able to move the plugin data, they had to be reinstalled in confluence. Further, the csv files had to be trimmed from trailing slashes.
Data unloading and loading takes only minutes, thus minimizing downtime as compared to the rather slow xml export in big installations.
Dec 22, 2011
Anonymous
i have existing database in oracle. i want to use that database (table and fields) for the jira. Is that possible? how mapping will be done?
Jan 02, 2012
Anonymous
Hi Confluence Team,
Where is the doco for migrating from an SQL2005 to an SQL2008 database with attachments stored in the database? I would like to move/migrate from our 2005 SQL server to a 2008 SQL server. Differnet servers and different database version but still SQL.
I did a search and looked on a few pages and in the comments but could not find anything that seems to match what I'm trying to do.
Thanks!
Add Comment