如何安装新的Percona服务器或替换MySQL
介绍
Percona Server 是 MySQL 项目的替代分支。 Percona 旨在在所有硬件上提供更好的性能、一致性和可扩展性。 本教程将指导您将当前的 MySQL 或 MariaDB 安装替换为最新的 Percona Server 版本,或者在新的 Droplet 上从头开始安装 Percona Server。
好处
Percona Server 与基本的 MySQL 安装相比有许多好处:
- XtraDB:切换到 Percona Server 的主要好处之一是 XtraDB,它是 InnoDB 引擎的一个向后兼容的分支,在性能和效率上有很大的改进,让您获得更好的查询吞吐量从您当前的硬件。 由于它建立在 InnoDB 之上,因此您当前的 InnoDB 表将通过 XtraDB 透明地加载,无需任何迁移过程。
- 稳定性和一致性:Percona 服务器在负载下执行更均匀,这意味着您的应用程序将不太容易受到间歇性停机或减速的影响。
- Metrics:Percona Server 内置了许多额外的性能指标,让您可以准确地发现哪些用户、表、索引或查询正在减慢您的速度。 从您的服务器获得出色的性能变得更加科学,并且更少依赖猜测。
- PAM 身份验证:通常为 MySQL 企业版保留的功能,使用 Percona Server,您可以将身份验证方案与数据库访问联系起来。
- 兼容性:由于 Percona 服务器是 MySQL 的直接替代品,因此您还可以获得 MySQL 广泛流行和庞大的用户社区的所有通常好处。 这意味着任何为 MySQL 设计的应用程序都可以安全地使用 Percona Server,而无需进行任何更改。
先决条件
- Debian、Ubuntu 或 CentOS 云服务器:目前不支持其他发行版。 仅支持 CentOS 版本 5 和 6; 在撰写本文时,不支持 CentOS 7。
- 全新的 Droplet 或最新的 MySQL/MariaDB 安装:Percona Server 可以在新的 Droplet 上从头开始安装,也可以作为当前 MySQL/MariaDB 安装的替代品。 根据您遇到的这些情况,本文中的某些步骤可能仅与一种情况相关,并将标有 (仅限新) 或 (仅限更换)。 任何未标记的部分或段落都应用于这两种情况。
- Root access:本文中的所有命令都应以root身份执行。
- Memory:对于默认安装,您需要 至少 1GB Droplet,否则您可能会因缓冲池分配的内存不足而导致安装失败。 如果您有一个 512MB 的 Droplet 并分配了 交换空间 ,您也可能会成功安装,尽管性能不佳。
- 数据备份(仅限替换):在对数据库服务器设置进行任何更改之前,请确保备份所有当前数据。 本教程将保留所有数据文件,仅删除 MySQL 二进制文件和相关工具——但如果出现问题,最好进行备份。 我们在 DigitalOcean 上有 篇文章,涵盖了备份您的数据库文件。
- 配置备份(仅限替换):同样,如果您要替换当前安装,建议您制作当前 MySQL/MariaDB 配置的副本; 这个文件可以在 Debian/Ubuntu 系统上的 /etc/mysql/my.cnf 和 CentOS 系统上的
/etc/my.cnf
找到。 在 CentOS 上,MariaDB 软件包在卸载时会删除配置文件,因此这一步在这些系统上尤为重要。
第一步——检查版本(仅限替换)
Percona Server 版本仅与其等效的 MySQL 版本直接兼容。 IE 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,这将是以下之一:
- 挤
- 喘不过气来
同样,对于 Ubuntu,支持的发行版是:
- 清醒的
- 精确的
- 俏皮
- 可靠
如果您不确定您使用的是哪个发行版本,您可以执行以下命令:
lsb_release -c
一旦您确定您正在运行哪个发行版,我们可以通过将以下行附加到 /etc/apt/sources.list 文件来添加新的 Percona 存储库:
nano /etc/apt/sources.list
在文件底部添加这些行,确保将 DIST
替换为您的发行版名称(即,您将 DIST 替换为 wheezy 或 可靠等):
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
现在使用您选择的文本编辑器(Vim、nano 等)在 /etc/apt/preferences.d/00percona.pref 打开此文件,添加以下行并保存:
Package: * Pin: release o=Percona Development Team Pin-Priority: 1001
最后,一旦添加并固定了源,就可以更新包列表,我们可以安装 Percona Server 包。
(New Only) 对于新的Droplet,建议安装percona-server-server虚拟包,它将安装Percona团队推荐的Percona Server版本:
apt-get update apt-get install percona-server-server
(仅限替换) 请参阅您之前找到的 MySQL 或 MariaDB 版本。 要替换 5.5 版本,请使用 percona-server-server-5.5 包和 percona-server-server-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 的日志文件中找到。
(仅限新版) 在全新系统上安装时,可能会在安装过程中要求您设置 root 数据库用户密码。 在这种情况下还建议运行 mysql_secure_installation 以确保不存在明显的安全问题:
/usr/bin/mysql_secure_installation
CentOS(百胜)
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 包。
(New Only) 从头安装时,推荐使用 Percona Server 5.6 包:
yum install Percona-Server-client-56 Percona-Server-server-56
(Replacement Only) 替换以前的安装时,使用上面版本检查部分中找到的版本号选择Percona-Server-server-55或的正确对应包]Percona-Server-server-56。 MariaDB 10.0 应该替换为 Percona Server 5.6。
yum install Percona-Server-client-56 Percona-Server-server-56
您将被要求接受包,然后接受包签名密钥——同意这两个。 片刻之后,安装应该完成,没有任何错误。 如果您在安装过程中收到事务错误,请确保在重试之前已完全删除任何 MySQL/MariaDB 包。
现在安装了软件包,最后的安装步骤是启动服务器:
service mysql start
如果您收到有关 PID 文件的错误,则服务器无法启动。 如先决条件中所述,这通常发生在内存限制阻止 XtraDB 缓冲池分配的低 RAM 服务器上。 如果不是这种情况,请检查 /var/log/mysqld.log 是否有任何进一步的错误消息,确保检查 MariaDB 和 Percona Server 之间的版本是否正确匹配。
注意: 如果您从 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 创建适当的目录。 然后尝试启动服务器。
(仅限新) 在全新系统上安装时,您的 Percona Server root 用户将没有分配密码,因此您的数据库将不安全。 因此强烈建议您使用 mysql_secure_installation 设置新密码和其他安全选项。 当要求输入当前的 root 密码时,只需按 Enter。
/usr/bin/mysql_secure_installation
第四步——配置
如果您替换了现有的 MySQL 安装,您应该已经制作了配置文件的副本,现在可以将其复制回来。 您可以跳过本节,尽管您可能会发现示例设置很有用。
但是,如果您在新的 Droplet 上安装 Percona Server,则需要添加一个配置文件,因为 Percona Server 当前运行的默认值可能不是您的 Droplet 的最佳选择。 在我们第一次更新配置之前,建议停止 Percona Server,因为 PID 文件位置可能会改变。 对于未来的配置更改,进行更改后简单的重新启动就足够了。
service mysql stop
下面是一个 1GB 液滴的示例配置文件,为了兼容,缓冲池相对较小。 在 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-buffer-pool-size 减小到较小的值并重复上述命令。
第五步——检查你的安装
现在我们已经安装并运行了 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 兼容,所有涵盖 MySQL 的 DigitalOcean 教程都可以安全地与 Percona Server 一起使用。 连接到数据库时,您的应用程序仍然可以正常运行,尽管现在希望 Percona Server 和 XtraDB 的性能提升。
MySQL 命令将完全像以前一样工作。