数据库服务器是当今应用所必需的网络基础设施的关键组件。 没有存储,检索,更新和删除数据的能力(在需要时),Web和桌面应用程序的有用性和范围变得非常有限。
安装,保护和性能调整MariaDB服务器
此外,了解如何安装,管理和配置数据库服务器(以便其按预期运行)是每个系统管理员必须具备的一项基本技能。
在本文中,我们将简要回顾如何安装和保护MariaDB数据库服务器,然后我们将解释如何配置它。
安装和保护MariaDB服务器
在CentOS 7.x中 ,MariaDB的取代MySQL的,仍然可以在Ubuntu上找到(与MariaDB的一起)。 同样是真实openSUSE的。
为简便起见,我们将只在本教程中使用MariaDB的 ,但请注意,除了有不同的名称和发展理念,无论是关系型数据库管理系统 (RDBMS的简称)几乎是相同的。
这意味着,客户端的命令是在两个MySQL和MariaDB的相同,并且配置文件命名,并且在同一个地方。
要安装MariaDB,请执行:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # yum update && yum install mariadb mariadb-server # CentOS --------------- On Debian and Ubuntu --------------- $ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server --------------- On openSUSE --------------- # zypper update && zypper install mariadb mariadb-tools # openSUSE
需要注意的是,在Ubuntu,你会被要求输入的RDBMS root用户的密码。
一旦上述软件包安装,确保数据库服务正在运行,并已启动在启动时自动(在CentOS的和openSUSE,您将需要手动执行此操作,而在Ubuntu的安装过程中会已经采取了照顾它为你):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # systemctl start mariadb && systemctl enable mariadb --------------- On openSUSE --------------- # systemctl start mysql && systemctl enable mysql
然后运行mysql_secure_installation
脚本。 此过程将允许您:
- 设置/重置RDBMS root用户的密码
- 删除匿名登录(从而只允许具有有效帐户的用户登录到RDBMS)
- 禁用除localhost之外的计算机的根访问
- 删除测试数据库(任何人都可以访问)
- 激活与1到4相关联的更改。
对于这个过程的详细说明,可以参考在安装后部分在RHEL / CentOS的/ Fedora和于Debian / Ubuntu安装MariaDB的数据库 。
配置MariaDB服务器
:默认的配置选项,从给定的顺序下列文件中读取/etc/mysql/my.cnf
, /etc/my.cnf
,和~/.my.cnf
。
大多数情况下,只/etc/my.cnf
存在。 正是在这个文件中,我们将设置服务器范围的设置(可以用相同的设置在被覆盖~/.my.cnf
为每个用户)。
我们需要注意的第一件事my.cnf
是设置分为其中每个类别名称括用方括号类别(或组)。
服务器系统配置在给定[mysqld]
部分,在这里通常你会发现只有在下面的表中的前两个设置。 其余的是其他经常使用的选项(如果指定,我们将更改默认值与我们选择的自定义选项之一):
设置和描述 | 默认值 |
datadir的是,其中数据文件存储的目录。 | datadir = / var / lib / mysql |
套接字指示用于本地客户端连接的套接字文件的名称和位置。 请记住,套接字文件是用于在应用程序之间传递信息的资源。 | socket = / var / lib / mysql / mysql.sock |
bind_address是数据库服务器监听TCP / IP连接的地址。 如果您需要您的服务器监听多个IP地址,请忽略此设置(0.0.0.0,这意味着它将监听分配给此特定主机的所有IP地址)。 我们将更改此项以指示服务仅监听其主地址(192.168.0.13): bind_address = 192.168.0.13 |
bind_address = 0.0.0.0 |
port表示数据库服务器将要监听的端口。 我们将替换默认值(3306)为20500(但我们需要确保没有什么是使用该端口): 虽然有些人会认为通过晦涩的安全性不是好的做法,但是更改默认应用程序端口是一个基本的有效方法,以阻止端口扫描。 |
port = 3306 |
innodb_buffer_pool_size是为使用Innodb(这是MariaDB中的默认值)或XtraDB作为存储引擎时频繁访问的数据和索引分配的内存的缓冲池(以字节为单位)。 我们将替换默认值为256 MB: innodb_buffer_pool_size = 256M |
innodb_buffer_pool_size = 134217728 |
skip_name_resolve指示在传入连接上是否解析主机名。 如果设置为1,正如我们在本指南中将做的,只有IP地址。 除非您需要主机名来确定权限,建议通过将其值设置为1来禁用此变量(以加速连接和查询): skip_name_resolve = 1 |
skip_name_resolve = 0 |
query_cache_size表示磁盘中查询缓存可用的大小(以字节为单位),其中存储SELECT查询的结果以供将来执行相同的查询(对同一数据库和使用相同的协议和相同的字符集)时使用。 您应该根据1)重复查询的数量和2)这些重复查询要返回的记录的大致数量来选择与您的需求相匹配的查询缓存大小。 我们将此值设置为100 MB,暂时: query_cache_size = 100M |
query_cache_size = 0(这意味着它被默认禁用) |
max_connections是到服务器的并发客户端连接的最大数目。 我们将此值设置为30: max_connections = 30每个连接将使用一个线程,因此将消耗内存。 在设置max_connections时考虑这个事实。 |
max_connections = 151 |
thread_cache_size表示在客户端断开连接并释放以前使用的线程后,服务器分配以供重用的线程数。 在这种情况下,重用线程比实例化一个线程更便宜(性能方面)。 同样,这取决于您期望的连接数。 我们可以安全地将此值设置为max_connections的一半: thread_cache_size = 15 |
thread_cache_size = 0(默认情况下禁用) |
在CentOS的 ,我们需要告诉SELinux的允许MariaDB的收听重新启动服务之前非标准端口(20500)上:
# yum install policycoreutils-python # semanage port -a -t mysqld_port_t -p tcp 20500
然后重新启动MariaDB服务。
调整MariaDB性能
为了帮助我们检查和调整配置,根据我们的具体需求,我们可以安装mysqltuner(一个脚本,将提供建议,以改善我们的数据库服务器的性能并提高其稳定性):
# wget https://github.com/major/MySQLTuner-perl/tarball/master # tar xzf master
然后将目录更改为从tarball中提取的文件夹(确切的版本可能会有所不同)
# cd major-MySQLTuner-perl-7dabf27
并运行它(您将被提示输入您的管理MariaDB帐户的凭据)
# ./mysqltuner.pl
脚本的输出本身非常有趣,但让我们跳到底部,其中要调整的变量列出了推荐值:
MariaDB性能调优
该query_cache_type
设置指示查询缓存是否(0)禁用或启用(1)。 在这种情况下,mysqltuner劝告我们禁用它。
那么为什么我们建议现在停用它呢? 原因是查询缓存主要用于高读/低写场景(这不是我们的情况,因为我们刚刚安装了数据库服务器)。
警告 :更改到生产服务器的配置之前,我们非常鼓励咨询专家数据库管理员,确保到mysqltuner给出的建议将不会对现有设置产生负面影响。
概要
在本文中,我们已经解释了在我们安装并保护MariaDB数据库服务器后如何配置它。 上表中列出的配置变量仅是在准备服务器以供使用或稍后调整时可能需要考虑的几个设置。 请务必参阅官方文档MariaDB的更改之前,或参阅我们的MariaDB的性能优化技巧:
不要错过: 15有用MariaDB的性能调整和优化技巧
和往常一样,如果您对本文有任何问题或意见,请随时与我们联系。 是否还有其他服务器设置要使用? 随意使用下面的评论表与社区的其他人分享。