安装MySQL、MariaDB

MariaDB简介

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。MariaDB的API和协议兼容MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。由于担心甲骨文MySQL的一个更加封闭的软件项目,Fedora的计划在Fedora 19中的以MariaDB取代MySQL,维基媒体基金会的服务器同样也使用MariaDB取代了MySQL。

1-1、编译安装

1-1.1、安装编译环境,及依赖包

yum install bison bison-devel zlib-devel libcurl-devel
yum install libarchive-devel boostdevelgcc gcc-c++ cmake ncurses-devel
yum insatll gnutls-devel libxml2-devel openssldevel libevent-devel libaio-devel

依赖包很多,根据情况自行安装。(以上包应该可以解决绝大部分环境问题)

1-1.2、创建用户和相关目录

mkdir /data/
useradd -r -s /sbin/nologin -m -d /data/mysqlbd mysql

!! 通常建议将数据库放在单独的磁盘,最好是逻辑卷

1-1.3、根据需要选择编译选项可以参考官方文档

https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

cmake . \
-DCMAKE_INSTALL_PREFIX=/var/mysql \
-DMYSQL_DATADIR=/data/mysqldb/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/var/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make && make install

编译安装的过程根据个人硬件配置所需时间不等。

1-1.4、参考二进制安装方法安装

1-2、二进制安装

准备好安装源,检查环境,确保防火墙、SELinux处于关闭状态,没有安装mysql系列软件

1-2.1、准备用户

useradd -r -s /sbin/nologin -m -d /data/mysqlbd mysql
如果目录不是自动创建,确保权限属于mysql

1-2.2、将包解压到指定路径,或使用软链接

tar -xvf mariadb-xxx -C /usr/local
chown -R root.mysql mariadb-xxx
mv /usr/local/mariadb-xxx /usr/local/mysql
或
ln -s mariadb-xxx mysql(建议使用软链接)

1-2.3、修改系统程序设定

echo PATH=/usr/local/mysql/bin:$PATH >> /etc/profile.d/env.sh

1-2.4、生成数据库文件

进入mysql的安装目录执行以下脚本–必须在mysql安装目录

cd /usr/local/mysql
scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql

如果执行结果出现OK,则命令执行成功,可以到/data/mysqldb目录下查看
生成的相关文件
–datadir用来指定数据库目录,也就是刚才规划的mysql用户的home目录
此目录会用来存放数据库
–user以指定用户执行此脚本

1-2.5、修改mysql相关配置文件

路径/usr/local/mysql/support-files
根据需求选择对应的文件覆盖到/etc/my.cnf 建议先将此文件备份

cp -a support-files/my-huge.cnf /etc/my.cnf
然后在文件中添加如下信息
datadir = /data/mysqldb

1-2.6、添加服务脚本

cp -a support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld

给mysql安装目录设置一个ACL权限

setfacl -m u:mysql:rwx mysql
service mysqld start

1-2.7、执行以下命令已设置mysql安全选项

脚本位于mysql安装目录下的bin目录中
此项设定非常重要,原因是默认情况下mysql为空密码,命令为交互式命令,根据提示
信息修改密码和其他设定。
mysql_secure_installation

1-3、包管理器

可以在mariadb官网找到对应的mariadb的yum源,添加到yum源之后可以使用yum安装指定版本mariadb
在下面的路径选择需要的版本,然后根据页面信息选择需要的安装方法。

https://downloads.mariadb.org/mariadb

yum install mysql-server
yum install mysql

yum install mariadb-server
yum install mariadb

1-4、多实例安装mysql

所谓多实例安装其实很类似win下的应用多开。不过在Linux下需要为每个实例指定端口
来确保多个实例不会冲突,使用继续刚才源码安装的示例:

1-4.1、创建多个文件夹以存放额外实例的配置以及数据库文件

mkdir /data/{3307,3308}/{etc,socket,pid,log,data} -pv
chown -R mysql.myql /data/

1-4.2、创建对应的默认数据库

cd /var/mysql
scripts/mysql_install_db --datadir=/data/3307/data --user=mysql
scripts/mysql_install_db --datadir=/data/3308/data --user=mysql

1-4.3、复制配置文件并修改

cp -a /etc/my.cnf /data/3307/etc/
cp -a /etc/my.cnf /data/3308/etc/

根据需要对应的端口配置文件中的以下选项

[mysqld]
port=3307
datadir=/data/3307/data
socket=/data/3307/socket/mysql.sock
以下内容如果没有,手动添加,有的话修改
[mysqld_safe]
log-error=/data/3307/log/mariadb.log
pid-file=/data/3307/pid/mariadb.pid
#!includedir /etc/my.cnf.d

1-4.4、创建服务启动脚本

虽然原生的脚本功能强大,不过代码量有些过大,所以,来点简单的
路径放到自己分配的目录下即可。内容如下:
其中port、cmd_path、mysql_basedir根据配置修改为对应的信息即可

#!/bin/bash

port=3307
mysql_user="root"
cmd_path="/app/mysql/bin"
mysql_basedir="/mysqldb"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &;
else
printf "MySQL is running...\n"
exit
fi
}

function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
${cmd_path}/mysqladmin -u ${mysql_user} -S ${mysql_sock} shutdown
fi
}

function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac

1-4.4、启动服务,连接服务

注意需要使用绝对路径来启动服务

/data/3307/mysql start|stop|restart
/data/3307/mysql start|stop|restart

使用-S选项指定要连接的socket文件

mysql -S /data/3307/socket/mysql.sock
mysql -S /data/3308/socket/mysql.sock
上一篇
下一篇