====== Upgrading from MySQL 5.7 to MySQL 8 ====== {{indexmenu_n>19}} ===== Prerequisites ===== To migrate from MySQL 5.7 to MySQL 8 you must be upgraded to at least PFMS **version NG 760 MR 52**. * Open a terminal window with the **root** user and enter the following command: mysql --version You will get an answer similar to the following: mysql Ver 14.14 Distrib 5.7.33, for Linux (x86_64) using EditLine wrapper * Perform a data backup procedure. See "[[:en:documentation:pandorafms:technical_annexes:07_backup_and_restore_procedures|Backup and recovery procedures]]" for details. ===== CentOS 7 ===== * Stop the PFMS server and the PFMS Software Agent: /etc/init.d/pandora_server stop /etc/init.d/pandora_agent_daemon stop * Stop the Apache web server: systemctl stop httpd.service Either: /etc/init.d/httpd stop * Make a special database backup that is compatible with MySQL 8: mysqldump -u root -p pandora \ --skip-add-drop-table \ --complete-insert \ --no-create-info> backup_pandora.sql * Make a backup as it is done in MySQL 5.7 (an additional insurance if you have to go back to this version): mysqldump -u root -p pandora> backup_pandora_5.7.sql * Back up the MySQL configuration file (''my.cnf''): cp /etc/my.cnf /tmp/my.cnf.BACK * Delete the Percona 5 repositories: rpm -qa | grep Percona-Server | xargs rpm -e --nodeps * Install the Percona 8 repositories: yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y * Enable the repositories from the previous step: percona-release setup ps80 * Install Percona 8 yum install percona-server-server * Restore the file ''my.cnf'': mv /tmp/my.cnf.BACK /etc/my.cnf * Modify the ''my.cnf'' file to dispense with ''query_cache_*'': sed -i -e "s/^query_cache_type.*/#query_cache_type/g" /etc/my.cnf sed -i -e "s/^query_cache_size.*/#query_cache_size/g" /etc/my.cnf sed -i -e "s/^query_cache_min_res_unit.*/#query_cache_min_res_unit/g" /etc/my.cnf sed -i -e "s/^query_cache_limit.*/#query_cache_limit/g" /etc/my.cnf * If **you do not have an HA environment**, disable the binary logs with the following command in the ''[mysqld]'' section: skip-log-bin See also "[[:en:documentation:pandorafms:complex_environments_and_optimization:08_optimization#check_mycnf_settings|Optimization and troubleshooting]]" for checking the ''my.cnf'' file. * Start the MySQL service: systemctl start mysql or: service mysqld start * Verify the version installed with: mysql --version You will get an answer similar to the following: mysql Ver 8.0.28-19 for Linux on x86_64 (Percona Server (GPL), Release 19, Revision 31e88966cd3) * Now use MySQL's own command line and: * Delete the ''pandora'' database. * Create a new ''pandora'' database. * Open the ''pandora'' database and import the schema found in the PFMS Web Console. * Import the data that special MySQL 8 compatible backup. mysql -u root -p pandora drop database pandora; create database pandora; use pandora; source /var/www/html/pandora_console/pandoradb.sql; source backup_pandora.sql; * The necessary permissions (grants) must be added again; //if you are not logged in// to ''mysql'' as **root** user (replace with the corresponding password) run: mysql -u root -p * **Once logged in as root execute the following commands:** * Deactivate the password validation plugin (optional). UNINSTALL COMPONENT 'file://component_validate_password'; * Create the login user if it does not exist: CREATE USER ""@'%' IDENTIFIED BY ""; //**Note**// : if you want to restrict the IP address of connection to the database, you must change the ''%'' to the IP address of the connection source. * Assign the native password for ''mysql'': ALTER USER ""@'%' IDENTIFIED WITH mysql_native_password BY ""; * Grant grants on Pandora FMS database (''pandora''): GRANT ALL PRIVILEGES ON pandora.* TO ""@'%'; * Save the changes and exit: flush privileges; exit Once you have finished working with the database, perform the following steps: * Start the PFMS server and the PFMS Software Agent: /etc/init.d/pandora_server start /etc/init.d/pandora_agent_daemon start * Start the Apache web server: systemctl start httpd.service Either: /etc/init.d/httpd start ===== Rocky Linux 8/AlmaLinux 8/RHEL 8 ===== * Stop the PFMS server and the PFMS Software Agent: /etc/init.d/pandora_server stop /etc/init.d/pandora_agent_daemon stop * Stop the Apache web server: systemctl stop httpd.service Either: /etc/init.d/httpd stop * Make a special database backup that is compatible with MySQL 8: mysqldump -u root -p pandora \ --skip-add-drop-table \ --complete-insert \ --no-create-info> backup_pandora.sql * Make a backup as it is done in MySQL 5.7 (an additional insurance if you have to go back to this version): mysqldump -u root -p pandora> backup_pandora_5.7.sql * Back up the MySQL configuration file (''my.cnf''): cp /etc/my.cnf /tmp/my.cnf.BACK * Delete the Percona 5 repositories: rpm -qa | grep Percona-Server | xargs rpm -e --nodeps * Install the Percona 8 repositories: dnf install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y * Enable the repositories from the previous step: percona-release setup ps80 * Install Percona 8 dnf install percona-server-server * Restore the file ''my.cnf'': mv /tmp/my.cnf.BACK /etc/my.cnf * Modify the ''my.cnf'' file to dispense with ''query_cache_*'': sed -i -e "s/^query_cache_type.*/#query_cache_type/g" /etc/my.cnf sed -i -e "s/^query_cache_size.*/#query_cache_size/g" /etc/my.cnf sed -i -e "s/^query_cache_min_res_unit.*/#query_cache_min_res_unit/g" /etc/my.cnf sed -i -e "s/^query_cache_limit.*/#query_cache_limit/g" /etc/my.cnf * If **you do not have an HA environment**, disable the binary logs with the following command in the ''[mysqld]'' section: skip-log-bin See also "[[:en:documentation:pandorafms:complex_environments_and_optimization:08_optimization#check_mycnf_settings|Optimization and troubleshooting]]" for checking the ''my.cnf'' file. * Start the MySQL service: systemctl start mysql or: service mysqld start * Verify the version installed with: mysql --version You will get an answer similar to the following: mysql Ver 8.0.28-19 for Linux on x86_64 (Percona Server (GPL), Release 19, Revision 31e88966cd3) * Now use MySQL's own command line and: * Delete the ''pandora'' database. * Create a new ''pandora'' database. * Open the ''pandora'' database and import the schema found in the PFMS Web Console. * Import the data that special MySQL 8 compatible backup. mysql -u root -p pandora drop database pandora; create database pandora; use pandora; source /var/www/html/pandora_console/pandoradb.sql; source backup_pandora.sql; * Start the PFMS server and the PFMS Software Agent: /etc/init.d/pandora_server start /etc/init.d/pandora_agent_daemon start * Start the Apache web server: systemctl start httpd.service Either: /etc/init.d/httpd start [[:en:documentation:start|Go back to Pandora FMS documentation index]]