背景
mariadb介绍
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
3种方式部署
通过yum方式安装
centos(或者其他发行版)都在自己的官方源内包含了相应的版本可以直接通过自己的包管理器安装
#centos 7
yum install mariadb-server -y
#centos 6
yum install mysql-server -y
通常情况下发行版内置库的maraidb的版本都比较老。为了照顾用户渴望使用新版本而又想方便管理,mariadb官方提供了一个新版本的更新源。用户可以根据提示去配置自己的更新源去使用新版的mariadb,官方链接如下
https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.2
示例:这里以centos7为例。
在 /etc/yum.repos.d/下创建maraidb.repo
vim /etc/yum.repos.d/mariadb.repo
在文件内写入如下字段
# MariaDB 10.2 CentOS repository list - created 2018-06-05 07:06 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
保存后清除yum缓存,并重新构建缓存
yum clean all
yum makecache
等待缓存构建完成后就可以通过yum直接安装管理新版的mariadb了。
#查看mariadb的版本信息
yum info mariadb-server
#安装新版mariadb,默认优先安装新版
yum install mariadb-server -y
centos7 安装二进制mariadb-10.2.15
检查本机的配置环境
关闭selinux ,清除iptables规则
setenforce 0
iptables -F
iptables -X
获取二进制包
在官方下载页https://downloads.mariadb.org/mariadb/10.2.15/#
下找到如下包(这里是64位包)下载到本地
创建用户组和对应目录
创建用户和组
useradd -r -d /data/mysqldb -s /sbin/nologin mysql
创建目录
mkdir -pv /data/mysqldb
chown mysql:mysql /data/mysqldb
chmod 770 /data/mysqldb
解压压缩包并配置环境变量
解压压缩包并指定目录
tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/
创建软连接方便日后升级,修改文件权限
cd /usr/local
ln -s mariadb-10.2.15-linux-x86_64/ mysql
chown -R root:root mysql/
配置环境变量
echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
#重读环境信息,使变量生效
. /etc/profile.d/mysql.sh
准备配置文件启动脚本和初始化数据库
准备配置文件并且修改为合适的参数
cd /usr/local/mysql
cp support-files/my-huge.cnf /etc/my.cnf
#修改配置文件
vim /etc/my.cnf
[mysqld]
datadir=/data/mysqldb 加此行
初始化数据库
cd /usr/local/mysql
scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
准备启动脚本并启动服务
cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
做安全初始化
mysql_secure_installation
配置完成后登陆数据库验证
mysql -u用户 -p密码
centos7.4 源码编译安装 mariadb-10.2.15
配置开发环境,预先安装需要的包
安装开发环境工具包
yum groupinstall "Development Tools" -y
安装需要的其他包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel
创建用户,目录并获取源码包
创建目录和用户
mkdir /data
useradd -r –s /bin/false -m –d /data/mysqldb/ mysql
#ps:
# /bin/false是最严格的禁止login选项,一切服务都不能用,而/sbin/nologin只是不允许系统login,可以使用其他ftp等服务
获源码包,官方链接https://downloads.mariadb.org/mariadb/10.2.15/#
编译安装
#参考文档mysql,真心吐槽mariadb什么时候也来个正式的文档
https://dev.mysql.com/doc/
解压源码包
tar xvf mariadb-10.2.12.tar.gz
进入目录并指定编译参数
cd mariadb-10.2.15
#mariadb使用的cmake进行编辑安装
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/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=/app/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
#安装
make &&make install
参数详解
cmake . \
#安装目录,各人按喜好设置
-DCMAKE_INSTALL_PREFIX=/app/mysql \
#数据库目录,各人按喜好设置
-DMYSQL_DATADIR=/data/mysqldb/ \
#数据库配置文件目录
-DSYSCONFDIR=/etc \
#指定运行用户
-DMYSQL_USER=mysql \
#WITH_xxx_STORAGE_ENGINE将xxx存储引擎静态编译到服务器中
-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 \
#是否使用readline捆绑在发行版中的库。MySQL 5.6.5中删除了这个选项,因为readline它不再被捆绑。
#这里可以不再指定
-DWITH_READLINE=1 \
#SSL的支持类型
#ssl_type 可以是以下值之一:
#yes:使用系统SSL库(如果存在),否则使用与发行版捆绑的库。
#bundled:使用捆绑在发行版中的SSL库。这是默认设置。
#system:使用系统SSL库。
-DWITH_SSL=system \
#某些功能要求服务器与压缩库支持来构建,如 COMPRESS()与 UNCOMPRESS()功能,并在客户端/服务器协议的压缩。该 WITH_ZLIB指示的源zlib支持:
#bundled:使用zlib与发行版捆绑在一起的库。这是默认设置。
#system:使用系统 zlib库。
-DWITH_ZLIB=system \
#是否包含libwrap(TCP封装)支持
-DWITH_LIBWRAP=0 \
#该选项控制LOCALMySQL客户端库的编译默认 功能。因此,没有明确安排的客户端会LOCAL根据ENABLED_LOCAL_INFILEMySQL构建时指定的设置禁用或启用功能 。
-DENABLED_LOCAL_INFILE=1 \
#服务器侦听套接字连接的Unix套接字文件路径。这必须是绝对路径名称。默认是/tmp/mysql.sock。
#该值可以在服务器启动时使用该--socket选项进行设置 。
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \
#服务器字符集。默认情况下,MySQL使用 latin1(cp1252西欧)字符集。
#charset_name可以是一种 binary,armscii8, ascii,big5, cp1250,cp1251, cp1256,cp1257, cp850,cp852, cp866,cp932, dec8,eucjpms, euckr,gb2312, gbk,geostd8, greek,hebrew, hp8,keybcs2, koi8r,koi8u, latin1,latin2, latin5,latin7, macce,macroman, sjis,swe7, tis620,ucs2, ujis,utf8, utf8mb4,utf16, utf16le,utf32。允许的字符集在cmake/character_sets.cmake文件中被列为 值CHARSETS_AVAILABLE。
#该值可以在服务器启动时使用该--character_set_server选项进行设置 。
-DDEFAULT_CHARSET=utf8 \
#服务器默认排序字符集。默认情况下,MySQL使用 latin1_swedish_ci。使用该 SHOW COLLATION语句来确定每个字符集可用的排序规则。
#该值可以在服务器启动时使用该--collation_server选项进行设置 。
-DDEFAULT_COLLATION=utf8_general_ci
环境变量配置与启动数据库
准备环境变量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
生成数据库信息
cd /app/mysql/
scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql
生成并修改配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
vim /etc/my.cnf
#指定数据目录
[mysqld]
datadir=/data/mysqldb
修改启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
#修改
vim /etc/init.d/mysqld
basedir=/app/mysql
datadir=/data/mysqldb
启动服务
修改/app/mysql权限
chown mysql:root /app/mysql
添加服务并启动
chkconfig --add mysqld
service mysqld start
mariadb实现多实例
安装mariadb
为了省事就直接yum安装了,其实不论如何安装基本步骤都相似
yum install mariadb-server -y
创建目录,清除环境影响
关闭selinux 清空防火墙数据
getenforce 0
iptables -F
iptables -X
建立目录并修改权限
mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv
chown -R mysql.mysql /mysqldb/
创建数据库信息
创建各自的数据库信息
mysql_install_db --datadir=/mysqldb/3306/data --user=mysql
mysql_install_db --datadir=/mysqldb/3307/data --user=mysql
mysql_install_db --datadir=/mysqldb/3308/data --user=mysq
修改配置文件和启动脚本
由于是yum安装的数据库,所以配置文件已经生成,这里仅需要略作修改即可
修改3306的配置文件
cp /etc/my.cnf /mysqldb/3306/etc/
#修改以下信息
vim /mysqldb/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/mysqldb/3306/data
socket=/mysqldb/3306/socket/mysql.sock
[mysqld_safe]
log-error=/mysqldb/3306/log/mariadb.log
pid-file=/mysqldb/3306/pid/mariadb.pid
#!includedir /etc/my.cnf.d
将3306实例的配置文件分别复制给3307和3308并修改
cp /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/my.cnf
cp /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/my.cnf
vim /mysqldb/3308/etc/my.cnf
vim /mysqldb/3307/etc/my.cnf
编写启动脚本并拷贝到对应路径
示例脚本
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/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} -p${mysql_pwd} -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
拷贝到对应目录
cp mysqld /mysqldb/3306/
cp mysqld /mysqldb/3307/
cp mysqld /mysqldb/3308/
修改权限
chmod 700 /mysqldb/3308/mysqld
chmod 700 /mysqldb/3307/mysqld
chmod 700 /mysqldb/3306/mysqld
修改对应的信息
vim /mysqldb/3306/mysqld
vim /mysqldb/3307/mysqld
vim /mysqldb/3308/mysqld
启动服务并连接数据库
启动服务
/mysqldb/3308/mysqld start
/mysqldb/3307/mysqld start
/mysqldb/3306/mysqld start
连接数据库
mysql -S /mysqldb/3308/socket/mysql.sock
mysql -S /mysqldb/3307/socket/mysql.sock
mysql -S /mysqldb/3306/socket/mysql.sock
验证是否以不同端口登陆
#在mariadb内输入
show variables like '%port%';
转载于:https://blog.51cto.com/11010461/2125170