Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
Bastien_Laugiero

Hi everyone,

For various and valid reasons, you might need to migrate your entire Qlik Sense environment, or part of it, somewhere else.

In this post, I’ll cover the most common scenario: a complete migration of a single or multi-node Qlik Sense system, with the bundled PostgreSQL database (Qlik Sense Repository Database service) in a new environment.

So, how do we do that?

 

 

Introduction and preparation

Let’s start with a little bit of context: Say that we are running a 3 nodes Qlik Sense environment (Central node / Proxy-Engine node / Scheduler node).

On the central node, I also have the Qlik shared folder and the bundled Qlik Sense Repository Database installed.

This environment has been running well for years but I now need to move it to a brand new hardware ensuring better performance. It’s not possible to reinstall everything from scratch because the system has been heavily used and customized already. Redoing all of that to replicate the environment is too difficult and time-consuming.  

I start off with going through a checklist to verify if the new system I’m migrating to is up to it:

And then I move right over to…

 

Backup your old environment

The first step to migrate your environment in this scenario is to back it up.

To do that, I would recommend following the steps documented on help.qlik.com (make sure to select your Qlik Sense version top left of the screen).

https://help.qlik.com/en-US/sense/April2019/Subsystems/PlanningQlikSenseDeployments/Content/Sense_De...

Once the backup is done you should have:

  • A backup of the database in .tar format
  • A backup of the content of the file share which includes your applications, application content, archived logs, extensions,…
  • Backups of any data source files that need to be migrated and are not stored in the shared folder like QVDs

Then we can go ahead and…

 

Deploy and restore the new central environment

The next steps are to deploy and restore your central node. In this scenario, we will also assume that the new central node will have a different name than the original one (just to make things a bit more complicated 😊).

Let’s start by installing Qlik Sense on the central node. That’s as straightforward as any other fresh install.

You can follow our documentation. Before clicking on Install simply uncheck the box “Start the Qlik Sense services when the setup is complete.

The version of Qlik Sense you are going to install MUST be the same as the one the backup is taken on.

Now that Qlik Sense is deployed you can restore the backup you have taken earlier into your new Qlik Sense central node following Restoring a Qlik Sense site.

Since the central node server name has also changed, you need to run a Bootstrap command to update Qlik Sense with the new server name. Instruction provided in Restoring a Qlik Sense site to a machine with a different hostname.

The central node is now almost ready to start.

If you have changed the Qlik Share location, then the UNC path has also changed and needs to be updated.

To do that:

  1. Go to C:\Program Files\Qlik\Sense\Repository\Util\QlikSenseUtil
  2. Run QlikSenseUtil.exe as Administrator
  3. Click on Connect to the database and enter the credential to connect to the new PostgreSQL database
  4. Click on Service Cluster and press OK. This should display the previously configured UNC Path
  5. You simply need to update each path, save and start/restart all the Qlik sense services.

    01.png

At this point make sure you can access the Qlik Sense QMC and Hub on the central node. Eventually, check that you can load applications (using the central node engine of course). You can also check in the QMC > Service Cluster that the changes you previously made have been correctly applied.

Troubleshooting tips: If after starting the Qlik Sense services, you cannot access the QMC and/or Hub please check the following knowledge article How to troubleshoot issue to access QMC and HUB

 

What about my rim nodes?

You’ve made it here?! Then congratulation you have passed the most difficult part.

If you had already running and configured rim nodes in your environment that you now need to migrate as well, you might not want to remove them from Qlik Sense to add the new ones since you will lose pretty much all the configuration you have done so far on these rim nodes.

By applying the following few steps I will show you how to connect to your “new” rim node(s) and keep the configuration of the “old” one(s).

Let’s start by installing Qlik Sense on each rim node like it was a new one.

The process is pretty much the same as installing a central node except that instead of choosing “Create Cluster”, you need to select “Join Cluster

Detailed instruction can be found on help.qlik.com: Installing Qlik Sense in a multi-node site

Once Qlik Sense is installed on your future rim node(s) and the services are started, we will need to connect to the “new” Qlik Sense Repository Database and change the hostname of the “old” rim node(s) to the “new” one so that the central node can communicate with it.

To do that install PGAdmin4 and connect to the Qlik Sense Repository Database. Detailed instruction in Installing and Configuring PGAdmin 4 to access the PostgreSQL database used by Qlik Sense or NPrinting knowledge article.

Once connected navigate to Databases > QSR > Schemas > public > Tables

You need to edit the LocalConfigs and ServerNodeConfigurations table and change the Hostname of your rim node(s) from the old one to the new corresponding one (Don’t forget to Save the change)

LocalConfigs table

02.png

 

ServerNodeConfigurations table

03.png

 

Once this is done, you will need to restart all the services on the central node.

When you have access back, login to the QMC and go to Nodes. Your rim node(s) should display the following status, “The certificate has not been installed

04.png

 

From this point, you can simply select the node, click on Redistribute and follow the instruction to deploy the certificates on your rim node. After a moment the status should change and you should see the services being up and running.

Do the same thing on the remaining rim node(s).

Troubleshooting tips: If the rim node status is not showing “The certificate has not been installed” it means that either the central node cannot reach the rim node or the rim node is not ready to receive new certificates.

Check that the port 4444 is opened between the central and rim node and make sure the rim node is listening on port 4444 (netstat -aon in command prompt).

Still no luck? You can completely uninstall Qlik Sense on the rim node and reinstall it.

 

Finalizing your migration

At this point, your environment is completely migrated and most of the stuff should work.

Data Connection

There is one thing to consider in this scenario. Since the Qlik Sense certificates between the old environment and the new one are not the same, it is likely that data connections with passwords will fail.  This is because passwords are saved in the repository database with encryption.  That encryption is based on a hash from the certs.  When the Qlik Sense self-signed cert is rebuilt, this hash is no longer valid, and so the saved data connection passwords will fail.  You will need to re-enter the passwords in each data connection and save.  This can be done in the QMC -> Data Connections.

See knowledge article: Repository System Log Shows Error "Not possible to decrypt encrypted string in database"

Licensing

Do not forget to turn off your old Qlik Sense Environment. As per your license agreement, you can only use one license per active Qlik Sense environment. Reach out to your account manager for more details.

 

Best practices

Finally, don’t forget to apply best practices in your new environment:

 

 

 

49 Comments
TomBond77
Creator III
Creator III

Thanks all for your replies

We have now our new server and I have created the shared folder outside of the c drive. 

Do I have to "rebuild" all subfolders of this shared folders manually or does the backup and restore do this work?

Thank you, Tom

 

921 Views
TomBond77
Creator III
Creator III

Hello ,

When installing QS on the new server you will be asked to create a new Database and a password must be given. Must this password be the same as for the current existing database on the server to be migrated? I think so, but would like to go 100%.

Backup of "old" server: https://help.qlik.com/en-US/sense-admin/August2022/Subsystems/DeployAdministerQSE/Content/Sense_Depl...

Under 3. and 4. the backup of the content is explained:

3. Make a backup of all of the content in the file share

4.Make a backup of any locations where content that supports the Qlik Sense environment may be kept (for example, QVD files created by load scripts).

Here we only have to copy the shared folder (with all subfolders) to a "backup" folder, am I right, or are there any other means to backup these objects?  Our QVD files are located under the shared folder. Therefore I think 4. is redundant, am I right?

Thank you, Tom

893 Views
jeremyseipel
Partner - Contributor III
Partner - Contributor III

@TomBond77 when you say shared folders, are you referring to the shared persistence folders, or do you mean the data folders (qvds, flat files, etc) used for your connections within Qlik?

You shouldn't have to recreate the folder structure for application-related data (qvds).  Just copy your old data over and once your old db is imported, assuming pathing stays the same, it should just work.  If pathing has changed, then I would edit the table in Postgres to repoint those data connections.  You could use a simple query to update all connections matching your parameters.  You could also do this manually in the Qmc, but I find the other method better.

In most cases when migrating from old to new, I will do a fresh install, allowing Qlik to create a new DB and shared persistence.  Then take steps to import the old db into the system (overwriting the new db), while at the same time repointing Qlik to use my existing shared persistence.  You can use the qlik utils to do the second step.

The password of the new DB doesn't have to match the old one.  You just need to know both so that you can drop the new and import the existing.  When you import the existing db, you will be using the original password for that db from your prior system.  I recommend using pgadmin for all db-related activities.  Command line is also an option, but it's super simple with pgadmin.

The files you move from old environment will essentially consist of:

  • Postgres Backup
  • Shared Persistence Backup
  • Data File Backup
  • Certificates (I don't always use the old certs, but I recommend backing up just to be safe).  There are some cases where using old certs makes sense.
  • ODBC section of registry if you have any local odbc.  This will save a manual recreation of all of these

 Make sure you also have passwords for all data connections in use.  It could be Windows ODBC, QlikODBC, etc.  

809 Views
TomBond77
Creator III
Creator III

Hi @jeremyseipel

Regarding the file share I am referring to 3. of this backup document:

I thought this is the folder which is created during the installation of the software.

How do you backup this folder? And what "other Shared Persistence folders"  do you mean? Where do I find them?

Regards, Tom

744 Views
TomBond77
Creator III
Creator III

Sorry, I have more questions 😞

I don't understand this phrase

When restoring your site, you must log in using an account that had the Root Admin role when the site was backed up. If you log in using a local admin account and the machine name is different, your permissions will not follow through.

Does it mean that I have to backup the old site with a Root Admin account and restore it with a Root Admin account too? It must be a Root Admin Account in Qlik, am I right?

Very confusing written the above Qlik explanation.

Thanks for clarifying.

Tom

708 Views
milton_forte
Partner - Contributor III
Partner - Contributor III
You edit UserDirectory for New hostname via PgAdmin, user table in QSR##-
Please type your reply above this line -##




------------------------------

*Milton Forte*

IT Support

milton.forte@in1.com.br

(11) 9 7369-8090
Classificação da Informação: [ ] Pública [ ] Uso Interno [ ] Restrita [ ]
Confidencial (PT) Esta mensagem pode conter informação confidencial ou
privilegiada, sendo seu sigilo protegido por lei. Se você não for
destinatário ou pessoa autorizada a receber esta mensagem, não utilize,
copie, divulgue ou tome qualquer outra ação baseada nessas informações. Se
você recebeu esta mensagem por engano, por favor, avise imediatamente ao
remetente e, em seguida, apague-a. Agradecemos sua cooperação. (US) This
message may contain confidential or privileged information and it is
confidentiality protected by law. If you are not the recipient or the
person authorized to receive this message you may not use, copy, disclose
or take any action based on this information. If you have received this
message in error please immediately notify the sender and then delete it.
Thanks for your cooperation.
657 Views
jeremyseipel
Partner - Contributor III
Partner - Contributor III

@TomBond77 for the section of the documentation below that you referenced, for backing up the fileshare, you are correct that it is not clear exactly what to back up. 

  • 3.  Make a backup of all of the content in the file share.

 

Go into Service Cluster in your QMC and make sure you backup/migrate from old to new the Root folder.  By moving this, you will get everything classified as "shared persistence"

 

The other files to backup would be the data drive qvds, which you can find by going into the "Data Connections" section of the qmc, setting it to show connection string, sorting by  name, and finding anything that uses a UNC path or drive letter.

 

One other thing to consider, which I didn't put in my prior post, is that any config file changes you might have made for any service should be replicated to the new servers as well. 

  • A common example of this would be the Engines settings.ini file since it is very common to add settings for AAALR or Telemetry.   C:\ProgramData\Qlik\Sense\Engine\Settings.ini
608 Views
TomBond77
Creator III
Creator III

Since the central node server name has also changed, you need to run a Bootstrap command to update Qlik Sense with the new server name. Instruction provided in Restoring a Qlik Sense site to a machine with a different hostname.

When will I do this? Before the restore or after the restore? I think by logic after the restore. Am I right?

521 Views
Sonja_Bauernfeind
Digital Support
Digital Support

Hello @TomBond77 This happens right after the restore, you are correct!

All the best,
Sonja 

480 Views
TomBond77
Creator III
Creator III

Thanks @Sonja_Bauernfeind 

Do we need to create the same user accounts for the installation of the software on the new server (with a different domain) as we already have on the server to be migrated?

Regards, Tom

 

 

 

364 Views