CentOS下二进制安装MariaDB 10.2.4

  • 内容
  • 评论
  • 相关

MariaDB是MySQL源代码的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB,XtraDB完全兼容InnoDB,创建一个InnoDB表内部默认会转换成XtraDB。

Percona XtraDB 是 InnoDB 存储引擎的增强版,用来更好地发挥最新的计算机硬件系统性能,同时还包含一些在高性能环境下的新特性。XtraDB 存储引擎是完全的向下兼容,在 MariaDB 中,XtraDB 存储引擎被标识为"ENGINE=InnoDB",这与 InnoDB 是一样的,所以可以直接用XtraDB 替换掉 InnoDB,而不会产生任何问题。XtraDB 在 InnoDB 的基础上构建,使 XtraDB 具有更多的特性,更多的参数指标和更多的扩展。从实践的角度来看,XtraDB 在CPU多核的条件下更有效的使用内存,并且性能更高。从 MariaDB 5.1 开始就默认使用 XtraDB 存储引擎。

MariaDB由MySQL的创始人Michael (Monty) Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael (Monty) Widenius的女儿Maria的名字。

一、MariaDB 10.1以上版本在Centos中编译安装的纠结事

本来,一直打算编译安装MariaDB的,但是自从MariaDB版本升级到10.1以后,一直编译不成功,源于新版本加入了C++11的特性及tokudb引擎,编译一直报错,提示C++11不支持。

[17:33:03]CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:177 (message):
[17:33:03]  /usr/bin/c++ doesn't support -std=c++11 or -std=c++0x, you need one that
[17:33:03]  does.
[17:33:03]Call Stack (most recent call first):
[17:33:03]  storage/tokudb/PerconaFT/CMakeLists.txt:38 (include)
[17:33:03]
[17:33:03]
[17:33:03]-- Configuring incomplete, errors occurred!
[17:33:03]See also "/root/soft/mariadb-10.2.4/CMakeFiles/CMakeOutput.log".
[17:33:03]See also "/root/soft/mariadb-10.2.4/CMakeFiles/CMakeError.log".

我是欲哭无泪啊,百度谷歌翻了个遍,尝试各种方法,最终还是以失败而告终,没办法,总得上吧?只好曲线救国了,用官方编译好的二进制文件安装了。

二、系统软件版本

1、系统:CentOS Linux release 7.2.1511 (Core)

2、MariaDB:mariadb-10.2.4-linux-systemd-x86_64 //下载地址:https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.2.4/bintar-linux-systemd-x86_64/mariadb-10.2.4-linux-systemd-x86_64.tar.gz

三、编译前准备工作

1、新建MariaDB运行账户

groupadd mariadbs //创建mariadbs组
useradd -M -N -s /sbin/nologin -G mariadbs mariadb //创建mariadb用户并附加mariadbs组,-M不建立用户目录,-N不创建同名组,-s执行shell禁止登录

2、创建MariaDB数据存放文件夹(非必须,只是为了方便维护,生产环境建议自定目录,以免日志增长导致系统盘爆满)

mkdir /data/mariadb
mkdir /data/mariadb/logs
mkdir /data/mariadb/data

四、二进制安装MariaDB

1、首先解压至运行

tar -zxvf mariadb-10.2.4-linux-systemd-x86_64.tar.gz -C /usr/local/  //解压至指定路径
mv mariadb-10.2.4-linux-systemd-x86_64/ mariadb/  //重命名文件夹

2、拷贝配置文件指/etc/目录

cp mariadb/support-files/my-huge.cnf /etc/my.cnf
注:
MariaDB安装成功后也会与MySQL一样,有几个默认的配置模板,列表如下:
my-innodb-heavy-4G.ini:支持4G内存,支持InnoDB引擎,支持事务(ACID)等特性所使用
my-huge.cnf: 用于高端产品服务器,包括1到2GB RAM,巨型数据库系统使用
my-large.cnf:用于中等规模的产品服务器,大型数据库系统使用,包括大约512M RAM
my-medium.cnf:用于低端产品服务器,中型数据系统使用,包括很少内存(少于128M)
my-small.cnf:用于最低设备的服务器,小型数据库系统,目的是不占更多的系统资源!只有一点内存(少于64M)

3、设置MariaDB自动启动服务

cp mariadb/support-files/mysql.server /etc/init.d/mariadb  //拷贝启动配置文件至启动目录
vim /etc/init.d/mariadb  //编辑以下两行启动配置文件(以下两行)
basedir=/usr/local/mariadb  //指定bin路径
datadir=/data/mariadb/data  //指定数据存放路径

chmod +x /etc/init.d/mariadb  //添加运行权限
chkconfig --add mariadb  //添加启动启动

4、设置目录权限

chown -R mariadb:mariadbs /usr/local/mariadb/
chmod -R 775 /usr/local/mariadb/
chown -R mariadb:mariadbs /data/mariadb/
chmod -R 775 /data/mariadb/

5、设置环境bian

vim /etc/profile.d/mariadb.sh  //新建文件并加入以下两行(路径请按实际情况修改)
export PATH=/usr/local/mariadb/bin/:$PATH
export PATH=$MYSQL/bin:$PATH

. /etc/profile.d/mariadb.sh  //执行文件

6、修改MariaDB运行账户

vim /usr/local/mariadb/bin/mysqld_safe  //编辑文件
user='mysql'  //查找该行并替换mysql为mariadb,即:user='mariadb'

五、初始化MariaDB

1、初始化MariaDB系统数据库

/usr/local/mariadb/scripts/mysql_install_db --user=mariadb --basedir=/usr/local/mariadb/ --datadir=/data/mariadb/data/ --defaults-file=/etc/my.cnf  //--user为MariaDB运行用户,--basedir为指定程序路径 --datadir为指定数据库存放路径 --defaults-file为指定配置文件

2、启动MariaDB

systemctl daemon-reload  //重新加载配置文件
service mariadb start  //启动MariaDB

3、执行安全配置安装脚本

/usr/local/mariadb/scripts/mysql_secure_installation --basedir=/usr/local/mariadb/

脚本打印如下:

print: /usr/local/mariadb//bin/my_print_defaults

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):   //输入root的当前密码(若无直接回车)
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n]   //设置root密码?(默认Y是的)
New password:   //新密码
Re-enter new password:   //重复新密码
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]   //删除匿名用户?(默认Y是的)
\ ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]   //禁止root登录远程?(默认Y是的,如果您只在本机内访问MariaDB,建议按默认设置,回车继续。 如果您还有其他云主机需要使用root账号访问该数据库,则需要选择n。)
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]   //删除测试数据库并禁止访问它?(默认Y是的)
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]   //现在重新加载权限表?(默认Y是的,因为我们上面更新了root的密码,这里需要重新加载)
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

3、完成后你会看到Thanks for using MariaDB!提示,MariaDB安全设置成功,接下来你可以登陆MariaDB了。

mysql -uroot -p

六、开启慢日志查询并记录到数据库

1、首先查询mariadb慢日志查询功能是否开启

MariaDB [(none)]> show variables like 'slow_query_log'
    -> ;//
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | OFF   |  //OFF为未开启
+----------------+-------+

2、开启慢日志查询并记录到数据库

vi /etc/my.cnf
在 [mysqld]字段内加入以下行
slow_query_log = 1  //开启慢日志查询
long_query_time = 2  //把查询时间超过2秒的定义为慢查询,也可以设置为1秒
log_output = 'TABLE'  //保存日志到mysql数据库中的slow_log表

3、最后重启数据库即可。

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注