一.环境准备

系统:centos7.3一台

软件版本:mysql-5.6.39/mysql-5.7.21

部署目录:/usr/local/

数据目录:/data

1.安装依赖

yum -y install autoconf libaio bison ncurses-devel

2.创建用户

groupadd mysql

useradd -g mysql -s /sbin/nologin mysql

3.清理centos7 默认自带数据库

yum -y remove mariadb mariadb-server

二.下载安装包

1.下载官方二进制包,并放到/usr/local下面

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

tar -xf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql-5.6

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

tar -xf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql-5.7

2.创建数据目录,存储数据,socket,pid,log。如果有需求,可以后面自定义,不用都放一起

mkdir -p /data/six

mkdir -p /data/seven

3.添加mysql权限

chown -R mysql:mysql /data /usr/local/mysql-5.6 /usr/local/mysql-5.7

三.Mysql-5.6单独部署

1.修改配置文件,先单独部署5.6

vim /etc/my.cnf

[mysqld_safe]
nice = 0
pid-file = /data/six/mysqld.pid [mysqld]
bind-address = 0.0.0.0
user = mysql
basedir = /usr/local/mysql-5.6
datadir = /data/six
socket = /data/six/mysql.sock
port = 3306
log-error = /data/six/mysql.log

2.初始化,经过多次研究,发现默认初始化命令是加载/etc/my.cnf

/usr/local/mysql-5.6/bin/mysqld --initialize --datadir=/data/six --basedir=/usr/local/mysql-5.6

显示没有error即成功了

3.修改密码

启动

/usr/local/mysql-5.6/bin/mysqld_safe --datadir=/data/six &

查看是否启动了

netstat -unltp | grep :3306

连接修改密码,默认5.6版本是没有密码的

mysql -uroot -P3306 --socket=/data/six/mysql.sock

mysql> use mysql;

mysql> UPDATE user SET Password = PASSWORD('123456') WHERE user = 'root';

关闭mysql-5.6,因为mysql单独部署,第二个是起不来的。会显示mysqld_safe已经启动了。

pkill mysqld

配置环境变量,用哪一个版本的这些命令都可以

vim /etc/profile

PATH=$PATH:/usr/local/mysql-5.6/bin

四.Mysql-5.7单独部署

1.修改配置文件,先单独部署5.7

vim /etc/my.cnf

[mysqld_safe]
nice = 0
pid-file = /data/seven/mysqld.pid [mysqld]
bind-address = 0.0.0.0
user = mysql
basedir = /usr/local/mysql-5.7
datadir = /data/seven
socket = /data/seven/mysql.sock
port = 3307
log-error = /data/seven/mysql.log

2.初始化

/usr/local/mysql-5.7/bin/mysqld --initialize --user=mysql --datadir=/data/seven --basedir=/usr/local/mysql-5.7

没有任何输出就是成功了

3.修改密码

这里先跳过密码,5.7应该是日志里有密码,但我没找到。这里在[mysqld]下添加

vim /etc/my.cnf

[mysqld]
skip-grant-tables

启动

/usr/local/mysql-5.6/bin/mysqld_safe --datadir=/data/seven &

查看是否启动了

netstat -unltp | grep :3307

连接修改,这里要和上面不同,5.7版本有点小差别

mysql -uroot -P3307 --socket=/data/seven/mysql.sock

mysql> use mysql;

mysql> UPDATE user SET authentication_string=PASSWORD("123456") WHERE user='root';

关闭mysql-5.7

pkill mysqld

五.添加到多版本控制

以上呢,只能单独启动,启动第二个是不行的。因为mysql都是mysqld_safe来启动管理的,但它只支持一个。所以需要ntsqkd_multi来多版本控制,多实例也是如此。

1.修改配置

vim /etc/my.cnf

[mysql] #客户端
default-character-set=utf8mb4 [mysqld_multi]
#填写任意一个版本的位置就行
mysqld = /usr/local/mysql-5.6/bin/mysqld_safe
mysqladmin = /usr/local/mysql-5.6/bin/mysqladmin
#multi的日志
log = /tmp/mysql_multi.log
user = multi #在每个账号设置一个账户,有管理权限的,让multi可以控制数据库的关闭重启
password = multiadmin #和以前的一样,只是将pid-file写到这里了
[mysqld3306]
skip-grant-tables
bind-address = 0.0.0.0
user = mysql
basedir = /usr/local/mysql-5.6
datadir = /data/six
socket = /data/six/mysql.sock
port = 3306
log-error = /data/six/mysql.log
pid-file = /data/six/mysqld.pid [mysqld3307]
skip-grant-tables
bind-address = 0.0.0.0
user = mysql
basedir = /usr/local/mysql-5.7
datadir = /data/seven
socket = /data/seven/mysql.sock
port = 3307
log-error = /data/seven/mysql.log
pid-file = /data/seven/mysqld.pid

2.使用multi,这是一个管理的bash脚本,将他复制过来

cp /usr/local/mysql-5.6/support-files/mysqld_multi.server /etc/init.d/

chmod +x /etc/init.d/mysqld_multi.server

要修改一下脚本,默认目录不符合当前的配置

vim /etc/init.d/mysqld_multi.server

basedir=/usr/local/mysql-5.6
bindir=/usr/local/mysql-5.6/bin

3.使用

查看配置的3006和3307是否识别到了

/etc/init.d/mysqld_multi.server report

当前未启动

启动

/etc/init.d/mysqld_multi.server start

已经启动了

验证

netstat -unltp | grep :3306

netstat -unltp | grep :3307

连接

mysql -S /data/six/mysql.sock

也可以用ip+端口的方式连接,如果用socket连接,那端口和ip就没意义了。使用的将是本地登陆

mysql -uroot -P3306 -h127.0.0.1

六.muliti使用

启动全部实例:/usr/local/mysql/bin/mysqld_multi start

查看全部实例状态:/usr/local/mysql/bin/mysqld_multi report

启动单个实例:/usr/local/mysql/bin/mysqld_multi start 3306

停止单个实例:/usr/local/mysql/bin/mysqld_multi stop 3306

查看单个实例状态:/usr/local/mysql/bin/mysqld_multi report 3306

Mysql从头部署多个版本的更多相关文章

  1. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

  2. 使用openshit在ubuntu14.04下一键部署openstack(juno版本)

    一.基本介绍 本实验是在vmware workstation上虚拟机ubuntu14.04(64bit,desktop)上部署openstack(Juno版本).采用的工具是openshit.open ...

  3. 2-MySQL DBA笔记-MySQL安装部署和入门

    第2章 MySQL安装部署和入门 第1章介绍了MySQL的一些基础知识,本章将为读者介绍MySQL的部署.安装及一些常用命令和参数的设置.2.1 如何选择MySQL版本 在选择MySQL的版本时,要根 ...

  4. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  5. MySQL 5 绿色版(BAT版本) mysql50green转自http://hi.baidu.com/dburu/blog/item/e753fcc4362458aa8226accb.htmlMySQL 5 绿色版(BAT版本) By )

    以前提供下载的那个 MySQL 绿色版是来自于 Web 开发工具箱之 Apache PHP MySQL 绿色套装版, 原作者是为了方便自己开发所做的一套整合了 Apache, PHP, MySQL 的 ...

  6. mysql的mvcc(多版本并发控制)

    mysql的mvcc(多版本并发控制) 我们知道,mysql的innodb采用的是行锁,而且采用了多版本并发控制来提高读操作的性能. 什么是多版本并发控制呢 ?其实就是在每一行记录的后面增加两个隐藏列 ...

  7. Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)

    SQL语句类似下面这样:(此方法仅适用于5.0.0<mysql<5.6.6的版本) SELECT field FROM table WHERE id > 0 ORDER BY id ...

  8. MySQL主从复制部署

    前言 MySQL的主从复制是基于二进制日志机制的,需开启二进制日志功能.在具体的配置过程中,需注意主服务器与从服务器均配置唯一ID编号,且从服务器必须设置主服务器的主机名.日志文件名.文件位置等参数. ...

  9. win10环境下MySql(5.7.21版本)安装过程

    windows10上安装mysql(详细步骤) 2016年09月06日 08:09:34 阅读数:60405 环境:windwos 10(1511) 64bit.mysql 5.7.14 时间:201 ...

随机推荐

  1. 菜鸡的Java笔记 日期操作类

    日期操作类        Date 类与 long 数据类型的转换        SimpleDateFormat 类的使用        Calendar 类的使用                如 ...

  2. 菜鸡的Java笔记 - java 访问控制权限

    java中四种访问控制权限的使用                内容            在java里面一共定义有四个权限,按照由小到大的顺序:private<defaule<prote ...

  3. [cf461D]Appleman and Complicated Task

    假设该矩形是aij,那么有a(i,j)=a(i-1,j-1)^a(i-1,j+1)^a(i-2,j),不断递归下去可以发现a(i,j)=a(1,y-x+1)^a(1,y-x+3)^--^a(1,x+y ...

  4. [luogu1438]无聊的数列

    考虑令$b_{i}=a_{i+1}-a_{i}$,那么1操作相当于对L加上K,对(L,R]区间加上D,对R+1减去K+(R-L)*D,然后询问区间和即可 1 #include<bits/stdc ...

  5. 使用 kubeadm 部署

    上一章中,我们用 minikube 去搭建单机集群,并且创建 Deployment.Service(在三章中讲解),本篇将介绍利用 kubeadm 部署多节点集群,并学会 安装以及使用 kuberne ...

  6. PHP 日期详细介绍

    简介 你可以使用这些函数获取运行 PHP 的服务器的日期和时间, 也可以使用这些函数把日期和时间 格式化成不同格式的字符串. 日期和时间信息在 PHP 内部是以 64 位数字存储的, 它可以覆盖当前时 ...

  7. [Bzoj 1192][HNOI2006]鬼谷子的钱袋(二进制优化多重背包)

    (人生第一篇bzoj题解有点激动 首先介绍一下题目: 看它题目那么长,其实意思就是给定一个数a,求将其拆分成n个数,通过这n个数可以表示出1~a中所有数的方案中,求最小的n. 您看懂了嘛?不懂咱来举个 ...

  8. 【POJ1845】Sumdiv【算数基本定理 + 逆元】

    描述 Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine ...

  9. LOJ 2555 & 洛谷 P4602 [CTSC2018]混合果汁(二分+主席树)

    LOJ 题目链接 & 洛谷题目链接 题意:商店里有 \(n\) 杯果汁,第 \(i\) 杯果汁有美味度 \(d_i\),单价为 \(p_i\) 元/升.最多可以添加 \(l_i\) 升.有 \ ...

  10. 洛谷 P6060 - [加油武汉]传染病研究(数论)

    洛谷题面传送门 一道不算太难的题,题解稍微写写吧( 首先根据约数个数和公式,对于一个 \(n=p_1^{\alpha_1}·p_2^{\alpha_2}·\cdots·p_m^{\alpha_m}\) ...