Time for action - upgrading Cacti

  1. Create a backup of the database. The following command will back up the Cacti database to a file called cacti_backup.sql. You will be asked for the MySQL root password:
    mysqldump -u root -p --lock-tables --add-drop-table cacti > /root/cacti_backup.sql
  
  1. Change to the /var/www/html directory. From http://www.cacti.net, download the source for the version you want to upgrade to.
  2. Create the CACTIVERSION variable and set it to the current Cacti version:
    export NEWCACTIVERSION=1.1.28  
  1. Extract the file. This will create a new directory named cacti-1.1.28:
    cd /var/www/html
    wget https://www.cacti.net/downloads/spine/cacti-
spine-$NEWCACTIVERSION.tar.gz
tar -xzvf cacti-spine-$NEWCACTIVERSION.tar.gz
  1. Change to the newly-created directory and edit include/config.php. Change the database entries in there to match your installation.
  2. Before copying any files, you should stop the poller using the web interface. Go to Configuration | Settings and change to the Poller tab. Disable the poller by unchecking it:
  1. Copy some files from your existing installation to the new one:
cp /var/www/html/cacti/rra/* /var/www/html/cacti-$NEWCACTIVERSION/rra/ 
cp -u /var/www/html/cacti/scripts/* /var/www/html/cacti-$NEWCACTIVERSION/scripts/ 
cp -u -R /var/www/html/cacti/resource/* /var/www/html/cacti-$NEWCACTIVERSION /resource/ 
  1. Set the permissions on the log and rra folders:
cd /var/www/html/cacti-$NEWCACTIVERSION/ 
chown -R cactiuser.apache /var/www/html/cacti-$NEWCACTIVERSION/ 
chmod -R 775 rra/ log/ resource/ scripts/ cache/ 
setfacl -d -m group:apache:rw /var/www/html/cacti/rra 
setfacl -d -m group:apache:rw /var/www/html/cacti/log 
  1. Change the symbolic link to point to the new directory:
cd /var/www/html/ 
ln -fs cacti-$NEWCACTIVERSION cacti 
  1. As Cacti 1.x requires the timezone data to be present in the MySQL/MariaDB database, you will have to import it here as well when upgrading from the 0.8.8 version of Cacti:
mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/mysql_timezone.sql 
mysql -u root -p mysql < /tmp/mysql_timezone.sql 
  1. You will also have to grant access to the timezone tables using the following SQL statement:
GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost IDENTIFIED BY 'MyV3ryStr0ngPassword'; 
  1. The final upgrade process is done using the web interface. Point your browser to http://<yourserver>/cacti/install and follow the steps. Make sure you select Upgrade on the second page.
  2. If you are upgrading from 0.8.8 to 1.x, the upgrade process will take some time to complete depending on your Cacti installation size.
  3. You can now enable the poller again using the Cacti web interface.
  4. Once you have checked that everything is working fine, you can remove or archive the original Cacti directory.