介绍
Percona的服务器是MySQL项目的简易替换叉。 Percona旨在在所有硬件上提供更好的性能,一致性和可扩展性。 本教程将指导您使用最新的Percona Server版本替换当前的MySQL或MariaDB安装,或在新的Droplet上从头开始安装Percona Server。
好处
与基本的MySQL安装相比,Percona Server有许多优点:
XtraDB:其中一个切换到的Percona Server中的主要优势是XtraDB ,InnoDB引擎,并在性能和效率的重大改进,让您从您目前的硬件得到更好的查询吞吐量的向后兼容叉。 由于它是建立在InnoDB之上,您当前的InnoDB表将通过XtraDB透明地加载,而不需要任何迁移过程。
稳定性和一致性 :Percona的服务器进行更均匀负载下,这意味着您的应用程序将是间歇性的停机或减速不易。
指标 :Percona的服务器配有多个内置额外的性能指标,让你去发现究竟哪些用户,表,索引,或者查询放慢你失望。 从服务器获得好的性能变得更科学,更少依赖猜测。
PAM认证 :通常对于MySQL企业版保留功能,具有的Percona Server,您可以在您的身份验证方案配合你的数据库访问。
兼容性 :由于Percona的服务器是一个下拉更换为MySQL,你也可以得到所有MySQL的广泛普及和大型社区的用户通常的好处。 这意味着任何为MySQL设计的应用程序都可以安全地使用Percona Server,而不需要任何更改
先决条件
Debian的,Ubuntu的或CentOS的云服务器 :其他的发行版目前不支持。 仅支持CentOS版本5和6; 写入时不支持CentOS 7。
无论是新鲜Droplet或向上最新的MySQL / MariaDB的安装 :Percona的服务器可以从头上一个新的Droplet或作为用于当前的MySQL / MariaDB的安装更换安装。 这取决于你有这些情况,这篇文章中的某些步骤可能有关的只有一种情况下,将与(只新)或(更换只有)进行标记。 任何未标记的部分或段落应用于这两种情况。
Root权限 :本文中的所有命令都应该以root身份执行。
内存 :对于缺省安装,你将需要至少1GB的Droplet ,否则可能会由于内存不足为缓冲池分配安装失败。 如果你有一个512MB的Droplet交换空间分配,你也可能获得成功安装,尽管欠佳的表现。
数据备份(更换只有):使你的数据库服务器上安装任何更改之前,请确保你把所有的当前数据的备份。 本教程将留下所有的数据文件,只删除MySQL二进制和相关工具 - 但它总是理想的情况下,一个事情的事件备份。 我们有一些文章在这里DigitalOcean覆盖备份数据库文件。
(只更换)配置备份 :同样,建议您根据现有的MySQL / MariaDB的配置的副本,如果您要更换当前安装; 这个文件可以在Debian / Ubuntu的系统和/etc/mysql/my.cnf找到
/etc/my.cnf
在CentOS系统。 在CentOS上,MariaDB包将在卸载时删除配置文件,因此此步骤在这些系统上尤其重要。
第一步 - 检查版本(仅替换)
Percona Server版本仅与其等效的MySQL版本兼容。 即MySQL 5.6应该只用Percona Server 5.6替换。 尝试使用不匹配的版本可能会导致表损坏或阻止服务器启动。
要检查当前运行的版本,首先使用当前的root密码连接到MySQL:
mysql -u root -p
然后找到当前安装的版本:
SHOW VARIABLES LIKE "version";
这应该确定是否需要安装Percona Server 5.5或5.6。 一个边缘情况是,如果您运行的是MariaDB 10.0,应该用Percona Server 5.6替换。 如果您运行的MySQL版本低于5.5,则应首先将MySQL升级到5.5或更高版本,然后再继续。
第二步 - 删除MySQL(仅限替换)
在我们安装Percona服务器之前,我们需要删除当前安装的任何MySQL或MariaDB软件包,因为您不应该尝试同时在相同的数据上同时运行。
在继续之前,应该备份数据和配置文件。
在卸载MySQL之前,建议停止数据库服务器以防止在程序包删除期间进程未安全停止的情况下数据损坏:
service mysql stop
对于Debian和基于Ubuntu的服务器,需要删除MySQL服务器和客户端软件包:
apt-get remove mysql-server mysql-client mysql-common
apt-get autoremove
对于CentOS系统,默认数据库现在是MariaDB,可以按如下方式卸载:
yum remove MariaDB-server MariaDB-client MariaDB-shared
有关其他变体,请参阅您的文档以了解卸载过程。
第三步 - 安装Percona服务器
Percona Server可能不在您的Linux发行版的默认存储库中,因为Percona管理自己的存储库,以确保尽快将更新推送给用户。 因此,在安装之前,我们需要手动添加Percona APT或yum存储库。 请按照以下说明操作您的服务器的操作系统。
Debian和Ubuntu(Apt)
由Percona发布的Debian和Ubuntu软件包已签名,这意味着APT需要通知新的签名密钥:
apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
在我们进行下一步之前,请确保您知道您当前使用的分发。 对于Debian,这将是以下之一:
- 挤
- Wheezy
同样,对于Ubuntu,受支持的发行版为:
- 清楚
- 精确
- saucy
- 可靠
如果您不确定要使用哪个发行版本,可以执行以下命令:
lsb_release -c
一旦你确定你正在运行的分布,我们可以添加通过附加以下行/etc/apt/sources.list文件新Percona的库:
nano /etc/apt/sources.list
这些行添加到文件底部,确保更换DIST
您的发行名称(即,你将与Wheezy或可信任等取代DIST):
deb http://repo.percona.com/apt DIST main
deb-src http://repo.percona.com/apt DIST main
一旦保存了源文件,Percona包应该被固定,以确保来自Percona的包始终优先于来自您的发行版默认存储库的任何包。 为此,我们首先为APT创建一个新的首选项文件:
touch /etc/apt/preferences.d/00percona.pref
现在打开在/etc/apt/preferences.d/00percona.pref这个文件与您所选择的文本编辑器(VIM,纳米等),加上下面几行,然后保存:
Package: *
Pin: release o=Percona Development Team
Pin-Priority: 1001
最后,一旦添加和固定源,可以更新软件包列表,我们可以安装Percona Server软件包。
(新专用)对于一个新的Droplet,建议您安装Percona的服务器-服务器虚拟包,这将安装由Percona的小组建议的Percona Server的版本:
apt-get update
apt-get install percona-server-server
(只更换)请参阅先前所在的MySQL或MariaDB的版本。 对于更换5.5版使用Percona的服务器-服务器- 5.5封装,Percona的服务器-服务器5.6 5.6。 MariaDB 10.0应该替换为Percona Server 5.6。
apt-get update
apt-get install percona-server-server-5.6
如果此命令完成没有错误,Percona Server将被安装并成功运行。 但是,如果在安装过程中遇到错误,请确保您有足够的可用内存,根据上述前提条件部分。 任何启动错误的更多信息可以在/var/log/mysqld.log的Percona Server的日志文件中找到。
(新Only)当上安装一个新的系统,你可能会在安装过程中要求设置root数据库用户口令。 此外,还建议在这种情况下运行MySQL 安全的安装 ,以确保没有明显的安全问题依然存在:
/usr/bin/mysql_secure_installation
CentOS(Yum)
目前Percona仅支持CentOS版本5和6。 在撰写本文时,不支持CentOS 7。
CentOS系统的第一步是将Percona存储库软件包安装到yum。
对于64位CentOS系统:
yum install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
对于32位CentOS系统:
yum install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.i386.rpm
一旦完成,我们可以安装正确版本的Percona Server软件包。
(新Only)当从头开始安装时,建议您使用的Percona服务器5.6包:
yum install Percona-Server-client-56 Percona-Server-server-56
(只更换),当更换以前的安装,使用版本检查部分中的版本号上面选择的Percona-Server的服务器-55或Percona的-服务器-服务器- 56正确的相应的包。 MariaDB 10.0应该替换为Percona Server 5.6。
yum install Percona-Server-client-56 Percona-Server-server-56
您将被要求接受包,然后接受包签署密钥-agree到这两个。 一段时间后,安装应该完成,没有任何错误。 如果在安装过程中收到事务错误,请确保在重试前已完全删除任何MySQL / MariaDB包。
使用现在安装的软件包,最后的安装步骤是启动服务器:
service mysql start
如果您收到有关PID文件的错误,则服务器无法启动。 如前提条件中所述,这通常发生在内存限制阻止XtraDB缓冲池分配的低RAM服务器上。 如果不是这种情况,请检查/var/log/mysqld.log任何进一步的错误信息,并确保检查是否已正确匹配MariaDB的和Percona的服务器之间的版本。
注:如果您从MariaDB的升级,收到这样的错误:
Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
Fatal error in defaults handling. Program aborted
Starting MySQL (Percona Server). ERROR! The server quit without updating PID file (/var/lib/mysql/percona-centos.pid).
您应该能够创建带有命令的mkdir /etc/my.cnf.d相应的目录。 然后尝试启动服务器。
(新Only)当一个新的系统上安装,您的Percona服务器root用户将不会有一个密码分配,因此数据库将不保。 因此,强烈建议您使用MySQL的安全的安装设置新的密码和其他安全选项。 当要求输入当前的root密码时,只需按Enter。
/usr/bin/mysql_secure_installation
第四步 - 配置
如果您替换了现有的MySQL安装,您应该已经创建了现在可以复制回来的配置文件的副本。 您可以跳过此部分,但您可能会发现示例设置很有用。
但是,如果您在新的Droplet上安装Percona Server,则需要添加配置文件,因为Percona Server当前运行的默认值可能不是您Droplet的最佳值。 在我们第一次更新配置之前,建议停止Percona Server,因为PID文件位置可能会更改。 对于将来的配置更改,简单的重新启动应该足够在更改后。
service mysql stop
以下是1GBDroplet的示例配置文件,具有相对较小的缓冲池以实现兼容性。 在Debian / Ubuntu的这个文件应该被写入/etc/mysql/my.cnf。 在CentOS,这个文件应该被写入在/etc/my.cnf。 该文件包含内嵌注释,以解释不同部分正在做什么。
# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
[mysql]
# CLIENT #
# Configure default options for clients
port = 3306
[mysqld]
# GENERAL #
# Choose user for execution, default storage engine and location of the PID file
user = mysql
default-storage-engine = InnoDB
pid-file = /var/lib/mysql/mysql.pid
# MyISAM #
# Setup MyISAM options with a minimal config, as InnoDB is our default engine
key-buffer-size = 32M
myisam-recover = FORCE,BACKUP
# SAFETY #
# Enforce limits and safety checks
max-allowed-packet = 16M
max-connect-errors = 1000000
innodb = FORCE
# DATA STORAGE #
# Select location for database files
datadir = /var/lib/mysql/
# BINARY LOGGING #
# Enable and setup the binary log
log-bin = /var/lib/mysql/mysql-bin
expire-logs-days = 14
sync-binlog = 1
# CACHES AND LIMITS #
# Configure reasonable default limits throughout Percona Server
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 500
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 1024
table-open-cache = 2048
# INNODB #
# Setup InnoDB/XtraDB engine a 300MB buffer pool and 32MB log file size
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 32M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 300M
# LOGGING #
# Setup log file locations for error log and slow log
# Slow log may be disabled on production setups to prevent extra IO
log-error = /var/lib/mysql/mysql-error.log
log-queries-not-using-indexes = 1
slow-query-log = 1
slow-query-log-file = /var/lib/mysql/mysql-slow.log
对于较大的Droplet,或作为一个起点,为您量身定制的配置文件,您可以使用Percona的配置向导来创建配置文件一个合适的基地。
保存文件后,可以重新启动Percona Server:
service mysql restart
如果服务器无法启动与此配置,请尝试减少InnoDB的缓冲池大小为较小的值,并重复上面的命令。
第五步 - 检查安装
现在我们已经安装并运行了Percona Server,我们可以通过运行一些最终检查来确保一切都按计划进行。 首先,使用mysql客户端,与您的数据库root用户密码登录连接到数据库:
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 45
Server version: 5.5.38-35.2 Percona Server (GPL), Release 35.2, Revision 674
Copyright (c) 2009-2014 Percona LLC and/or its affiliates
Copyright (c) 2000, 2014, 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.
mysql>
马上我们可以看到连接文本中的服务器版本现在指定了Percona Server。 通过使用SHOW VARIABLES命令,我们可以深入了解已安装的特定版本的更多详细信息:
SHOW VARIABLES LIKE "version%";
+-------------------------+--------------------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------------------+
| version | 5.5.38-35.2 |
| version_comment | Percona Server (GPL), Release 35.2, Revision 674 |
| version_compile_machine | x86_64 |
| version_compile_os | debian-linux-gnu |
+-------------------------+--------------------------------------------------+
4 rows in set (0.00 sec)
精确的值和版本可能会在您的安装中有所不同,但关键点是我们现在有Percona Server运行而不是MySQL。
接下来,我们可以检查我们是否使用XtraDB优化任何基于InnoDB的表:
SHOW STORAGE ENGINES\G
结果将显示这个块在许多其他:
...
*************************** 8. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Percona-XtraDB, Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
...
9 rows in set (0.00 sec)
响应中的注释字段显示XtraDB引擎已作为基于InnoDB的表的引擎加载。 作为最终检查,建议您确保在新服务器中正确读取所有数据库和表。
如果所有这些检查都通过,您现在已成功运行Percona Server。 但是,如果任何这些检查不成功,请确保您已正确完成本教程的所有先前步骤,特别注意将MySQL版本号与Percona Server版本号匹配。
下一步
由于Percona的是下拉式的兼容与MySQL,所有的DigitalOcean教程涵盖的MySQL可以安全使用的Percona Server一起使用。 当连接到数据库时,您的应用程序仍将运行相同,虽然希望现在与Percona Server和XtraDB的性能提升。
MySQL命令将像以前一样工作。