Author Topic: How to migrate a Qube supervisor  (Read 9203 times)


  • Administrator
  • *****
  • Posts: 493
How to migrate a Qube supervisor
« on: November 17, 2011, 04:24:48 PM »
Only attempt to migrate the databases between supervisors of the same version; if you're doing this to install a new supervisor and want to run the latest version of Qube! on the new supervisor, match versions between the supervisors first, and then upgrade the new supervisor once the databases have been migrated over to it.

If you're running Qube 6.0 or later, you will need to contact Sales at PipelineFX in order to get your Qube licenses moved over to the new machine.  They'll need a MAC address for the new supervisor host.

To migrate a Qube supervisor, you need to migrate both the MySQL databases and the job logs if the job logs are stored on the supervisor's local disk.  If your job logs are stored on the network you will not have to move them, simple set the supervisor_logpath on the new supervisor to point to the same network directory as the old supervisor.

I would start moving the job logs before you start migrating the MySQL databases, as the job logs will take longer to move.

Don't forget to duplicate any settings you've changed in the old supervisor's qb.conf.

To migrate the MySQL databases:

NOTE: The following instructions use the unix 'ls' command, so you I'd recommend installing cygwin on the old supervisor if it's a Windows machine.

Build the new supervisor up, install MySQL if it's a Linux host, then install the same version of Qube that you are running on the old supervisor, then stop the supervisor daemon on the new supervisor.

Now the new supervisor is ready to have the databases copied over. The trick is to build a mysqldump command that will only dump the *qube databases, then send them over the network to the new server.

First, on the new server you have to grant access to the root user from the old server.

On the new server, at the mysql> prompt:
Code: [Select]
GRANT ALL PRIVILEGES ON *.* TO 'root'@'' (replace the ip address in the command with the ip address of your old server)

Test the access from the original server:
Code: [Select]
mysql -u root -h <newHostName> -B -e "SELECT USER()"
It should return something like:
Code: [Select]
USER() root@
Now that you can access the MySQL server on the new supervisor from the MySQL server on the old supervisor, it's time to push the dump across from the old supervisor to the new one.

On the old supervisor:

You need to build a list of all the *qube databases. The simplest way is to 'cd' into the mysql data directory and list them with "ls"

Code: [Select]
cd /usr/local/mysql/data

\ls -d *qube pfx_dw pfx_stats
1qube  2qube  3qube  4qube  5qube  6qube  7qube  8qube pfx_dw pfx_stats qube

Note the use of the leading backslash on the 'ls' command. It's to skip any aliases or formatting operators that you usually pass to 'ls', to avoid having slahes on the end of the directory names. The output from the 'ls' command should look like the above.

Then the mysqldump command will look like:
Code: [Select]
mysqldump --opt --databases `\ls -d *qube pfx_dw pfx_stats` | mysql -u root -h <linux ip address> Those are backticks around the "\ls -d *qube" command. The backtick is the left-leaning single-quote below the ~ character on the keyboard.

The mysqldump should take quite a while to finish, and will print no output. A way to check if it's doing the right thing while it's running is to login to the mysql server on the new supervisor, and run:

Code: [Select]
mysql> SHOW DATABASES LIKE '%qube';

You should start to see some qube databases with numbers in front of them, like 12qube. Run the command every minute or so, and the list of databases should be growing.

Once the mysqldump command has finished on the original supervisor, you'll need to do a bit of maintenance on the new tables on the new supervisor.

On the new supervisor:
Code: [Select]
mysqladmin -u root flush-privileges mysqlcheck -u root --repair --all-databases Once that's done, you should start the supervisor (/etc/init.d/supervisor start).

Verify that the jobs are present:
Code: [Select]
qbjobs -u all
Verify that you can see the logs for a random job: :
Code: [Select]
qbout <someJobId>

« Last Edit: March 11, 2016, 10:13:23 PM by jburk »