单台MySQL服务器实现监听多个端口方法及实例演示

一、前言
有时,当我们在线上环境中,面对比较大的数据业务量时,如果只在一台数据库服务器中进行读写,那样会造成数据堵塞,速度较慢,极度影响数据的下发及写入。
所以,通常我们在线上环境中,会在数据库服务器中开启多个端口,来实现数据库的读写分离,降低数据的IO压力。

接下来,以mysql为例,来开启多端口,实现数据读写分离。
一般有两种方法:
实现方法一:
1、因为mysql在安装配置时,默认配置文件为/etc/my.cnf。首先要把/etc/my.cnf 配置文件进行复制,【这里开几个端口就复制几份,命名不能重复】

cp /etc/my.cnf  /etc/my3306.cnf
cp /etc/my.cnf  /etc/my3307.cnf

在这里插入图片描述
在这里插入图片描述
2、修改my3306.cnf,my3307.cnf文件,把默认的3306端口改成3307,【这里根据自己的my.cnf修改】
如:

[client]
port = 3307
socket = /tmp/mysql3307.sock
 
[mysqld]
port = 3307
socket = /tmp/mysql3307.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/var3307

3、创建数据库指定存放数据的目录【注意:组得修改为mysql,添加几个端口加几个,3306直接用现成的var】

mkdir /usr/local/mysql/var3307

4、初始化数据库

/usr/local/mysql/scripts/mysql_install_db --datadir=/usr/local/mysql/var3307/ --user=mysql --basedir=/usr/local/mysql 

5、启动mysql,要指定.cnf文件和目录启动

/usr/local/mysql/bin/mysqld_safe --defaults-extra-file=/etc/my3306.cnf --datadir=/usr/local/mysql/var --user=mysql &
/usr/local/mysql/bin/mysqld_safe --defaults-extra-file=/etc/my3307.cnf --datadir=/usr/local/mysql/var3307 --user=mysql

6、登录mysql

mysql -S /tmp/mysq3307.sock          # sock登录
mysql -uroot -p -h127.0.0.1 -P3307   # 端口号登录

7、停止Mysql,通过对应的sock文件

/usr/local/mysql/bin/mysqladmin -uroot -S /tmp/mysql3307.sock shutdown

至此,mysql就已经启动了3307这个端口,可通过ps -ef | grep mysql,进行查询
但是,会发现,这样比较麻烦,如果端口号数据不断增加,这样管理起来会特别麻烦,那么可以采用mysqld_multi来实现。

实现方法二:
1、首先配置my.cnf【mysqld1和mysqld2的参数用和之前mysqld的参数一样,这里只放出需要修改的部分,mysqld_multi是新增的,用户名和密码两个数据库必须保持一致】

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld1]
port            = 3306
socket          = /tmp/mysql.sock1
datadir = /usr/local/mysql/var
log=/usr/local/mysql/log/mysql.log

innodb_data_home_dir = /usr/local/mysql/var
innodb_log_group_home_dir = /usr/local/mysql/var

[mysqld2]
port            = 3307
socket          = /tmp/mysql.sock2
datadir = /usr/local/mysql/var3307
log=/usr/local/mysql/log/mysql3307.log

innodb_data_home_dir = /usr/local/mysql/var3307
innodb_log_group_home_dir = /usr/local/mysql/var3307

注:需要开启几个端口,只需要在下面添加即可。
2、设置了数据库端口服务,接下来初始化数据库目录 【这里根据开启的端口数来进行执行,开启几个执行几次,注意datadir即可】

/usr/local/mysql/scripts/mysql_install_db --datadir=/usr/local/mysql/var3307/ --user=mysql --basedir=/usr/local/mysql 

3、启动多个实例

/usr/local/mysql/bin/mysqld_multi start 1-2 //启动12
/usr/local/mysql/bin/mysqld_multi start 1 //只启动1

启动之后,可通过 netstat -antup | grep mysql 来查看mysql启动的端口

4、登录mysql【同上,类似,不同端口号用不同-P】

mysql -S /tmp/mysql.sock1 //sock登录
mysql -uroot -p -h127.0.0.1 -P3307 //端口号登录

5、停止mysql

/usr/local/mysql/bin/mysqld_multi stop 1-2 //停止12
/usr/local/mysql/bin/mysqld_multi stop 1 //只停止1

OK~ 至此 两种方法都已介绍完毕

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值