ubuntu 多个mysql_Ubuntu 下 MySQL 多实例配置

Ubuntu 下 MySQL 多实例配置

项目需求测试 MySQL 的并发性能,故而需要启动多个实例,即在一台机器上启动多个 MySQL 服务。只是一个简单需求,也折腾了好几天,本文做一个记录,也希望能帮助更多有此需求的人,节约时间和精力。

本文主要从以下几个方面展开:

MySQL 官方说明文档地址 (https://dev.mysql.com/doc/refman/5.7/en/multiple-servers.html)

方法简介

具体实现主要有以下两种方式:

(1) 使用 mysqld_multi 命令

只需一个配置文件,不同的配置由 [mysqldN],其中 N 为标识号,来识别。具体实现可参见官网,本文不做详述。

(2) 使用 mysqld_safe 命令

需要多个不同的配置文件,差别在于章首所述,是本文要具体介绍的方法。

实验环境16.04

Mysql5.7.17

MySQL 安装

原本在 ubuntu 中安装非常方便,使用apt-getinstall mysql-server 即可。但是在实际操作中还是遇到一些小麻烦,所以也稍作说明。

先介绍一下使用apt-get 命令安装后的文件位置:

主要配置文件:/etc/mysql/my.cnf,这是一个 global 文件,我们经常需要修改的在 / etc/mysql/mysql.conf.d/mysqld.cnf

默认数据文件目录:/var/lib/mysql,这个可以在配置文件中修改

安装位置:/usr/share/mysql

我在使用过程中将 ubuntu 从 14.04 升级到 16.04,而后再安装 Mysql 就失败了,报错大致为:[ERROR]key_buffer=16Munrecognize ,google 了一堆都说修改配置文件 / etc/mysql/my.cnf,将 key_buffer 改为 key_buffer_size,这是 mysql5.7 版本升级后的修改,然而该配置文件中就是 key_buffer_size,让我不能理解,笨拙中又花费了好几个小时,我以为是卸载时没有清理干净,就疯狂卸载,却没有思考即便真的没有卸载干净,他到底读取的哪个配置文件呢?以后还是要冷静下来多思考才好啊。

这里先插播一下怎么干净的卸载吧!rm/var/lib/mysql/-r

rm/etc/mysql-r

rm/usr/share/mysql-r

apt-getautoremove mysql-server

apt-getremovemysql-common

dpkg-l|grep^rc|awk'{print $2}'|sudo xargs dpkg-P//清理残留数据

回到主题,mysql 读取默认配置文件的顺序如下:/etc/my.cnf

/etc/mysql/my.cnf

~/.my.cnf So~ 让我们来看一下这个隐藏文件 ~/.my.cnf 吧,果不其然,里面的属性名称是错的,另外还需要注释掉 myisam-recover=BACKUP,不开心搞了这么久。

MySQL 启动多个实例

主要分为一下几步:

1. 创建数据目录并修改权限mkdir new_datadir

chown-R mysql:mysql new_datadir

2. 修改配置文件 – 以配置 3307 端口为例,默认为 3306cp~/.my.cnf /etc/mysql/my1.cnf

vim/etc/mysql/my1.cnf

修改主要如下:

注:socket、pid、log 文件都是在启动以后才生成的,并且 socket 和 pid 在启动时生成,stop 以后会自动删除。port=3307

socket=new_datadir/mysqld.sock

pid-file=new_datadir/mysqld.pid

datadir=new_datadir

log_error=new_datadir/error.log

3. 在 apparmor 中添加读写权限vim/etc/apparmor.d/usr.sbin.mysqld

service apparmor reload

添加 datadir 的权限(原 datadir 为 / var/lib/mysql):new_datadir/r,

new_datadir

/** rwk,*/

4. 初始化数据库mysqld--initialize--datadir=new_datadir--user=mysql

会看到 new_datadir 下创建了很多 mysql 的信息文件,具体可参见 / var/lib/mysql 下,这一步是必须的!

5. 启动

注:shell 一直卡在那就说明启动了,可以ctrl Z进入后台运行。mysqld_safe--defaults-file=/etc/mysql/my1.cnf

查看端口号,可以看到已被监听netstat-nlt|grep3307

到此启动完毕,其实操作很简单啊,不知道为啥耽误了这么久,我猜是配置哪些路径没有正确?反正经验保险起见,要设在数据目录下。

MySQL 初始化密码并登陆

1. 终止 mysql 服务ps-ef|grep mysql

kill pid

2. 安全模式启动mysqld_safe--defaults-file=/etc/mysql/my1.cnf--skip-grant-tables

3. 无密码 root 账号登陆mysql-uroot-p//不输密码,直接回车

mysql>usemysql;

4. 手动 update 修改密码mysql>update usersetauthentication_string=password("123456")whereuser='root'andhost='localhost';

mysql>flush privileges;

mysql>quit

5. 登陆mysql-uroot-p-S/mnt/ramdisk/mysql1/mysqld.sock-P3306

恩,登陆完成了。

MySQL 停止某端口服务

来源:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值