如何安装新的 Percona 服务器或替换 MySQL

介绍

Percona 旨在在所有硬件上提供更好的性能、一致性和可扩展性,本教程将指导您通过更换当前的 MySQL 或 MariaDB 安装到最新版本的 Percona Server,或从头开始在新 Droplet 上安装 Percona Server。

福利

Percona 服务器在基本的 MySQL 安装上具有若干优点:

QQTRADB*:切换到Percona Server的关键好处之一是XtraDB,这是InnoDB引擎的相容倒叉,性能和效率大有改进,可以使您从当前的硬件中获得更好的查询吞吐量. 由于它建在 InnoDB上方, 您目前的 InnoDB 表格将会通过 XtraDB 透明地加载, 没有任何迁移进程 。

  • ** 稳定性和一致性 ** : Percona 服务器在负载下执行 [更一致] (http://www.percona.com/software/percona-server/benchmarks ), 这意味着您的应用程序不会受到间歇性故障或减速的影响 。 *** 计量**:percona 服务器带有一些附加的性能度量,可以让您发现究竟哪些用户,表格,索引,或查询正在减缓您的速度. 从您的服务器获取优秀的性能, 变得更加科学, 并减少对猜测的依赖 。
  • ** PAM 认证 ** : 通常为MySQL Entertainment Edition保留的一个功能,与Percona Server一起,您可以在认证计划中将认证方案与您的数据库访问连接.
  • 相容性:由于Percona 服务器是MySQL的倒置替换,因此您也得到了MySQL被广泛欢迎和大量用户群的所有通常的好处. 这意味着任何为MySQL设计的应用程序都可以安全地使用Percona Server而没有任何修改.

前提条件

*德比亚语,Ubuntu或CentOS云服务器: 目前不支持其他分布. 只支持CentOS版本5和6;CentOS 7在撰写时不支持.

  • ** 以新的 Droplet 或最新的 MySQL/MariaDB 安装** : Percona 服务器可以从头安装在新的 Droplet上,也可以作为当前 MySQL/MariaDB 安装的替换. 视具体情况而定,本条中的某些步骤可能仅与一例有关,并会标为**(仅新)(仅替换)**。 任何未加标记的章节或段落都应用于这两种情况。
  • ** Root 访问** : 此条中的所有命令应作为根执行 。
  • ** Memory**:默认安装需要至少1GB Droplet,否则由于缓冲池分配的内存不足,可能会有安装失败. 如果您有一个配置有 [swap 空间 (https://www.digitalocean.com/community/search?primary_filter=tutorials&query=swap ) 的 512MB Droplet, 您也可以获得一个成功的安装, 尽管有 subpar 性能 。
  • ** 数据备份(仅重置) **: 在对数据库服务器设置作出任何修改之前, 请确保您拥有当前所有数据的备份 。 这个教程将保留所有的数据文件, 只删除 MySQL 二进制和相关工具 – 但一旦有问题, 总是很理想的 。 我们这里有文章数数字海洋,覆盖了您的数据库文件。
  • ** 配置备份(仅替换)** : 同样,建议您在替换当前安装时复制当前的MySQL/MariaDB配置;可在Debian/Ubuntu系统中的/etc/mysql/my.cnf和CentOS系统中的`/etc/my.cnf'找到此文件。 在CentOS上,MariaDB软件包会在未安装时去除配置文件,因此这一步骤在这些系统中特别重要. (英语)

第一步 - 检查版本(仅替换)

Percona Server 版本仅与其相应的 MySQL 版本兼容,也就是说,MySQL 5.6 只应被 Percona Server 5.6 取代,试图使用不匹配的版本可能会导致桌面损坏或阻止服务器启动。

要检查您目前正在运行的版本,请先使用当前的 root 密码连接到 MySQL:

1mysql -u root -p

然后找到当前安装的版本:

1SHOW VARIABLES LIKE "version";

这应该确定您是否需要安装 Percona Server 5.5 或 5.6。一个边缘的情况是,如果您正在运行 MariaDB 10.0,该版本应该被 Percona Server 5.6 取代。

步骤二:删除 MySQL(仅替换)

在我们安装 Percona 服务器之前,我们需要删除目前安装的任何 MySQL 或 MariaDB 包,因为您不应该尝试同时在相同数据上运行它们。

您应该在继续前备份您的数据和配置文件。

在卸载 MySQL 之前,建议停止数据库服务器以防止数据损坏,如果在包删除过程中未安全停止该过程:

1service mysql stop

对于基于 Debian 和 Ubuntu 的服务器,必须删除 MySQL 服务器和客户端包:

1apt-get remove mysql-server mysql-client mysql-common
2apt-get autoremove

对于 CentOS 系统,默认数据库现在是 MariaDB,可以如下卸载:

1yum remove MariaDB-server MariaDB-client MariaDB-shared

对于其他变体,请参阅您的删除程序文档。

第三步:安装 Percona 服务器

Percona Server 可能不在您的 Linux 发行版的默认存储库中,因为 Percona 管理自己的存储库,以确保更新尽快向用户发布。因此,我们需要在安装前手动添加 Percona APT 或 yum 存储库。

Debian 和 Ubuntu (Apt)

Percona 发布的 Debian 和 Ubuntu 包已签名,这意味着 APT 需要通知新的签名密钥:

1apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

在我们采取下一步之前,请确保您知道您目前正在使用的发行版。

  • squeeze
  • wheezy

同样,对于Ubuntu,支持的发行版是:

  • lucid
  • precise
  • saucy
  • trusty

如果您不确定正在使用哪个发行版,可以执行以下命令:

1lsb_release -c

一旦你确定你正在运行哪个发行版,我们可以通过附加以下行到 /etc/apt/sources.list 文件来添加新的 Percona 存储库:

1nano /etc/apt/sources.list

将这些行添加到文件的底部,确保用您的分布名称代替DIST(即,您会用wheezytrusty等代替DIST):

1deb http://repo.percona.com/apt DIST main
2deb-src http://repo.percona.com/apt DIST main

一旦您保存了源文件,接下来应该将 Percona 软件包粘贴,以确保 Percona 软件包始终优先于您的分布的默认存储库中的任何软件包。 为了做到这一点,我们首先创建一个新的 APT 偏好文件:

点击 /etc/apt/preferences.d/00percona.pref

现在打开此文件在 /etc/apt/preferences.d/00percona.pref 与您选择的文本编辑器(Vim,nano等),添加以下行,并保存:

1Package: *
2Pin: release o=Percona Development Team
3Pin-Priority: 1001

最后,一旦添加和粘贴源,可以更新包列表,我们可以安装Percona Server包。

**(仅新)**对于新鲜的Droplet,建议您安装Percona服务器服务器虚拟包,该软件将安装Percona服务器的版本,由Percona团队推荐:

1apt-get update
2apt-get install percona-server-server

(仅替换) 请参考您之前所找到的 MySQL 或 MariaDB 版本。 若要替换版本 5.5,请使用 percona-server-5.5 包和 percona-server-server-5.6 for 5.6. MariaDB 10.0 应该被 Percona Server 5.6 取代。

1apt-get update
2apt-get install percona-server-server-5.6

如果此命令没有错误完成,Percona Server 将被安装并成功运行,但是,如果您在安装过程中遇到错误,请确保您有足够的可用内存,根据上述前提部分。

(仅新) 在新系统上安装时,在安装过程中可能会被要求设置根数据库用户密码。在这种情况下,还建议运行 mysql_secure_installation 以确保没有明显的安全问题:

1/usr/bin/mysql_secure_installation

百度(YUM)

目前只有 CentOS 版本 5 和 6 得到 Percona 的支持,在写作时,CentOS 7 不受支持。

CentOS 系统的第一步是将 Percona 存储包安装到 yum。

对于 64 位 CentOS 系统:

1yum install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

对于 32 位 CentOS 系统:

1yum install http://www.percona.com/downloads/percona-release/percona-release-0.0-1.i386.rpm

一旦完成,我们就可以安装正确版本的 Percona Server 包。

**(仅新)**从头开始安装时,建议您使用 Percona Server 5.6 包:

1yum install Percona-Server-client-56 Percona-Server-server-56

(仅替换) 在更换以前的安装时,请使用在上面的版本检查部分中找到的版本号,选择Percona-Server-55或Percona-Server-56的正确相应包。

1yum install Percona-Server-client-56 Percona-Server-server-56

您将被要求接受包,然后接受包签名密钥 - 同意这两者. 短时间后,安装应该完成,没有任何错误. 如果您在安装过程中收到交易错误,请确保在重新处理之前完全删除任何MySQL/MariaDB包。

现在安装了该包,最后的安装步骤是启动服务器:

服务MySQL启动

如果您收到有关 PID 文件的错误,服务器将无法启动,正如前提中所述,这种情况通常发生在低 RAM 服务器上,而内存限制会阻止 XtraDB 缓冲池分配。

** 注意:** 如果您从 MariaDB 升级并收到此类错误:

1Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
2Fatal error in defaults handling. Program aborted
3Starting MySQL (Percona Server). ERROR! The server quit without updating PID file (/var/lib/mysql/percona-centos.pid).

您应该能够使用命令 mkdir /etc/my.cnf.d 创建相应的目录,然后尝试启动服务器。

(仅新) 在新系统上安装时,您的 Percona Server 根用户将不会分配密码,因此您的数据库将不会安全。因此,强烈建议您使用 mysql_secure_installation 来设置新的密码和其他安全选项。

1/usr/bin/mysql_secure_installation

第四步:配置

如果您取代了现有的 MySQL 安装,您应该创建了配置文件的副本,现在可以复制。

但是,如果您正在在新 Droplet 上安装 Percona Server,则需要添加配置文件,因为 Percona Server 目前正在运行的默认值可能不适合您的 Droplet. 在我们首次更新配置之前,建议您停止 Percona Server,因为 PID 文件的位置可能会发生变化。

1service mysql stop

下面是 1GB 滴的样本配置文件,具有相对较小的缓冲池兼容性。在 Debian/Ubuntu 上,该文件应该写成 /etc/mysql/my.cnf.在 CentOS 上,该文件应该写成 /etc/my.cnf。

 1# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
 2[mysql]
 3
 4# CLIENT #
 5# Configure default options for clients
 6port                           = 3306
 7
 8[mysqld]
 9
10# GENERAL #
11# Choose user for execution, default storage engine and location of the PID file
12user                           = mysql
13default-storage-engine         = InnoDB
14pid-file                       = /var/lib/mysql/mysql.pid
15
16# MyISAM #
17# Setup MyISAM options with a minimal config, as InnoDB is our default engine
18key-buffer-size                = 32M
19myisam-recover                 = FORCE,BACKUP
20
21# SAFETY #
22# Enforce limits and safety checks
23max-allowed-packet             = 16M
24max-connect-errors             = 1000000
25innodb                         = FORCE
26
27# DATA STORAGE #
28# Select location for database files
29datadir                        = /var/lib/mysql/
30
31# BINARY LOGGING #
32# Enable and setup the binary log
33log-bin                        = /var/lib/mysql/mysql-bin
34expire-logs-days               = 14
35sync-binlog                    = 1
36
37# CACHES AND LIMITS #
38# Configure reasonable default limits throughout Percona Server
39tmp-table-size                 = 32M
40max-heap-table-size            = 32M
41query-cache-type               = 0
42query-cache-size               = 0
43max-connections                = 500
44thread-cache-size              = 50
45open-files-limit               = 65535
46table-definition-cache         = 1024
47table-open-cache               = 2048
48
49# INNODB #
50# Setup InnoDB/XtraDB engine a 300MB buffer pool and 32MB log file size
51innodb-flush-method            = O_DIRECT
52innodb-log-files-in-group      = 2
53innodb-log-file-size           = 32M
54innodb-flush-log-at-trx-commit = 1
55innodb-file-per-table          = 1
56innodb-buffer-pool-size        = 300M
57
58# LOGGING #
59# Setup log file locations for error log and slow log
60# Slow log may be disabled on production setups to prevent extra IO
61log-error                      = /var/lib/mysql/mysql-error.log
62log-queries-not-using-indexes  = 1
63slow-query-log                 = 1
64slow-query-log-file            = /var/lib/mysql/mysql-slow.log

对于较大的Dropplets,或者作为定制配置文件的起点,您可以使用 Percona Configuration Wizard为您的配置文件创建一个合适的基础。

保存文件后,您可以重新启动 Percona Server:

1service mysql restart

如果服务器无法启动此配置,请尝试将 innodb-buffer-pool-size 缩小为较小的值,然后重复上面的命令。

步骤五:检查您的安装

现在我们已经安装并运行了 Percona Server,我们可以通过执行几个最终检查来确保一切顺利进行,首先,使用 mysql 客户端连接到数据库,使用您的数据库根用户密码登录:

1mysql -u root -p
 1Enter password: 
 2Welcome to the MySQL monitor. Commands end with ; or \g.
 3Your MySQL connection id is 45
 4Server version: 5.5.38-35.2 Percona Server (GPL), Release 35.2, Revision 674
 5
 6Copyright (c) 2009-2014 Percona LLC and/or its affiliates
 7Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
 8
 9Oracle is a registered trademark of Oracle Corporation and/or its
10affiliates. Other names may be trademarks of their respective
11owners.
12
13Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
14
15mysql>

我们可以立即看到,连接文本中的服务器版本现在正在指定 Percona Server. 通过使用 SHOW VARIABLES 命令,我们可以挖掘有关已安装的特定版本的进一步细节:

1SHOW VARIABLES LIKE "version%";
1+-------------------------+--------------------------------------------------+
2| Variable_name           | Value                                            |
3+-------------------------+--------------------------------------------------+
4| version                 | 5.5.38-35.2                                      |
5| version_comment         | Percona Server (GPL), Release 35.2, Revision 674 |
6| version_compile_machine | x86_64                                           |
7| version_compile_os      | debian-linux-gnu                                 |
8+-------------------------+--------------------------------------------------+
94 rows in set (0.00 sec)

确切的值和版本可能在您的安装中有所不同,但关键是我们现在有Percona Server运行而不是MySQL。

接下来,我们可以检查我们是否正在利用 XtraDB 用于任何基于 InnoDB 的表:

1SHOW STORAGE ENGINES\G

结果将显示这个块,在许多其他人中:

 1...
 2
 3*************************** 8. row ***************************
 4      Engine: InnoDB
 5     Support: DEFAULT
 6     Comment: Percona-XtraDB, Supports transactions, row-level locking, and foreign keys
 7Transactions: YES
 8          XA: YES
 9  Savepoints: YES
10
11...
12
139 rows in set (0.00 sec)

答案中的评论字段显示,XtraDB引擎已被加载为基于InnoDB的表的引擎,作为最后检查,建议您确保您的所有数据库和表在新服务器中正确阅读。

如果所有这些检查都通过了,您现在已经成功运行了 Percona Server. 但是,如果任何这些检查都没有成功,请确保您已经正确完成了本教程的所有前一步,特别注意匹配MySQL版本号和Percona Server版本号。

下一步

由于 Percona 与 MySQL 兼容,所以所有涉及 MySQL 的 DigitalOcean 教程都可以安全地与 Percona Server 一起使用。

MySQL命令将像以前一样工作。

Published At
Categories with 技术
comments powered by Disqus