CentOS部署MySQL多实例

293 次查看 0 条评论
本文可能超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本文不保证相应的技术更新和实践可操作性。

1、系统环境

使用的纯净CentOS release 6.5 (Final)系统环境。

[root@centos ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@centos ~]# uname -r
2.6.32-431.el6.x86_64
[root@centos ~]# getenforce
Enforcing

发现 SELINUX 当前是开启的状态,先关闭 SELINUX 防火墙:

[root@centos ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && /usr/sbin/setenforce 0 && getenforce

再次查看状态:

[root@centos ~]# getenforce
Permissive

2、安装后续的一些依赖软件

[root@centos ~]# yum install -y libaio* numactl perl* ncurses ncurses-devel

3、开始安装MySQL软件

3.1、下载软件包

前往官网下载软件包至待安装服务器。这里我使用免编译包mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz安装。

# 下载软件包 MD5: fc8c6df660ba42b280c3b1d59bd8ee27
[root@centos ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz
# 验证md5值,确保下载安全
[root@centos ~]# md5sum mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz

3.2、解压 MySQL 二进制包到指定目录

# 解压软件包
[root@centos ~]# tar -zxvf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

3.3、创建 MySQL 软链接到标准安装目录,方便管理。

[root@centos ~]# ln -s /usr/local/mysql-5.6.42-linux-glibc2.12-x86_64 /usr/local/mysql

3.4、设置环境变量方便使用

[root@centos ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile && source /etc/profile

3.5、创建mysql用户组和用户

[root@centos ~]# groupadd mysql && useradd -g mysql mysql -s /sbin/nologin -M && id mysql

3.6、创建多实例数据目录,并授权相关目录mysql用户权限

[root@centos ~]# mkdir -p /data/mysql/{3306,3307} && mkdir /data/mysql/3306/{data,log,tmp} && mkdir /data/mysql/3307/{data,log,tmp}
# 目录授权
[root@centos ~]# chown -R mysql.mysql /usr/local/mysql/ && chown -R mysql.mysql /data/mysql/

3.7、编辑配置文件并作适当修改,这里展示修改好后的配置文件

[root@centos ~]# cat /etc/my.cnf

模块client配置:

[client]
port = 3306
#socket = /tmp/mysql.sock

模块mysqld_multi配置

[mysqld_multi]  
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /data/mysql/mysqld_multi.log

模块mysqld配置:

[mysqld]
user = mysql
basedir = /usr/local/mysql  
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

实例3306配置:

[mysqld3306]
mysqld = mysqld
mysqladmin = mysqladmin
datadir = /data/mysql/3306/data
port = 3306
server_id = 3306
socket = /data/mysql/3306/mysql.sock
#log-output = file
#slow_query_log = 1
#long_query_time = 1
#slow_query_log_file = /data/mysql/3306/log/slow.log
log-error = /data/mysql/3306/log/error.log
#binlog_format = mixed  
#log-bin = /data/mysql/3306/log/mysql-bin

实例3307配置

[mysqld3307]
mysqld = mysqld
mysqladmin = mysqladmin
datadir = /data/mysql/3307/data
port = 3307
server_id = 3307
socket = /data/mysql/3307/mysql.sock
#log-output = file
#slow_query_log = 1
#long_query_time = 1
#slow_query_log_file = /data/mysql/3307/log/slow.log
log-error = /data/mysql/3307/log/error.log
#binlog_format = mixed
#log-bin = /data/mysql/3307/log/mysql-bin

配置文件授权:

[root@centos ~]# chown mysql.mysql /etc/my.cnf

3.8、初始化数据库

# 写入host避免反解析报错
[root@centos ~]# echo "127.0.0.1   `hostname`" >> /etc/hosts && cat /etc/hosts
[root@centos ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data --defaults-file=/etc/my.cnf
[root@centos ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/3307/data --defaults-file=/etc/my.cnf

3.9、启动、停止、管理控制

# 设置开机自启动
[root@centos ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 启动全部实例
[root@centos ~]# mysqld_multi start
# 查看全部实例状态
[root@centos ~]# mysqld_multi report
# 停止全部实例
[root@centos ~]# mysqld_multi stop
# 启动单个实例
[root@centos ~]# mysqld_multi start 3306
# 停止单个实例
[root@centos ~]# mysqld_multi stop 3306
# 查看单个实例状态
[root@centos ~]# mysqld_multi report 3306

75896-tnouy90by7.png

4、登录指定实例控制台

本机有2种方法:1使用sock文件;2通过tcp通信。

4.1.1、使用sock文件通信

[root@centos ~]# mysql -u root -p -S /data/mysql/3306/mysql.sock
[root@centos ~]# mysql -u root -p -S /data/mysql/3307/mysql.sock

4.1.2、使用TCP通信

[root@centos ~]# mysql -h 127.0.0.1 -P 3306 -u root -p
[root@centos ~]# mysql -h 127.0.0.1 -P 3307 -u root -p

4.2、外部其他主机登录

首先在mysql服务器本地登录,然后增加一个可外部登录权限的账号(生产环境不建议)

mysql> GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY "123456";FLUSH PRIVILEGES;

其他外部机器使用如下方法(指定端口)登录:

[root@test ~]# mysql -h 10.1.2.4 -u admin -P 3306 -p
[root@test ~]# mysql -h 10.1.2.4 -u admin -P 3307 -p

5、顺带说下二进制免编译单实例最简安装方法

为什么使用这种方法呢?绿色啊,都安装了那些文件清清楚楚。卸载的话,停止服务删除目录即可。

# 下载
[root@test ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz
# 解压
[root@test ~]# tar -zxvf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz
# 移动到标准目录
[root@test ~]# mv mysql-5.6.42-linux-glibc2.12-x86_64 /usr/local/mysql
[root@test ~]# cd /usr/local/mysql
# 初始化数据库
[root@test mysql]# ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
# 启动
[root@test mysql]# ./bin/mysqld_safe &
# 以服务启动
[root@test mysql]# ./support-files/mysql.server start
# 停止服务
[root@test mysql]# ./support-files/mysql.server stop

完成,登录即可使用。

19530-oeq2asiz0kd.png

MySQL,CentOS MySQL

暂无评论,快来抢沙发。