CentOS 6 多实例 编译安装mariadb-5.5.59
系统平台:
CentOS release 6.9 (Final)
内核 2.6.32-696.el6.x86_64
1.去官网下载适合的源码包
mariadb-5.5.59.tar.gz
检查系统内是否安装了数据库。
#rpm -qa|grep MariaDB
#rpm -qa|grep mysql
2.去官网下载cmake源码包
cmake最新版本需要c++11支持,gcc4.8以下并未包含,因此,需要下载cmake-3.9.6版本,此版本并不需要C + +11
cmake-3.9.6.tar.gz
查看当前系统gcc版本
#gcc -v
gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
3.解压cmake包至任意临时目录
#tar xvf cmake-3.9.6.tar.gz -C /app
4.编译安装cmake
安装依赖包
# yum install ncurses-devel libaio-devel openssl-devel -y
# yum groupinstall Development tools -y
# cd /app/cmake-3.9.6
#./configure --prefix=/usr/local && gmake -j 4
#gmake install
#which cmake
/usr/local/bin/cmake
#cmake --version
cmake version 3.9.6
5.创建mysql组和账号
#groupadd -g 500 mysql
#useradd -u 500 -g mysql -s /sbin/nologin -M mysql
6.解压mariadb包至任意临时目录
#tar xvf mariadb-5.5.59.tar.gz -C /app
7.编译安装mariadb
# cd mariadb-5.5.59
以下的编译参数,根据自己的需求定制
# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-5.5.59 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_DEBUG=0
我使用的AUSU笔记本是 I5 1CPU 4核,2GB内存,8分钟编译完成。
# make -j 4 && make install
8.创建软链接mysql指向解压后的目录
#cd /usr/local/
#ln -s mariadb-5.5.59/ mysql
9.修改mysql文件夹所属者和所属组
#chown -R mysql.mysql /usr/local/mysql/
10.添加PATH至环境变量中
#echo 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile.d/mysql.sh
检查文件
#cat /etc/profile.d/mysql.sh
加载环境变量文件 并检查
#source /etc/profile.d/mysql.sh
#echo $PATH
11.创建数据库存放文件夹并修改权限
#mkdir -pv /data/sqldb/{3306,3307,3308}/{etc,log,data,pid,socket,tmp}
#chown -R mysql.mysql /data/sqldb/
#chmod -R 770 /data/sqldb/
12.复制主配置文件my.cnf
这里先要确认下本机的内存多少,以便使用一个参考模板。
#grep memory support-files/*
找到适合本机内存的模板 
本机内存为512M,所以选择了my-large.cnf这个配置文件
#\cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
13.修改配置文件
#vim /etc/my.cnf
因为是多实例安装,这里的配置注意参考我的。
当然也可以使用脚本自己带的示例生成样版示例,自行进行修改
#mysqld_multi --example
在配置文件中多个实例使用 mysqldN 进行表示,其中N 代表实例的id,用于在mysqld_multi 命令中指定实例
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi_admin
password = multipass
# The MariaDB server
[mysqld3306]
port = 3306
socket = /data/sqldb/3306/socket/mysql3306.sock
pid-file = /data/sqldb/3306/pid/mysql3306.pid
datadir = /data/sqldb/3306/data
tmpdir = /data/sqldb/3306/tmp
innodb_file_per_table = 1
skip_name_resolve = 1
#******************************* Logs settings ***************************
log-error = /data/sqldb/3306/log/3306error.log
[mysqld3307]
port = 3307
socket = /data/sqldb/3307/socket/mysql3307.sock
pid-file = /data/sqldb/3307/pid/mysql3307.pid
datadir = /data/sqldb/3307/data
tmpdir = /data/sqldb/3307/tmp
******************************* Logs settings ***************************
log-error = /data/sqldb/3307/log/3307error.log
[mysqld3308]
port = 3308
socket = /data/sqldb/3308/socket/mysql3308.sock
pid-file = /data/sqldb/3308/pid/mysql3308.pid
datadir = /data/sqldb/3308/data
tmpdir = /data/sqldb/3308/tmp
******************************* Logs settings ***************************
log-error = /data/sqldb/3308/log/3308error.log
14.安装数据库相关文件
# cd /usr/local/mysql
查看下安装程序的安装参数
#./scripts/mysql_install_db --help
必须在此文件夹内执行以下命令,否则会报以下错误
FATAL ERROR: Could not find ./bin/my_print_defaults
#./scripts/mysql_install_db --datadir=/data/sqldb/3306/data --user=mysql --skip-name-resolve --basedir=/usr/local/mysql
#./scripts/mysql_install_db --datadir=/data/sqldb/3307/data --user=mysql --skip-name-resolve --basedir=/usr/local/mysql
#./scripts/mysql_install_db --datadir=/data/sqldb/3307/data --user=mysql --skip-name-resolve --basedir=/usr/local/mysql
参数说明 :指定此实例的数据目录,跳过DNS解析,指定my_print_defaults的父级目录
出现2个OK即表示安装正常。 
15.复制多实例启动服务脚本至/etc/init.d目录
#cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
16.启动一个实例3306
# mysqld_multi start 3306
17.进行安全配置
由于此源码包中的mysql_secure_installation 工具默认使用 /tmp/mysql.sock 文件进行连接,可以通过创建软连接来指向自定义的socket 文件
#ln -s /data/sqldb/3306/socket/mysql3306.sock /tmp/mysql.sock
#/usr/local/mysql/bin/mysql_secure_installation
Enter current password for root 默认为空
Set root password 设置mysql root密码
Remove anonymous users 是否移除匿名用户登录
Disallow root login remotely 是否禁止root远程登录
Remove test database and access to it? 是否移除test数据和test账号
Reload privilege tables now? 是否立即更新权限
Thanks for using MariaDB!
用完之后删除
#rm -f /tmp/mysql.sock
18. 重复以上2个步骤,将各个实例安全配置完
注意 ln -s /data/sqldb/这里要变化/socket/mysql这里要变化.sock /tmp/mysql.sock
19. 添加每个实例的安全关闭数据库账号
按上面的配置进行mysqld_multi可以正常启动,但关闭时确无法正常关闭。因此需要单独创建一个用于安全账号,调用mysqladmin命令进行关闭。
#mysql -uroot -p -S /data/sqldb/3306/socket/mysql3306.sock -e "grant shutdown on *.* to multi_admin@'localhost' identified by 'multipass';"
#mysql -uroot -p -S /data/sqldb/3307/socket/mysql3307.sock -e "grant shutdown on *.* to multi_admin@'localhost' identified by 'multipass';"
#mysql -uroot -p -S /data/sqldb/3308/socket/mysql3308.sock -e "grant shutdown on *.* to multi_admin@'localhost' identified by 'multipass';"
确认,以下指令更换socket后重复执行即可。
#mysql -uroot -p -S /data/sqldb/3306/socket/mysql3306.sock -e 'select user,password,host from mysql.user where user="multi_admin";'
Enter password:
+-------------+-------------------------------------------+-----------+
| user | password | host |
+-------------+-------------------------------------------+-----------+
| multi_admin | *4FD92416C02EC3BD04A97613DB2CB33717E99D0F | localhost |
+-------------+-------------------------------------------+-----------+
20.将刚才创建的账号密码添加至主配置文件/etc/my.cnf
[mysqld_multi]
user = multi_admin
password = multipass
如果两个实例的数据库关闭密码(mysql的密码,不是系统密码)相同时,可以通过上面的方式进行设置,如果不同,需要在mysqld_multi项里注释掉password项(相当于全局配置),
在各实例里(有生效作用域的配置)添加相应的pasword密码。
21. 添加开机启动
#chkconfig --add mysqld_multi
#chkconfig --list mysqld_multi
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
默认这样添加脚本的话,在启动时会报以下错误
WARNING: my_print_defaults command not found.
Please make sure you have this command available and
in your path. The command is available from the latest
MySQL distribution.
ABORT: Can't find command 'my_print_defaults'.
This command is available from the latest MySQL
distribution. Please make sure you have the command
in your PATH.
解决方法:
第一种.在/etc/init.d/mysqld_multi脚本中的最开始行添加PATH
PATH=/usr/local/mysql/bin:$PATH
第二种.添加一个软链接
#ln -s /usr/local/mysql/bin/my_print_defaults /usr/bin/
22.服务器脚本的使用方法
# mysqld_multi [options] {start|stop|reload|report} [实例编号[,实例编号] ...]
实例编号在/etc/my.cnf中这些位置
[mysqld实例编号]
如:
mysqld_multi start 1-3 启动实例1、2、3
mysqld_multi stop 1-3 关闭实例1、2、3
mysqld_multi stop 8,10-13 关闭实例8、10至13
mysqld_multi stop 没有参数就是全部关闭
mysqld_multi start 启动全部实例
23.客户端连接
本机通过mysql命令进行连接时会受到影响,需要通过-S选项指定socket文件的位置,而远程主机连接不受影响。如:
#mysql -uroot -p -S /data/sqldb/3306/socket/mysql3306.sock
#mysql -uroot -p -h192.168.5.100
至此,MariaDB多实例 编译安装方式安装完毕。
不足之处
mysqld_multi统一管理多个MySQL实例。虽有方便之处,但在使用过程中。也发现了一些不足之处,
1.选项过于简单。仅仅有start、stop、report,而没有status项,所以无法查看服务的状态;
2.在启动、关闭服务时,仅仅是运行start、stop这么一个操作。而不跟踪操作结果,所以无法确保操作成功运行。
CentOS 6 多实例 编译安装mariadb-5.5.59的更多相关文章
- 在centos上编译安装mariadb数据库
一.安装前提(准备数据文件.安装其他依赖的软件) 1.准备数据存放的目录 [root@localhost ~]# fdisk /dev/sdb (fdisk /dev/sdb 创建一个逻辑分区/de ...
- CentOS7编译安装MariaDB
一.环境信息: 操作系统版本:CentOS Linux release 7.3.1611 (Core) 内核版本:3.10.0-514.el7.x86_64 MariaDB版本:mariadb-10. ...
- CentOS 7.0 使用 yum 安装 MariaDB
CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-serve ...
- 不要着急改代码,先想想--centos 6.8下编译安装tmux
诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...
- CentOS 7.2.1511编译安装Nginx1.10.1+MySQL5.7.14+PHP7.0.11
准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...
- CentOS 7.2.1511编译安装Nginx1.10.1+MySQL5.6.33+PHP5.6.26
准备篇 一.防火墙配置 CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.se ...
- 在CentOS 6.4中编译安装gcc 4.8.1
在CentOS 6.4中编译安装gcc 4.8.1 分类: C/C++ Linux/Unix2013-11-28 21:02 1877人阅读 评论(0) 收藏 举报 原文链接:http://www.c ...
- CentOS 6.X x64 编译安装 Countly
CentOS 6.X x64 编译安装Countly 安装所需的软件 yum -y install supervisor ImageMagick sendmail 1. 安装 node.js wge ...
- CentOS 7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2
前传: 1.CentOS 7.3.1611系统安装配置图解教程 http://www.jb51.net/os/RedHat/597874.html 2.CentOS服务器初始化设置 http://ww ...
随机推荐
- 【FFMPEG】Ubuntu上安装FFMPEG
在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...
- 【VS开发】winsock 错误多 windows.h和winsock2.h的顺序
Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误.诸如: c:\program files ...
- 再谈JVM中类加载
前言 由于本人参加面试,但是JVM这块回答的十分不好,问了面试官,面试官说我基础不行!我真的不行,所以看过的不一定能理解,感觉之前就是糊弄任务,然后这次等实训结束,啥都干完了,我就记录下,深入了解下面 ...
- nssm设置solr开机启动服务
首先,下载nssm http://www.nssm.cc/download 命令 nssm install solr 然后到服务里启动solr,并设置为自动 Ctrl+Shift+Esc(说明:Esc ...
- UWP笔记-自定义Grid背景图片
之前写简单的UWP版本地音乐播放器,有自定义背景壁纸的功能,现在贴在这里回顾下. Page.xaml 页面,添加Grid <Grid x:Name="mainGrid"/&g ...
- DISCO Presents Discovery Channel Code Contest 2020 Qual Task E. Majority of Balls
Not able to solve this problem during the contest (virtual participation). The first observation is ...
- python — mysql基础知识
目录 1 . 数据库的介绍 2. mysql 1 . 数据库的介绍 1.为什么要用数据库? 很多功能如果只是通过操作文件来改变数据是非常繁琐的,程序员需要做很多事情 对于多台机器或者多个进程操作用一份 ...
- S02_CH04_User_IP实验Enter a post title
S02_CH04_User_IP实验 4.1 创建IP 在之前的教程中,我们通过MIO与EMIO来控制LED,所使用的也是官方的IP,实际当中,官方提供的IP不可能涵盖到方方面面,用户需要自己编写硬件 ...
- 学习BM算法
BM算法: 希望大家别见怪,当前博客只用于个人记录所用. [例题]Poor God Water 题意: 有肉,鱼,巧克力三种食物,有几种禁忌,对于连续的三个食物, 1.这三个食物不能都相同: 2.若三 ...
- 安装gcc过程中遇到相互依赖的问题
在离线安装gcc的时候需要安装一些包,但是在安装 glibc-common glibc遇到一个很恶心的问题,这两个包相互依赖. 经查询才发现需要一起安装这两个依赖包.真是有趣的很 rpm -iv ...