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事件触发管理器. ...
随机推荐
- bootgrid
编写bootgrid前提条件 有关bootgrid的.css和.js库文件 参数:ajax: 必须设置为true post: 传递给Java的参数 url: 与java连接的方法名 ...
- Scrapy爬虫框架第八讲【项目实战篇:知乎用户信息抓取】--本文参考静觅博主所写
思路分析: (1)选定起始人(即选择关注数和粉丝数较多的人--大V) (2)获取该大V的个人信息 (3)获取关注列表用户信息 (4)获取粉丝列表用户信息 (5)重复(2)(3)(4)步实现全知乎用户爬 ...
- html5中viewport与meta详解
网上解释手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中 ...
- RabbitMQ分布式集群架构和高可用性(HA)
(一) 功能和原理 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布 ...
- 通过jenkins持续集成 github中的代码到 服务器。
前言 最近自己在探索springboot框架,了解到 jenkins 具有 自动我github 上带项目部署到 tomcat 中.于是决定先搭建一个jenkins 环境在继续研究. Jenkins简介 ...
- C++中“wchar_t* ”和“ char * ”之间的相互转换
把char*转换为wchar_t* 用stdlib.h中的mbstowcs_s函数,可以通过下面的例子了解其用法: char *CStr = "string to convert" ...
- 51nod_1412_AVL树的种类_动态规划
51nod_1412_AVL树的种类_动态规划 题意: 平衡二叉树(AVL树),是指左右子树高度差至多为1的二叉树,并且该树的左右两个子树也均为AVL树. 现在问题来了,给定AVL树的节点个数n,求有 ...
- BZOJ_1861_[Zjoi2006]Book 书架_splay
BZOJ_1861_[Zjoi2006]Book 书架_splay 题意: 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在 ...
- Pandas 错误笔记(持续更新)
更新至2018.5.1 字典生成DataFrame 今天一个字典生成一个DataFrame,采用了以下形式,每一个value都是一个数(不是vector) df = pd.DataFrame({ 'i ...
- Selenium在定位的class含有空格的复合类的解决办法整理
1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...