配置YUM源
配置MariaDB的YUM源
添加MariaDB.repo文件并置于“/etc/yum.repos.d/”目录下。
MariaDB.repo文件内容如下(此处添加以10.2的版本为例):
# MariaDB 10.2 CentOS repository list - created 2018-07-10 05:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
此处使用了国内源http://mirrors.ustc.edu.cn/help/mariadb.html,由于官网的源因为我的国的原因其慢无比,大家都懂的!
安装MariaDB相关模块
模块说明
MariaDB-server:MariaDB服务器。
MariaDB-client:启动MariaDB客户端所需要的程序与文件。
MariaDB-common:启动MariaDB服务器或客户端所需的设置文件(my.cnf),或定义字符集的xml文件。
MariaDB-test:用户测试MariaDB的程序。
集群工具相关模块:
MariaDB-Galera-server:MariaDB+Galera Cluster安装程序。
galera:MariaDB+Galera Cluster的Galera库。
使用YUM安装
核心基础模块
执行以下命令完成安装:
$ yum install MariaDB-server MariaDB-client MariaDB-test MariaDB-common
集群工具模块
$ yum install MariaDB-Galera-server galera
配置
数据库主配置文件
默认的配置文件在名称在Linux和Windows下在不同的存放目录。
Linux:在该系统下文件存放在/etc/my.cnf。
Windows:在该系统下文件存放在c:\windows\my.ini或这c:\my.cnf。
配置文件分为多个小结,每节前面都会有一个用方括号括起来的标题。例如:服务器守护进程的设置在[mysqld]小节,在该小节加入log=/var/log/mysql这样的配置设置日志文件的路径,并激活日志文件功能。
修改root密码
修改root密码有多种方式,我们使用mysqladmin管理工具来完成root密码修改。
- 在Linux命令行,不登录MariaDB的情况下,执行以下命令会提示输入旧密码(如果是新安装的数据库,初始化密码为空,直接回车即可),如果旧密码通过验证,会提示输入两次新密码。
$ mysqladmin -u root -p flush-privileges password
Enter password:
New password:
Confirm new password:
如果控制台提示以下错误信息,则需要在数据库主配置文件的[mysqld]小节,加入skip-grant-tables。然后重启数据库服务。
$ mysqladmin -u root -p flush-privileges root
Enter password:
mysqladmin: reload failed; error: 'Access denied; you need (at least one of) the RELOAD privilege(s) for this operation'
$ service mysql restart
- 数据库命令修改密码
启动MariaDB
启动MariaDB服务器
执行命令:$ service mysql start
终止MariaDB服务器
执行命令:$ service mysql stop
重启MariaDB服务器
执行命令:$ service mysql restart
查看MariaDB服务器的进程状态
只有当MariaDB注册为服务后,才可以通过以下命令查看其进程状态:
$ service mysql status
查看MariaDB是否在可管理列表中
执行命令:$ chkconfig –list,结果列表中包含以下一行信息:
mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
如果结果列表不存在以上信息,则执行以下命令将其添加到可管理列表:
$ chkconfig add mysqld
将MariaDB设置为开机启动
执行命令:$ chkconfig mysqld on
程序长时间未交互数据库连接超时问题
MaraDB与MySQL一样,存在8小时连接超时的问题。
问题说明:
当程序的连接池或客户端创建连接,进行了一系列的数据库操作后,数据库服务器在连接创建后,默认存在一个wait_timeout设置,设定了默认等待连接超时时长。默认为8小时,28800秒 = 60秒 * 60分钟 * 8。也就是说,如果持续8小时没有任何程序连接数据库服务器,数据库服务器将关闭连接,但不会通知程序。当程序再次进行数据库库操作时,持有的是一个已关闭的连接进行操作,所以不能正常操作数据。wait_timeout设置时长小于程序连接池或客户端持有连接的时长,当程序再次访问数据库时,会出现无法连接访问数据库的错误。
要解决这个问题,其实很简答,将wait_timeout设置的时长修改到一个合理的更久的等待时长。同时需要将interactive_timeout设置为相同的值,因为interactive_timeout,wait_timeout 这两个参数只有一个起作用。
- 首先查看当前wait_timeout设置的时长,命令行命令如下
$ show global variables like "wait_timeout";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)
- 解决问题
- 首选推荐在my.cnf配置文件中进行配置
紧跟[mysqld]换行配置
- 首选推荐在my.cnf配置文件中进行配置
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
linux下,my.cnf的全路径为/etc/my.cnf,将以上配置内容添加到文件中,重启数据库服务即可。
windows下,配置文件为my.ini,配置文件全路径为$MARADB_HOME/data/my.ini。
- 使用数据库连接池配置解决问题
数据库连接池常用的有c3p0、Apache旗下有DBCP、Tomcat的JDBC-POOL。
此处我们介绍Tomcat8的JDBC-POOL,它的官方文档地址:http://tomcat.apache.org/tomcat-8.5-doc/index.html
首先还是先说下c3p0解决连接失效的问题
maxIdleTime属性,单位为秒。作用是设置最大空闲时间,例如:设置为1800,代表1800秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0。该值一定要小于数据库配置的wait_timeout时长。关于DBCP和Tomcat的JDBC-POOL
这个两个数据源连接池解决连接失效问题的方式一致,需要设置两个属性。testOnBorrow属性,默认为false,我们需要将他设置为true,表示每次进行数据库操作时使用下一个属性设置的查询语句验证连接是否可用,不可用将使用连接池中可用的连接进行数据库操作。validationQuery属性,设置验证连接是否可用的语句,通常我们将值设置为select 1
通过DBCP和Tomcat的JDBC-POOL数据源连接池配置连接可用检查和c3p0独有的固定时长配丢弃连接的配置,来解决数据库连接失效的方案后,就可以不考虑数据库配置的wait_timeout时长配置了(注意:c3p0的配置数值,一定要小于数据库配置的wait_timeout时长)。