linux 上安装多个不同版本的mysql 踩的坑
最近由于业务需要,考虑使用json类型,据了解 mysql 在版本5.7中可以支持 json 类型的数据支持,但同时目前开发环境中使用的是 mysql 5.6版本,上面还有很多项目的数据库在上面,同时也没有多余的服务器可供使用,故不能直接卸载将 mysql直接升级版本。
从而想到在同一台机器上安装多个版本的 mysql 来解决问题。
上面说到之前环境已经装有mysql 5.6版本,基本配置如下:
datadir=/home/mysql/data
basedir=/usr/local/mysql
同时配置文件 my.cnf放在在 /etc/目录下。
此版本是通过 yum的方式来下载安装的,故5.7的版本不能再使用这种方式安装,以免数据被覆盖。
我的系统版本是centos 64位,故在官网下载 5.7 64版本的安装包。(https://downloads.mysql.com/archives/get/file/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz)
具体操作如下:
mkdir /usr/local/app
cd /usr/local/app
wget -o https://downloads.mysql.com/archives/get/file/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
tar -xzf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql-5.7.24
mv mysql-5.7.24 ../
cd ../mysql-5.7.24
此时已将 mysql 5.7 解压出来。这个版本的 mysql 已经不包含模板配置文件。此时初始化数据库(先授权,由于之前已经创建了mysql:mysql的用户组及用户了,但还没有5.7版本目录和数据的权限):
mkdir /home/mysql-5.7.24/data
chown mysql:mysql -R /home/mysql-5.7.24/data /usr/local/mysql-5.7.24
./bin/mysqld --initialize --user=mysql --datadir=/home/mysql-5.7.24/data --basedir=/usr/local/mysql-5.7.24
此时会生成默认的 root 密码,记下来。
然后再使用 mysqld_multi来管理多实例。原本我是想直接使用support-files目录下mysql_server来启动的,但是发现个问题,就是该脚本总是使用 /etc/my.cnf作为配置文件来启动的,于是我查了下资料,发现mysql读写配置顺序如下:
/etc/my.cnf > /etc/mysql/my.cnf > /usr/etc/my.cnf > ~/.my.cnf
由于该配置文件已被 5.6 版本的 mysql使用,故寻找其他方法。
方法一
使用 mysqld_multi来管理。
修改 /etc/my.cnf:
#[client]
#port = 3306
#socket = /usr/local/mysql/mysql.sock
[mysqld_multi]
mysqld = /usr/local/mysql-5.7.24/bin/mysqld_safe
log = /var/log/mysqld_multi.log
[mysqld3306]
user=mysql
server_id=206
port = 3306
basedir = /usr/local/mysql
datadir = /home/mysql/data
tmpdir = /home/mysql/temp
socket = /usr/local/mysql/mysql.sock
log-error = /home/mysql/logs/mysql_error.log
pid-file = /home/mysql/mysql.pid
slow-query-log-file = /home/mysql/logs/mysql-slow.log
[mysqld3307]
user=mysql
server_id=207
port = 3307
basedir = /usr/local/mysql-5.7.24
datadir = /home/mysql-5.7.24/data
tmpdir = /home/mysql-5.7.24/temp
socket = /usr/local/mysql-5.7.24/mysql.sock
log-error = /home/mysql-5.7.24/logs/mysql_error.log
pid-file = /home/mysql-5.7.24/mysql.pid
slow-query-log-file = /home/mysql-5.7.24/logs/mysql-slow.log
[mysqld]
#server_id=206
#binlog-do-db=testdb
binlog-ignore-db=mysql
log-bin=edu-mysql-slave1-bin
binlog_cache_size = 1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=edu-mysql-relay-bin
log_slave_updates=1
read_only=0
character-set-server = utf8
collation-server = utf8_general_ci
skip-external-locking
skip-name-resolve
#user = mysql
#port = 3306
#basedir = /usr/local/mysql
#datadir = /home/mysql/data
#tmpdir = /home/mysql/temp
# server_id = .....
#socket = /usr/local/mysql/mysql.sock
#log-error = /home/mysql/logs/mysql_error.log
#pid-file = /home/mysql/mysql.pid
open_files_limit = 10240
back_log = 600
max_connections=500
max_connect_errors = 6000
wait_timeout=605800
#open_tables = 600
#table_cache = 650
#opened_tables = 630
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 300
query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 2M
query_cache_min_res_unit = 16k
tmp_table_size = 256M
max_heap_table_size = 256M
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
lower_case_table_names=1
default-storage-engine = INNODB
innodb_buffer_pool_size = 2G
innodb_log_buffer_size = 32M
innodb_log_file_size = 128M
innodb_flush_method = O_DIRECT
#####################
#thread_concurrency = 32
long_query_time= 2
slow-query-log = on
#slow-query-log-file = /home/mysql/logs/mysql-slow.log
[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 1G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
[mysqldump]
quick
max_allowed_packet = 32M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
上面多余的配置根据需求可以去掉,保留关键的配置即可,主要是端口,pid,和文件路径这些要不一样。
修改完成后,可以使用 support_files目录下的 mysqld_multi.server 来管理多个版本实例了。
./mysqld_multi.server 有 start,stop,report几个操作,顾名思义,使用就好了,report就是类似 status的意思。
./mysqld_multi.server report
发现
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is not running
然后启动3307即可,
./mysqld_multi.server start 3307
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running
不指定某个具体的实例就是启动或者关闭所有的。
这样就搞定了,但在终端使用客户端的时候要注意要具体指定某一个sock文件和端口:
mysql -S /usr/local/mysql-5.7.24/mysql.sock -P 3307 -u root -p
最后,可以将 mysqld_multi作为系统服务:
cp /usr/local/mysql-5.7.24/support-files/mysqld_multi.server /etc/rc.d/init.d/mysqld_multi
chkconfig --add /mysqld_multi
就可以直接使用了:
mysqld_multi report
方法二
使用 bin/mysqld_safe指定配置文件来启动:
cp /etc/my.cnf ./
##改改其中的一些配置(端口,pid,和文件路径)
./bin/mysqld_safe –defaults-file=/usr/local/mysql-5.7.24/my.cnf –basedir=/usr/local/mysql-5.7.24 –datadir=/home/mysql-5.7.24/data &
文章有些杂乱,有时间再优化。
linux 上安装多个不同版本的mysql 踩的坑的更多相关文章
- 在windows上安装不同(两个)版本的Mysql数据库
1.起因: 需要导入一个sql文件,发现死活导不进去.当执行到这一句时,就有问题.经过一番搜索,原来是我的数据库版本(原先Mysql版本5.5)低了,而支持该语句的版本应该是至少要5.7.那我索性就去 ...
- 在Linux上安装nginx时遇到的问题,真的好坑啊!!!!
解决了两个小时愣是卡着没动,结果一请大神问题就迎刃而解,怪自己太粗心,一下午差点就被这个问题安排的明明白白,直接上问题: makeFile时的问题: checking for OS + Linux ...
- 在Windows和Linux上安装paramiko模块以及easy_install的安装方法
一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...
- 在Linux上安装Oracle RAC 12 c(12.1) 虚拟机,一步一步向导
Oracle RAC 12 c(12.1)在Linux上安装虚拟机,一步一步向导 今天我们将看到如何安装 12 c版本1 RAC(真正的应用程序集群)数据库2 Linux 64位的虚拟机 使用VMWa ...
- 在Windows和Linux上安装paramiko模块
一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...
- Linux上安装使用boost入门指导
Data Mining Linux上安装使用boost入门指导 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到bo ...
- 如何在Linux上安装Storm
Storm是开源的分布式实时计算系统,能够让数据流处理变得简单.可靠,也因此在大数据领域有广泛的实际 应用.下面介绍一下如何在Linux系统上安装Storm.根据Storm官网介绍,安装Storm软件 ...
- linux上安装Drupal
linux上安装Drupal 前言:国内用drupal的并不太多,网上资料也很少.要注意的是drupal尽量别使用apt来安装,特别是ubuntu平台的drupal做出了一定的更改,会妨碍后期的学习和 ...
- linux上安装php7 memcache扩展 和 安装服务端memcached
linux上安装memcached不算太困难.唯一让本人感到困难的是 php7的memcache扩展安装.真的蛋疼! 先说安装服务端 memcached 1. 首先安装Libevent事件触发管理器. ...
随机推荐
- MySQL,简单了解下、
第一章 数据备份与导入导出 1.1.备份基本概念介绍 1.2.mysqldump详解 1.3.mydumper浅析 1.4.MySQL物理备份基本操作 1.5.了解mysqlpump工具 1.6.数据 ...
- 2101: Bake Off
Description Davy decided to start a weekend market stall where he sells his famous cakes. For the fi ...
- css布局-双飞翼布局
<div class="header">Header</div> <div class="bd"> <div clas ...
- win10想开测试模式,提示“设置元素数据时出错
系统中按WIN键,搜索栏输入'CMD',右键点击找到的cmd.exe,选择'以管理员身份运行'.输入:"bcdedit -set loadoptions DDISABLE_INTEGRITY ...
- 小米笔记本怎么关闭secure boot
关闭Secure Boot的步骤: 一.关闭 "快速启动" 功能 1.右键-开始菜单- 电源选项,进入后 点击"选择电源按钮的功能". 2.进入电源选项设置后, ...
- Java Script 学习笔记 (二) Casper JS
1. click() VS mouse.click() 在写自动化脚本要勾选一个复选框时,用casper.mouse.click() 无法选上这个checkbox, 需要用到casper.click( ...
- Java 读书笔记 (十七) Java 重写(Override)与重载(Overload)
重写(Override) 重写是子类对父类的允许访问的方法的实现过程重新编写,返回值和形参都不能改变,即外壳不变,核心重写. // 如果重写不是相当于重新定义了一个方法?那为什么不直接写,还要exte ...
- 获取具有指定扩展数据的所有实体的Id,并存入Id数组中
AcDbObjectIdArray ObtainEntId(){ //获取块表 AcDbBlockTable *pBlkTbl; acdbHostApplicationServices()->w ...
- Hadoop问题:DataNode进程不见了
DataNode进程不见了 问题描述 最近配置Hadoop的时候出现了这么一个现象,启动之后,使用jps命令之后是这样的: 看不到DataNode进程,但是能够正常的工作,是不是很神奇啊? 在一番 ...
- 【爆料】-《布莱顿大学毕业证书》Brighton一模一样原件
布莱顿大学毕业证[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&am ...