天天看點

在 CentOS 7 CPanel 伺服器上安裝 MariaDB 10

mariadb 是一個增強版的、開源的 mysql 替代品。它主要由 mariadb 社群在維護,采用 gpl v2 授權許可。軟體的安全性是 mariadb 開發者的主要焦點。他們保持為 mariadb 的每個版本釋出安全更新檔。當有任何安全問題被發現時,開發者會盡快修複并推出 mariadb 的新版本。

<a target="_blank"></a>

完全開源

快速且透明的安全版本

與 mysql 高度相容

性能更好

比 mysql 的存儲引擎多

在這篇文章中,我将談論關于如何在 centos7 cpanel 伺服器上更新 mysql5.5 到最新的 mariadb 。在安裝前先完成以下步驟。

<code>root@server1 [/var/]# mysql</code>

<code>welcome to the mysql monitor. commands end with ; or \g.</code>

<code>your mysql connection id is 5859</code>

<code>server version: 5.5.47-cll mysql community server (gpl)</code>

<code></code>

<code>copyright (c) 2000, 2015, oracle and/or its affiliates. all rights reserved.</code>

<code>oracle is a registered trademark of oracle corporation and/or its</code>

<code>affiliates. other names may be trademarks of their respective</code>

<code>owners.</code>

<code>type 'help;' or '\h' for help. type '\c' to clear the current input statement.</code>

<code>root@server1 [~]# systemctl stop mysql</code>

<code>root@server1 [~]# systemctl status mysql</code>

<code>● mysql.service - lsb: start and stop mysql</code>

<code>loaded: loaded (/etc/rc.d/init.d/mysql)</code>

<code>active: failed (result: exit-code) since sun 2016-01-31 10:00:02 utc; 1min 31s ago</code>

<code>docs: man:systemd-sysv-generator(8)</code>

<code>main pid: 23430 (code=exited, status=203/exec)</code>

<code>jan 31 10:00:02 server1.centos7-test.com systemd[1]: started mysql server.</code>

<code>jan 31 10:00:02 server1.centos7-test.com systemd[1]: starting mysql server...</code>

<code>jan 31 10:00:02 server1.centos7-test.com systemd[1]: mysql.service: main process exited, code=exited, status=203/exec</code>

<code>jan 31 10:00:02 server1.centos7-test.com systemd[1]: unit mysql.service entered failed state.</code>

<code>jan 31 10:00:02 server1.centos7-test.com systemd[1]: mysql.service failed.</code>

轉移資料庫的存儲路徑和 mysql 的配置檔案

<code>root@server1 [~]# cp -rf /var/lib/mysql /var/lib/mysql-old</code>

<code>root@server1 [/var/lib/mysql]# cat /etc/my.cnf</code>

<code>[mysqld]</code>

<code>default-storage-engine=myisam</code>

<code>innodb_file_per_table=1</code>

<code>max_allowed_packet=268435456</code>

<code>open_files_limit=10000</code>

<code>root@server1 [~]#mv /etc/my.cnf /etc/my.cnf-old</code>

運作以下指令來禁用 mysql rpm 的目标target。通過運作此指令,cpanel 将不再處理 mysql 的更新,并在系統上将這些 rpm 版本标記為已解除安裝。

<code>/scripts/update_local_rpm_versions --edit target_settings.mysql50 uninstalled</code>

<code>/scripts/update_local_rpm_versions --edit target_settings.mysql51 uninstalled</code>

<code>/scripts/update_local_rpm_versions --edit target_settings.mysql55 uninstalled</code>

<code>/scripts/update_local_rpm_versions --edit target_settings.mysql56 uninstalled</code>

現在運作以下指令:

<code>/scripts/checkcpanelrpms --fix --targets=mysql50,mysql51,mysql55,mysql56</code>

移除伺服器上所有已有的 mysql rpm 來為 mariadb 的安裝清理環境。請看下面的輸出:

<code>root@server1 [/var/lib/mysql]# /scripts/check_cpanel_rpms --fix --targets=mysql50,mysql51,mysql55,mysql56</code>

<code>[2016-01-31 09:53:59 +0000]</code>

<code>[2016-01-31 09:53:59 +0000] problems were detected with cpanel-provided files which are rpm controlled.</code>

<code>[2016-01-31 09:53:59 +0000] if you did not make these changes intentionally, you can correct them by running:</code>

<code>[2016-01-31 09:53:59 +0000] &gt; /usr/local/cpanel/scripts/check_cpanel_rpms --fix</code>

<code>[2016-01-31 09:53:59 +0000] the following rpms are unneeded on your system and should be uninstalled:</code>

<code>[2016-01-31 09:53:59 +0000] mysql55-client-5.5.47-1.cp1148</code>

<code>[2016-01-31 09:53:59 +0000] mysql55-devel-5.5.47-1.cp1148</code>

<code>[2016-01-31 09:53:59 +0000] mysql55-server-5.5.47-1.cp1148</code>

<code>[2016-01-31 09:53:59 +0000] mysql55-shared-5.5.47-1.cp1148</code>

<code>[2016-01-31 09:53:59 +0000] mysql55-test-5.5.47-1.cp1148</code>

<code>[2016-01-31 09:53:59 +0000] compat-mysql50-shared-5.0.96-4.cp1136</code>

<code>[2016-01-31 09:53:59 +0000] compat-mysql51-shared-5.1.73-1.cp1150</code>

<code>[2016-01-31 09:53:59 +0000] removing 0 broken rpms:</code>

<code>[2016-01-31 09:53:59 +0000] rpm: no packages given for erase</code>

<code>[2016-01-31 09:53:59 +0000] no new rpms needed for install</code>

<code>[2016-01-31 09:53:59 +0000] disabling service monitoring.</code>

<code>[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</code>

<code>[2016-01-31 09:54:04 +0000] removed symlink /etc/systemd/system/multi-user.target.wants/mysql.service.</code>

<code>[2016-01-31 09:54:04 +0000] restoring service monitoring.</code>

通過這些步驟,我們已經解除安裝了現有的 mysql rpm,并做了标記來防止 mysql的更新,伺服器的環境已經清理,然後準備安裝 mariadb。

開始安裝吧,我們需要根據 centos 和 mariadb 的版本為 mariadb 建立一個 yum 軟體庫。下面是我的做法!

<code>root@server1 [~]# vim /etc/yum.repos.d/mariadb.repo</code>

<code>[mariadb]</code>

<code>name = mariadb</code>

<code>baseurl = http://yum.mariadb.org/10.0/centos7-amd64/</code>

<code>gpgkey=https://yum.mariadb.org/rpm-gpg-key-mariadb</code>

<code>gpgcheck=1</code>

<code>root@server1 [/etc/yum.repos.d]# cat /etc/yum.repos.d/mariadb.repo</code>

删除這一行:

<code>exclude=courier* dovecot* exim* filesystem httpd* mod_ssl* mydns* mysql* nsd* php* proftpd* pure-ftpd* spamassassin* squirrelmail*</code>

替換為:

<code>exclude=courier* dovecot* exim* filesystem httpd* mod_ssl* mydns* nsd* proftpd* pure-ftpd* spamassassin* squirrelmail*</code>

重要

需要確定我們已經從 exclude 清單中移除了 mysql 和 php。

<code>root@server1 [~]#yum install mariadb-server mariadb-client mariadb-devel php-mysql</code>

<code>dependencies resolved</code>

<code>===============================================================================================================================================</code>

<code>package arch version repository size</code>

<code>installing:</code>

<code>mariadb-client x86_64 10.0.23-1.el7.centos mariadb 10 m</code>

<code>mariadb-devel x86_64 10.0.23-1.el7.centos mariadb 6.3 m</code>

<code>mariadb-server x86_64 10.0.23-1.el7.centos mariadb 55 m</code>

<code>php-mysql x86_64 5.4.16-36.el7_1 base 99 k</code>

<code>installing for dependencies:</code>

<code>mariadb-common x86_64 10.0.23-1.el7.centos mariadb 43 k</code>

<code>mariadb-shared x86_64 10.0.23-1.el7.centos mariadb 1.2 m</code>

<code>libzip x86_64 0.10.1-8.el7 base 48 k</code>

<code>php-common x86_64 5.4.16-36.el7_1 base 563 k</code>

<code>php-pdo x86_64 5.4.16-36.el7_1 base 97 k</code>

<code>transaction summary</code>

<code>install 4 packages (+5 dependent package)</code>

<code>root@server1 [~]# systemctl start mysql</code>

<code>root@server1 [~]#</code>

<code>active: active (exited) since sun 2016-01-31 10:01:46 utc; 3s ago</code>

<code>process: 23717 execstart=/etc/rc.d/init.d/mysql start (code=exited, status=0/success)</code>

<code>jan 31 10:01:46 server1.centos7-test.com systemd[1]: starting lsb: start and stop mysql...</code>

<code>jan 31 10:01:46 server1.centos7-test.com mysql[23717]: starting mysql success!</code>

<code>jan 31 10:01:46 server1.centos7-test.com systemd[1]: started lsb: start and stop mysql.</code>

它将檢查所有資料庫中的所有表與目前安裝的版本是否相容,并在必要時會更新系統表,以賦予目前版本新增加的權限或能力。

<code>root@server1 [~]# mysql_upgrade</code>

<code>mysql upgrade detected</code>

<code>phase 1/6: checking and upgrading mysql database</code>

<code>processing databases</code>

<code>mysql</code>

<code>mysql.columns_priv ok</code>

<code>mysql.db ok</code>

<code>mysql.event ok</code>

<code>mysql.func ok</code>

<code>mysql.help_category ok</code>

<code>mysql.help_keyword ok</code>

<code>mysql.help_relation ok</code>

<code>mysql.help_topic ok</code>

<code>mysql.host ok</code>

<code>mysql.ndb_binlog_index ok</code>

<code>mysql.plugin ok</code>

<code>mysql.proc ok</code>

<code>mysql.procs_priv ok</code>

<code>mysql.proxies_priv ok</code>

<code>mysql.servers ok</code>

<code>mysql.tables_priv ok</code>

<code>mysql.time_zone ok</code>

<code>mysql.time_zone_leap_second ok</code>

<code>mysql.time_zone_name ok</code>

<code>mysql.time_zone_transition ok</code>

<code>mysql.time_zone_transition_type ok</code>

<code>mysql.user ok</code>

<code>phase 2/6: fixing views from mysql</code>

<code>phase 3/6: running 'mysql_fix_privilege_tables'</code>

<code>phase 4/6: fixing table and database names</code>

<code>phase 5/6: checking and upgrading tables</code>

<code>cphulkd</code>

<code>cphulkd.auths ok</code>

<code>cphulkd.blacklist ok</code>

<code>cphulkd.brutes ok</code>

<code>cphulkd.good_logins ok</code>

<code>cphulkd.ip_lists ok</code>

<code>cphulkd.known_netblocks ok</code>

<code>cphulkd.login_track ok</code>

<code>cphulkd.logins ok</code>

<code>cphulkd.report ok</code>

<code>cphulkd.whitelist ok</code>

<code>eximstats</code>

<code>eximstats.defers ok</code>

<code>eximstats.failures ok</code>

<code>eximstats.sends ok</code>

<code>eximstats.smtp ok</code>

<code>information_schema</code>

<code>leechprotect</code>

<code>leechprotect.hits ok</code>

<code>modsec</code>

<code>modsec.hits ok</code>

<code>performance_schema</code>

<code>roundcube</code>

<code>roundcube.cache ok</code>

<code>roundcube.cache_index ok</code>

<code>roundcube.cache_messages ok</code>

<code>roundcube.cache_shared ok</code>

<code>roundcube.cache_thread ok</code>

<code>roundcube.contactgroupmembers ok</code>

<code>roundcube.contactgroups ok</code>

<code>roundcube.contacts ok</code>

<code>roundcube.cp_schema_version ok</code>

<code>roundcube.dictionary ok</code>

<code>roundcube.identities ok</code>

<code>roundcube.searches ok</code>

<code>roundcube.session ok</code>

<code>roundcube.system ok</code>

<code>roundcube.users ok</code>

<code>saheetha_test</code>

<code>saheetha_test.authors ok</code>

<code>whmxfer</code>

<code>whmxfer.sessions ok</code>

<code>phase 6/6: running 'flush privileges'</code>

<code>ok</code>

<code>root@server1 [~]# systemctl restart mysql</code>

<code>active: active (running) since sun 2016-01-31 10:04:11 utc; 9s ago</code>

<code>process: 23831 execstop=/etc/rc.d/init.d/mysql stop (code=exited, status=0/success)</code>

<code>process: 23854 execstart=/etc/rc.d/init.d/mysql start (code=exited, status=0/success)</code>

<code>cgroup: /system.slice/mysql.service</code>

<code>├─23861 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/server1.centos7-test.com.pid</code>

<code>└─23933 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/v...</code>

<code>jan 31 10:04:10 server1.centos7-test.com systemd[1]: starting lsb: start and stop mysql...</code>

<code>jan 31 10:04:11 server1.centos7-test.com mysql[23854]: starting mysql. success!</code>

<code>jan 31 10:04:11 server1.centos7-test.com systemd[1]: started lsb: start and stop mysql.</code>

<code>root@server1 [~]#/scripts/easyapache --build</code>

如果你在安裝 mariadb 之後忘記重建 apache/php,将會報如下庫錯誤:

<code>root@server1 [/etc/my.cnf.d]# php -v</code>

<code>php: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: no such file or directory</code>

<code>root@server1 [/var/lib/mysql]# mysql</code>

<code>welcome to the mariadb monitor. commands end with ; or \g.</code>

<code>your mariadb connection id is 15</code>

<code>server version: 10.0.23-mariadb mariadb server</code>

<code>copyright (c) 2000, 2015, oracle, mariadb corporation ab and others.</code>

<code>mariadb [(none)]&gt; show storage engines;</code>

<code>+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+</code>

<code>| engine | support | comment | transactions | xa | savepoints |</code>

<code>| csv | yes | csv storage engine | no | no | no |</code>

<code>| mrg_myisam | yes | collection of identical myisam tables | no | no | no |</code>

<code>| memory | yes | hash based, stored in memory, useful for temporary tables | no | no | no |</code>

<code>| blackhole | yes | /dev/null storage engine (anything you write to it disappears) | no | no | no |</code>

<code>| myisam | yes | myisam storage engine | no | no | no |</code>

<code>| innodb | default | percona-xtradb, supports transactions, row-level locking, and foreign keys | yes | yes | yes |</code>

<code>| archive | yes | archive storage engine | no | no | no |</code>

<code>| federated | yes | federatedx pluggable storage engine | yes | no | yes |</code>

<code>| performance_schema | yes | performance schema | no | no | no |</code>

<code>| aria | yes | crash-safe tables with myisam heritage | no | no | no |</code>

<code>10 rows in set (0.00 sec)</code>

原文釋出時間為:2016-06-14

本文來自雲栖社群合作夥伴“linux中國”