Most components written for Joomla are written almost totally in PHP, with very little (if any) use of the database except for reading and writing data. This does not make use of the various performance features of the underlying database, and can be detrimental to the performance of the application. Of course it one is running on a machine that is running slow, one can always get a faster machine.
Issue Tracker is slightly different, in that it tries to make some use of the underlying database features. It uses database triggers upon the tables to ensure that all changes are auditable, and database procedures to handle the sample data load and removal. For that reason it is necessary to be more aware of database backup and restore functionality and what ever limitations it may have.
All systems should of course have a comprehensive backup and restore policy, but regrettably for many it is usually something that is an after thought or simply forgotten. We strongly recommend using a backup/restore component such as Akeeba Backup to protect your site.
Investigations have revealed that our preferred Backup and Restore component (Akeeba Backup) does not restore the database procedures or the table triggers by default. It is necessary to enter the configuration of the component and turn on the ’Backup Procedures, Functions and Triggers’ option. Even then this may not be sufficient, since a number of Hosting companies may not permit the user that Joomla uses to connect to the database the appropriate MySQL privileges to enable the viewing of database Procedures, Functions and Triggers. Of particular note is the database privilege ‘SHOW TRIGGERS’ which they are particularly loathe to grant.
This is not a problem specific to our chosen method all backup components are likely to require configuring similarly. There is another factor that has to be considered by those whose sites are hosted upon other vendors servers. Use of some database features is controlled by the use of database GRANTS. Not all third party hosting suppliers provide sufficient grants to the Joomla user, which connects to the database. This sometimes means that despite the backup mechanism being configured to backup all database objects, such as procedures, functions and triggers, the backup mechanism is still unable to ‘see’ the objects to include them in the backup media. One very specific grant used by MySQL databases is the ‘SHOW TRIGGERS’ privilege which is often not provided, meaning that database triggers are not in the backup media.
One work around to this problem, to get the ‘missing’ database objects back on Restored databases is to re-install the latest version of the product which will then recreate the triggers and procedures automatically. This is the recommended solution to use Issue Tracker on restored databases.
Important | |
---|---|
Issue Tracker version 1.4.2 has been modified to check the database privileges granted to the Joomla connection user. If the appropriate database privileges have not been granted those some objects would not be installed. Database procedures (MySQL privilege 'CREATE ROUTINE') are used to load and unload the sample data. If these procedures are not present in the database the sample data would not be available to load (or unload). Database views are used to simplify the code within the Smart Search (Finder) plugin. If not present in the database a longer query is used instead. Database triggers are used to provide a second line check for auditing table changes. If not available then only the component audit facility is used. |