美文网首页
单台linux部署多个mysql实例实战

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

作者: 超凡陆战队 | 来源:发表于2017-09-04 16:12 被阅读988次
  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实例实战

    了解什么是mysql多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行...

  • MySQL5.6版本多实例化

    1.MySQL多实例概述 MySQL多实例就是在一台linux服务器上开启多个不同的服务端口,运行多个MySQL服...

  • MySQL 多实例

    Linux系统环境 什么是MySQL多实例 简单的说,就是一台服务器运行多个MySQL服务进程,对应的MySQL进...

  • Window/linux(docker) 单台宿主机部署多个Je

    Window/linux(docker) 单台宿主机部署多个Jenkins节点 在使用Jenkins过程中,增加了...

  • MySQL 登录方法

    Linux系统环境 MySQL配置文件提示:/application/mysql是MySQL程序目录 一、单实例M...

  • centos安装多版本mysql

    部署mysql多个版本,或者多实例,方法基本一致。下面均以glibc包安装mysql5.6,mysql5.7 参考...

  • 基于systemd的Mariadb的多实例部署

    简介 有时候我们需要在一台机器上安装部署多个mysql,多实例意思就是运行多个数据库服务端程序,分别监听不同的TC...

  • 从启动脚本分析mysql读取my.cnf配置的顺序

    当同一台主机搭建多个mysql实例,在利用service mysql start时候,会因为读...

  • MySQL复制.md

    主从复制简介 主从复制即将一台MySQL实例(Master)的数据复制到一个或多个MySQL实例(Slave)。默...

  • Tomcat 多实例部署 I

    单实例部署的麻烦 掀桌!单实例部署,TMD的每次重启所有项目都被影响!! 单实例部署时,不管是直接放在webapp...

网友评论

      本文标题:单台linux部署多个mysql实例实战

      本文链接:https://www.haomeiwen.com/subject/bmuejxtx.html