mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-01 21:50:13 +08:00
328 lines
15 KiB
Markdown
328 lines
15 KiB
Markdown
translation by strugglingyouth
|
|
How to Install MariaDB 10 on CentOS 7 CPanel Server
|
|
================================================================================
|
|
|
|
MariaDB is a enhanced open source and drop-in replacement for MySQL. It is developed by MariaDB community and available under the terms of the GPL v2 license. Software Security is the main focus for the MariaDB developers. They maintain its own set of security patches for each MariaDB releases. When any critical security issues are discovered, the developers introduces a new release of MariaDB to get the fix out as soon as possible.
|
|
|
|
MariaDB is always up-to-date with the latest MySQL releases. It is highly compatible and works exactly like the MySQL. Almost all commands, data, table definition files, Client APIs, protocols, interfaces, structures, filenames, binaries, ports, database storage locations etc are same as the MySQL. It isn't even needed to convert databases to switch to MariaDB.
|
|
|
|
### Advantages of MariaDB ###
|
|
|
|
- Truly Open source
|
|
- More quicker and transparent security releases
|
|
- Highly Compatible with MySQL
|
|
- Improved Performance
|
|
- More storage engines compared to MySQL
|
|
|
|
In this article, I provides guidelines on how to upgrade MySQL 5.5 to the latest MariaDB on a CentOS 7 CPanel server. Let's walk through the Pre-installation steps.
|
|
|
|
### Pre-requisites: ###
|
|
|
|
#### 1. Stop current MySQL Service ####
|
|
|
|
root@server1 [/var/# mysql
|
|
Welcome to the MySQL monitor. Commands end with ; or \g.
|
|
Your MySQL connection id is 5859
|
|
Server version: 5.5.47-cll MySQL Community Server (GPL)
|
|
|
|
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
|
|
|
Oracle is a registered trademark of Oracle Corporation and/or its
|
|
affiliates. Other names may be trademarks of their respective
|
|
owners.
|
|
|
|
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
|
|
|
root@server1 [~]# systemctl stop mysql
|
|
root@server1 [~]# systemctl status mysql
|
|
● mysql.service - LSB: start and stop MySQL
|
|
Loaded: loaded (/etc/rc.d/init.d/mysql)
|
|
Active: failed (Result: exit-code) since Sun 2016-01-31 10:00:02 UTC; 1min 31s ago
|
|
Docs: man:systemd-sysv-generator(8)
|
|
Main PID: 23430 (code=exited, status=203/EXEC)
|
|
|
|
Jan 31 10:00:02 server1.centos7-test.com systemd[1]: Started MySQL Server.
|
|
Jan 31 10:00:02 server1.centos7-test.com systemd[1]: Starting MySQL Server...
|
|
Jan 31 10:00:02 server1.centos7-test.com systemd[1]: mysql.service: main process exited, code=exited, status=203/EXEC
|
|
Jan 31 10:00:02 server1.centos7-test.com systemd[1]: Unit mysql.service entered failed state.
|
|
Jan 31 10:00:02 server1.centos7-test.com systemd[1]: mysql.service failed.
|
|
|
|
#### 2. Move all configuration files and databases prior to the upgrade ####
|
|
|
|
Move the DB storage path and MySQL configuration files
|
|
|
|
root@server1 [~]# cp -Rf /var/lib/mysql /var/lib/mysql-old
|
|
|
|
root@server1 [/var/lib/mysql]# cat /etc/my.cnf
|
|
[mysqld]
|
|
default-storage-engine=MyISAM
|
|
innodb_file_per_table=1
|
|
max_allowed_packet=268435456
|
|
open_files_limit=10000
|
|
|
|
root@server1 [~]#mv /etc/my.cnf /etc/my.cnf-old
|
|
|
|
#### 3. Remove and uninstall all MySQL rpms from the server ####
|
|
|
|
Run the following commands to disable the MySQL RPM targets. By running this commands, cPanel will no longer handle MySQL updates, and mark these rpm.versions as uninstalled on the system.
|
|
|
|
/scripts/update_local_rpm_versions --edit target_settings.MySQL50 uninstalled
|
|
/scripts/update_local_rpm_versions --edit target_settings.MySQL51 uninstalled
|
|
/scripts/update_local_rpm_versions --edit target_settings.MySQL55 uninstalled
|
|
/scripts/update_local_rpm_versions --edit target_settings.MySQL56 uninstalled
|
|
|
|
Now run the this command:
|
|
|
|
/scripts/check_cpanel_rpms --fix --targets=MySQL50,MySQL51,MySQL55,MySQL56 to remove all existing MySQL rpms on the server and leave a clean environment for MariaDB installation. Please see its output below:
|
|
|
|
root@server1 [/var/lib/mysql]# /scripts/check_cpanel_rpms --fix --targets=MySQL50,MySQL51,MySQL55,MySQL56
|
|
[2016-01-31 09:53:59 +0000]
|
|
[2016-01-31 09:53:59 +0000] Problems were detected with cPanel-provided files which are RPM controlled.
|
|
[2016-01-31 09:53:59 +0000] If you did not make these changes intentionally, you can correct them by running:
|
|
[2016-01-31 09:53:59 +0000]
|
|
[2016-01-31 09:53:59 +0000] > /usr/local/cpanel/scripts/check_cpanel_rpms --fix
|
|
[2016-01-31 09:53:59 +0000]
|
|
[2016-01-31 09:53:59 +0000] The following RPMs are unneeded on your system and should be uninstalled:
|
|
[2016-01-31 09:53:59 +0000] MySQL55-client-5.5.47-1.cp1148
|
|
[2016-01-31 09:53:59 +0000] MySQL55-devel-5.5.47-1.cp1148
|
|
[2016-01-31 09:53:59 +0000] MySQL55-server-5.5.47-1.cp1148
|
|
[2016-01-31 09:53:59 +0000] MySQL55-shared-5.5.47-1.cp1148
|
|
[2016-01-31 09:53:59 +0000] MySQL55-test-5.5.47-1.cp1148
|
|
[2016-01-31 09:53:59 +0000] compat-MySQL50-shared-5.0.96-4.cp1136
|
|
[2016-01-31 09:53:59 +0000] compat-MySQL51-shared-5.1.73-1.cp1150
|
|
[2016-01-31 09:53:59 +0000] Removing 0 broken rpms:
|
|
[2016-01-31 09:53:59 +0000] rpm: no packages given for erase
|
|
[2016-01-31 09:53:59 +0000] No new RPMS needed for install
|
|
[2016-01-31 09:53:59 +0000] Disabling service monitoring.
|
|
[2016-01-31 09:54:01 +0000] Uninstalling unneeded rpms: MySQL55-test MySQL55-server MySQL55-client compat-MySQL51-shared compat-MySQL50-shared MySQL55-shared MySQL55-devel
|
|
[2016-01-31 09:54:04 +0000] Removed symlink /etc/systemd/system/multi-user.target.wants/mysql.service.
|
|
[2016-01-31 09:54:04 +0000] Restoring service monitoring.
|
|
|
|
With these steps, we've uninstalled existing MySQL RPMs, marked targets to prevent further MySQL updates and made the server ready and clean for the MariaDB installation.
|
|
|
|
To startup with the installation, we need to create a yum repository for MariaDB depending on the MariaDB & CentOS versions. This is how I did it!
|
|
|
|
### Installation procedures: ###
|
|
|
|
#### Step 1: Creating a YUM repository. ####
|
|
|
|
root@server1 [~]# vim /etc/yum.repos.d/MariaDB.repo
|
|
[mariadb]
|
|
name = MariaDB
|
|
baseurl = http://yum.mariadb.org/10.0/centos7-amd64/
|
|
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
|
|
gpgcheck=1
|
|
root@server1 [/etc/yum.repos.d]# cat /etc/yum.repos.d/MariaDB.repo
|
|
[mariadb]
|
|
name = MariaDB
|
|
baseurl = http://yum.mariadb.org/10.0/centos7-amd64/
|
|
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
|
|
gpgcheck=1
|
|
|
|
#### Step 2: Open the /etc/yum.conf and modify the exclude line as below: ####
|
|
|
|
**Remove this line** exclude=courier* dovecot* exim* filesystem httpd* mod_ssl* mydns* mysql* nsd* php* proftpd* pure-ftpd* spamassassin* squirrelmail*
|
|
|
|
**And replace with this line** exclude=courier* dovecot* exim* filesystem httpd* mod_ssl* mydns* nsd* proftpd* pure-ftpd* spamassassin* squirrelmail*
|
|
|
|
**\*\*\* IMPORTANT \*\*\***
|
|
|
|
We need to make sure, we've removed the MySQL and PHP from the exclude list.
|
|
|
|
#### Step 3: Run the following command to install MariaDB and related packages. ####
|
|
|
|
**yum install MariaDB-server MariaDB-client MariaDB-devel php-mysql**
|
|
|
|
root@server1 [~]#yum install MariaDB-server MariaDB-client MariaDB-devel php-mysql
|
|
|
|
Dependencies Resolved
|
|
|
|
===============================================================================================================================================
|
|
Package Arch Version Repository Size
|
|
===============================================================================================================================================
|
|
Installing:
|
|
MariaDB-client x86_64 10.0.23-1.el7.centos mariadb 10 M
|
|
MariaDB-devel x86_64 10.0.23-1.el7.centos mariadb 6.3 M
|
|
MariaDB-server x86_64 10.0.23-1.el7.centos mariadb 55 M
|
|
php-mysql x86_64 5.4.16-36.el7_1 base 99 k
|
|
Installing for dependencies:
|
|
MariaDB-common x86_64 10.0.23-1.el7.centos mariadb 43 k
|
|
MariaDB-shared x86_64 10.0.23-1.el7.centos mariadb 1.2 M
|
|
libzip x86_64 0.10.1-8.el7 base 48 k
|
|
php-common x86_64 5.4.16-36.el7_1 base 563 k
|
|
php-pdo x86_64 5.4.16-36.el7_1 base 97 k
|
|
|
|
Transaction Summary
|
|
===============================================================================================================================================
|
|
Install 4 Packages (+5 Dependent package)
|
|
|
|
#### Step 4: Restart and make sure the MySQL service is up. ####
|
|
|
|
root@server1 [~]# systemctl start mysql
|
|
root@server1 [~]#
|
|
root@server1 [~]#
|
|
root@server1 [~]# systemctl status mysql
|
|
● mysql.service - LSB: start and stop MySQL
|
|
Loaded: loaded (/etc/rc.d/init.d/mysql)
|
|
Active: active (exited) since Sun 2016-01-31 10:01:46 UTC; 3s ago
|
|
Docs: man:systemd-sysv-generator(8)
|
|
Process: 23717 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
|
|
Main PID: 23430 (code=exited, status=203/EXEC)
|
|
|
|
Jan 31 10:01:46 server1.centos7-test.com systemd[1]: Starting LSB: start and stop MySQL...
|
|
Jan 31 10:01:46 server1.centos7-test.com mysql[23717]: Starting MySQL SUCCESS!
|
|
Jan 31 10:01:46 server1.centos7-test.com systemd[1]: Started LSB: start and stop MySQL.
|
|
|
|
#### Step 5: Run mysql_upgrade command ####
|
|
|
|
It will examine all tables in all databases for incompatibilities with the current installed version and upgrades the system tables if necessary to take advantage of new privileges or capabilities that might have added with the current version.
|
|
|
|
root@server1 [~]# mysql_upgrade
|
|
MySQL upgrade detected
|
|
Phase 1/6: Checking and upgrading mysql database
|
|
Processing databases
|
|
mysql
|
|
mysql.columns_priv OK
|
|
mysql.db OK
|
|
mysql.event OK
|
|
mysql.func OK
|
|
mysql.help_category OK
|
|
mysql.help_keyword OK
|
|
mysql.help_relation OK
|
|
mysql.help_topic OK
|
|
mysql.host OK
|
|
mysql.ndb_binlog_index OK
|
|
mysql.plugin OK
|
|
mysql.proc OK
|
|
mysql.procs_priv OK
|
|
mysql.proxies_priv OK
|
|
mysql.servers OK
|
|
mysql.tables_priv OK
|
|
mysql.time_zone OK
|
|
mysql.time_zone_leap_second OK
|
|
mysql.time_zone_name OK
|
|
mysql.time_zone_transition OK
|
|
mysql.time_zone_transition_type OK
|
|
mysql.user OK
|
|
Phase 2/6: Fixing views from mysql
|
|
Phase 3/6: Running 'mysql_fix_privilege_tables'
|
|
Phase 4/6: Fixing table and database names
|
|
Phase 5/6: Checking and upgrading tables
|
|
Processing databases
|
|
cphulkd
|
|
cphulkd.auths OK
|
|
cphulkd.blacklist OK
|
|
cphulkd.brutes OK
|
|
cphulkd.good_logins OK
|
|
cphulkd.ip_lists OK
|
|
cphulkd.known_netblocks OK
|
|
cphulkd.login_track OK
|
|
cphulkd.logins OK
|
|
cphulkd.report OK
|
|
cphulkd.whitelist OK
|
|
eximstats
|
|
eximstats.defers OK
|
|
eximstats.failures OK
|
|
eximstats.sends OK
|
|
eximstats.smtp OK
|
|
information_schema
|
|
leechprotect
|
|
leechprotect.hits OK
|
|
modsec
|
|
modsec.hits OK
|
|
performance_schema
|
|
roundcube
|
|
roundcube.cache OK
|
|
roundcube.cache_index OK
|
|
roundcube.cache_messages OK
|
|
roundcube.cache_shared OK
|
|
roundcube.cache_thread OK
|
|
roundcube.contactgroupmembers OK
|
|
roundcube.contactgroups OK
|
|
roundcube.contacts OK
|
|
roundcube.cp_schema_version OK
|
|
roundcube.dictionary OK
|
|
roundcube.identities OK
|
|
roundcube.searches OK
|
|
roundcube.session OK
|
|
roundcube.system OK
|
|
roundcube.users OK
|
|
saheetha_test
|
|
saheetha_test.authors OK
|
|
whmxfer
|
|
whmxfer.sessions OK
|
|
Phase 6/6: Running 'FLUSH PRIVILEGES'
|
|
OK
|
|
|
|
#### Step 6 : Restart the MySQL service once again to ensure everything works perfect. ####
|
|
|
|
root@server1 [~]# systemctl restart mysql
|
|
root@server1 [~]#
|
|
root@server1 [~]# systemctl status mysql
|
|
● mysql.service - LSB: start and stop MySQL
|
|
Loaded: loaded (/etc/rc.d/init.d/mysql)
|
|
Active: active (running) since Sun 2016-01-31 10:04:11 UTC; 9s ago
|
|
Docs: man:systemd-sysv-generator(8)
|
|
Process: 23831 ExecStop=/etc/rc.d/init.d/mysql stop (code=exited, status=0/SUCCESS)
|
|
Process: 23854 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=0/SUCCESS)
|
|
Main PID: 23430 (code=exited, status=203/EXEC)
|
|
CGroup: /system.slice/mysql.service
|
|
├─23861 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/server1.centos7-test.com.pid
|
|
└─23933 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/v...
|
|
|
|
Jan 31 10:04:10 server1.centos7-test.com systemd[1]: Starting LSB: start and stop MySQL...
|
|
Jan 31 10:04:11 server1.centos7-test.com mysql[23854]: Starting MySQL. SUCCESS!
|
|
Jan 31 10:04:11 server1.centos7-test.com systemd[1]: Started LSB: start and stop MySQL.
|
|
|
|
#### Step 7: Run EasyApache to rebuild Apache/PHP with MariaDB and ensure all PHP modules remains intact. ####
|
|
|
|
root@server1 [~]#/scripts/easyapache --build
|
|
|
|
****IMPORTANT *****
|
|
If you forget to rebuild Apache/PHP after the MariaDB installation, it will report the library error as below:
|
|
|
|
root@server1 [/etc/my.cnf.d]# php -v
|
|
php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
|
|
|
|
#### Step 8: Now verify the installation and databases. ####
|
|
|
|
root@server1 [/var/lib/mysql]# mysql
|
|
Welcome to the MariaDB monitor. Commands end with ; or \g.
|
|
Your MariaDB connection id is 15
|
|
Server version: 10.0.23-MariaDB MariaDB Server
|
|
|
|
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
|
|
|
|
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
|
|
|
MariaDB [(none)]> show storage engines;
|
|
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|
|
| Engine | Support | Comment | Transactions | XA | Savepoints |
|
|
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|
|
| CSV | YES | CSV storage engine | NO | NO | NO |
|
|
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
|
|
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
|
|
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
|
|
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
|
|
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
|
|
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
|
|
| FEDERATED | YES | FederatedX pluggable storage engine | YES | NO | YES |
|
|
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
|
|
| Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO |
|
|
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
|
|
10 rows in set (0.00 sec)
|
|
|
|
That's all :). Now we're all set to go with MariaDB with its improved and efficient features. Hope you enjoyed reading this documentation. I would recommend your valuable suggestions and feedback on this!
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
via: http://linoxide.com/how-tos/install-mariadb-10-centos-7-cpanel/
|
|
|
|
作者:[Saheetha Shameer][a]
|
|
译者:[译者ID](https://github.com/译者ID)
|
|
校对:[校对者ID](https://github.com/校对者ID)
|
|
|
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|
|
|
[a]:http://linoxide.com/author/saheethas/
|