暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

同一台机器上配置两个MySQL实例(二)

原创 liang 2020-03-19
1808

在同一台机器上配置两个MySQL实例,实现方法也可以参考我的另外一篇文档。
同一台机器上配置两个MySQL实例(一)

1.虚拟机准备

1.1. VMware Workstation Pro 12.1

内存:建议至少2G
硬盘:建议至少40G,动态分配

1.2. 操作系统准备

操作系统为CentOS 6.5 64bit
IP:192.168.0.13
主机名:source

1.3. MySQL软件准备

mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz

2.安装前系统环境配置调整

2.1. 关闭SELinux
2.2. 关闭系统防火墙
2.3. 调整I/O调度系统为deadline模式
2.4. swap分区的设置
2.5. 操作系统的限制
2.6. 关闭numa

此部分略,可参考之前发布的一篇文章来配置
centos6.5上安装mysql 5.7.20

3.安装规划

软件包目录:/opt/soft
MySQL家目录 /usr/local
MySQL实例1数据目录 /data/mysql3306
MySQL实例2数据目录 /data/mysql3307

4.创建目录

mkdir -p /opt/soft
mkdir -p /data/mysql3306
mkdir -p /data/mysql3307

5.创建MySQL用户

useradd mysql -s /sbin/nologin
passwd mysql

–密码为oracle123

6.安装MySQL软件

cd /opt/soft
tar -xzf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local
cd /usr/local
ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /data/mysql3306
chown -R mysql:mysql /data/mysql3307

注意,为了在任何路径下可以执行mysql命令,建议设置环境变量。
编辑root用户的.bash_profile,添加如下环境变量。

export PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/bin
复制

7.编辑参数文件

vi /etc/my.cnf

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin

[mysqld3306]
user = mysql
port = 3306
socket = /tmp/mysql3306.sock
pid-file = /tmp/mysql3306.pid
basedir = /usr/local/mysql
datadir = /data/mysql

[mysqld3307]
user = mysql
port = 3307
socket = /tmp/mysql3307.sock
pid-file = /tmp/mysql3307.pid
basedir = /usr/local/mysql
datadir = /data/mysql3307

说明:mysqld3306和mysqld3307两者后面的数字是mysqld进程的组号,编号可以是任何正整数,不是特指的端口号。在mysql中,这个编号称为段序列,即GNR。

8.mysql数据库初始化

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3306

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3307

9.修改登录密码

–跳过权限表,启动mysql实例

mysqld_safe --user=mysql --port=3306 --socket=/tmp/mysql3306.sock --pid-file=/tmp/mysql3306.pid --basedir=/usr/local/mysql --datadir=/data/mysql3306 --skip-grant-tables &
复制
mysqld_safe --user=mysql --port=3307 --socket=/tmp/mysql3307.sock --pid-file=/tmp/mysql3307.pid --basedir=/usr/local/mysql --datadir=/data/mysql3307 --skip-grant-tables &
复制

本地连接mysql实例
mysql -uroot -P 3306 --protocol=tcp -p
mysql -uroot -P 3307 --protocol=tcp -p
以–skip-grant-tables跳过权限表,启动mysql实例,登录连接数据库时,输入的错误密码或者空密码,都可以登录mysql数据库。

use mysql
select Host,user,authentication_string,password_expired from user;
update user set password_expired=‘N’ where user=‘root’;

#修改root用户的密码为永不过期
update user set authentication_string=password(‘oracle123’) where user=‘root’;
#修改localhost对应root用户的密码为oracle123
flush privileges;

10.启动和关闭mysql实例

杀掉mysql进程,然后重启mysql实例
ps -ef|grep mysql
kill -9 进程号

–启动mysql实例
mysqld_multi --defaults-file=/etc/my.cnf start 3306
mysqld_multi --defaults-file=/etc/my.cnf start 3307

–关闭mysql实例
mysqld_multi --defaults-file=/etc/my.cnf stop 3306 --user=root --password=oracle123
mysqld_multi --defaults-file=/etc/my.cnf stop 3307 --user=root --password=oracle123

注意:使用mysqld_multi启动和停止mysql实例时,指定的3306和3307是GNR号,不是端口号。

部分操作日志:

[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf start 3306
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf start 3307
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       7556      1  0 20:29 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3306 --socket=/tmp/mysql3306.sock --pid-file=/tmp/mysql3306.pid --basedir=/usr/local/mysql --datadir=/data/mysql3306
mysql      7701   7556  0 20:29 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3306.pid --socket=/tmp/mysql3306.sock --port=3306
root       7739      1  0 20:29 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3307 --socket=/tmp/mysql3307.sock --pid-file=/tmp/mysql3307.pid --basedir=/usr/local/mysql --datadir=/data/mysql3307
mysql      7884   7739  0 20:29 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3307 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3307.pid --socket=/tmp/mysql3307.sock --port=3307
root       7946   2063  0 20:37 pts/0    00:00:00 grep mysql
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf stop 3306 --user=root --password=oracle123
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf stop 3307 --user=root --password=oracle123
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       7988   2063  0 20:38 pts/0    00:00:00 grep mysql
[root@source bin]# 
复制

11.创建数据库帐号

grant all privileges on . to ‘root’@’%’ identified by ‘oracle123’;
flush privileges;

12.连接mysql实例

本地:
mysql -uroot -P 3306 --protocol=tcp -p
mysql -uroot -P 3307 --protocol=tcp -p

远程:
mysql -h192.168.0.13 -P 3306 -uroot -p
mysql -h192.168.0.13 -P 3307 -uroot -p

附录

同一个机器上配置两个实例技巧:
参数文件中可以指定user和password,用于启停mysql。

vi /etc/my.cnf

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = admin
password = oracle123

[mysqld3306]
user = mysql
port = 3306
socket = /tmp/mysql3306.sock
pid-file = /tmp/mysql3306.pid
basedir = /usr/local/mysql
datadir = /data/mysql

[mysqld3307]
user = mysql
port = 3307
socket = /tmp/mysql3307.sock
pid-file = /tmp/mysql3307.pid
basedir = /usr/local/mysql
datadir = /data/mysql3307

–创建用户,用于启停mysql实例
grant shutdown on . to ‘admin’@‘localhost’ identified by ‘oracle123’;
flush privileges;

–正常启动mysql实例
mysqld_multi --defaults-file=/etc/my.cnf start 3306
mysqld_multi --defaults-file=/etc/my.cnf start 3307

mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307

–关闭mysql实例
mysqld_multi --defaults-file=/etc/my.cnf stop 3306
mysqld_multi --defaults-file=/etc/my.cnf stop 3307

mysqld_multi --defaults-file=/etc/my.cnf stop 3306-3307

操作日志:

[root@source bin]# ps -ef|grep mysql
root       8586   2063  0 22:07 pts/0    00:00:00 grep mysql
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf start 3306
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       8595      1  0 22:07 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3306 --socket=/tmp/mysql3306.sock --pid-file=/tmp/mysql3306.pid --basedir=/usr/local/mysql --datadir=/data/mysql3306
mysql      8736   8595 12 22:07 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3306.pid --socket=/tmp/mysql3306.sock --port=3306
root       8766   2063  0 22:07 pts/0    00:00:00 grep mysql
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf start 3307
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       8595      1  0 22:07 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3306 --socket=/tmp/mysql3306.sock --pid-file=/tmp/mysql3306.pid --basedir=/usr/local/mysql --datadir=/data/mysql3306
mysql      8736   8595  2 22:07 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3306.pid --socket=/tmp/mysql3306.sock --port=3306
root       8775      1  0 22:07 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3307 --socket=/tmp/mysql3307.sock --pid-file=/tmp/mysql3307.pid --basedir=/usr/local/mysql --datadir=/data/mysql3307
mysql      8916   8775 11 22:07 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3307 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3307.pid --socket=/tmp/mysql3307.sock --port=3307
root       8946   2063  0 22:07 pts/0    00:00:00 grep mysql
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf stop 3306
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf stop 3307
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       8995   2063  0 22:11 pts/0    00:00:00 grep mysql
[root@source bin]# 
复制
[root@source bin]# ps -ef|grep mysql
root       9399   2063  0 22:13 pts/0    00:00:00 grep mysql
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       9408      1  0 22:13 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3306 --socket=/tmp/mysql3306.sock --pid-file=/tmp/mysql3306.pid --basedir=/usr/local/mysql --datadir=/data/mysql3306
root       9416      1  0 22:13 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --port=3307 --socket=/tmp/mysql3307.sock --pid-file=/tmp/mysql3307.pid --basedir=/usr/local/mysql --datadir=/data/mysql3307
mysql      9687   9408  7 22:13 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3306.pid --socket=/tmp/mysql3306.sock --port=3306
mysql      9694   9416  7 22:13 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql3307 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=source.err --pid-file=/tmp/mysql3307.pid --socket=/tmp/mysql3307.sock --port=3307
root       9752   2063  0 22:13 pts/0    00:00:00 grep mysql
[root@source bin]# 
[root@source bin]# mysqld_multi --defaults-file=/etc/my.cnf stop 3306-3307
[root@source bin]# 
[root@source bin]# ps -ef|grep mysql
root       9788   2063  0 22:14 pts/0    00:00:00 grep mysql
[root@source bin]# 
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

liang
关注
暂无图片
获得了10次点赞
暂无图片
内容获得2次评论
暂无图片
获得了49次收藏
TA的专栏
PostgreSQL技术专栏
收录1篇内容
MySQL技术专栏
收录18篇内容
Oracle技术专栏
收录2篇内容
目录
  • 1.虚拟机准备
    • 1.1. VMware Workstation Pro 12.1
    • 1.2. 操作系统准备
    • 1.3. MySQL软件准备
  • 2.安装前系统环境配置调整
  • 3.安装规划
  • 4.创建目录
  • 5.创建MySQL用户
  • 6.安装MySQL软件
  • 7.编辑参数文件
  • 8.mysql数据库初始化
  • 9.修改登录密码
  • 10.启动和关闭mysql实例
  • 11.创建数据库帐号
  • 12.连接mysql实例
  • 附录