未加星标

Ubuntu 下 MySQL 多实例配置

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

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

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

方法简介 实验环境 MySQL安装 MySQL启动多实例 MySQL初始化密码并登陆 MySQL停止某端口服务

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

方法简介

MySQL启动多个实例实际上需要做的是设置(启动/监听)多个不同的端口、不同的socket文件、pid文件及数据目录,为了排错方便,还需要加入log功能,即不同的log文件。

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

(1) 使用mysqld_multi命令 只需一个配置文件,不同的配置由[mysqldN],其中N为标识号,来识别。具体实现可参见官网,本文不做详述。 (2) 使用mysqld_safe命令

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

实验环境 Ubuntu16.04 Mysql5.7.17 MySQL安装

原本在ubuntu中安装非常方便,使用 apt-get install 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=16M unrecognize ,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-get autoremove mysql-server
apt-get remove mysql-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端口为例,默认为3306 cp ~/.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 | grep 3307

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

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> use mysql; 4. 手动update修改密码 mysql> update user set authentication_string=password("123456") where user='root' and host='localhost';
mysql> flush privileges;
mysql> quit 5. 登陆 mysql -uroot -p -S /mnt/ramdisk/mysql1/mysqld.sock -P 3306

恩,登陆完成了。

MySQL停止某端口服务

本文地址 : http://www.linuxidc.com/Linux/2017-02/140207.htm

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: SQLMySQLUbuntuLinux数据需求其实删除数据库
分页:12
转载请注明
本文标题:Ubuntu 下 MySQL 多实例配置
本站链接:http://www.codesec.net/view/529977.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(49)