单台linux部署多个mysql实例实战

  1. 了解什么是mysql多实例

MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务;

  1. 部署mysql多实例的两种方式

(1) 使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
(2) 通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;

本文使用的是第二种方法来实现mysql的多实例;

  1. 安装环境准备
    linxu环境:centos 7.1
    mysql安装包: mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz(使用的是免编译二进制包安装)
  2. 解压与迁移
tar -xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  
mv mysql-5.7.18-linux-glibc2.5-x86_64 /test/mysql/mysql
  1. 创建相关目录
mkdir -p /test/mysql/mysql/data
mkdir /test/mysql/mysql/data/mysql1
mkdir /test/mysql/mysql/data/mysql2
mkdir -p /test/mysql/mysql/data/log
mkdir -p /test/mysql/mysql/data/log/mysql1
mkdir -p /test/mysql/mysql/data/log/mysql2
  1. 创建mysql用户和组
groupadd -r mysql
useradd -r -g mysql mysql

授权

chown -R mysql:mysql /test/mysql/mysql/ 
  1. 添加环境变量
echo 'export PATH=$PATH:/test/mysql/mysql/bin' >> /etc/profile
source /etc/profile
  1. etc目录下创建my.cnf
    好像从5.7开始包中没有提供my-default.cnf配置文件,我是从网上找了一个my.cnf然后修改的,可以直接复制下面的配置文件
  2. 修改my.cnf配置
    这里要注意一下server_id和port不要冲突了
[client]
port=3306
socket=/test/mysql/mysql/mysql1.sock

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

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

[mysqld1]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/test/mysql/mysql/data/mysql1
port=3306
server_id=mysql1
socket=/test/mysql/mysql/mysql1.sock
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /test/mysql/mysql/data/log/mysql1/slow.log
log-error = /test/mysql/mysql/data/log/mysql1/error.log


[mysqld2]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/test/mysql/mysql/data/mysql2
port=3307
server_id=mysql2
socket=/test/mysql/mysql/mysql2.sock
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /test/mysql/mysql/data/log/mysql2/slow.log
log-error = /test/mysql/mysql/data/log/mysql2/error.log

  1. 初始化数据库
    初始化mysql1的数据库
/test/mysql/mysql/bin/mysql_ssl_rsa_setup --basedir=/test/mysql/mysql/  --datadir=/test/mysql/mysql/data/mysql1  --defaults-file=/etc/my.cnf  

初始化mysql2的数据库

/test/mysql/mysql/bin/mysql_ssl_rsa_setup --basedir=/test/mysql/mysql/  --datadir=/test/mysql/mysql/data/mysql2  --defaults-file=/etc/my.cnf  
  1. 检查数据库是否初始化成功
[root@mysql ~]# cd /test/mysql/mysql/data/mysql1
[root@mysql data]# ls
auto.cnf  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test

看一下目录下面文件有没有创建成功,mysql2同上

  1. 启动mysql:
bin/mysqld_multi start

查看启动状态:

bin/mysqld_multi report
  1. 登陆mysql并修改密码:
mysql -u root -p -S mysql1.sock
set password for root@'localhost'=password('123456'); 
flush privileges; 

ps:这里说明一下,mysql5.7开始会初始化一个mysql密码,详见linux下mysql5.7初始密码查看及忘记密码重置

本文参考自http://www.cnblogs.com/xuchenliang/p/6843990.html/后实际操作记录

你可能感兴趣的:(单台linux部署多个mysql实例实战)