一、前言
有时,当我们在线上环境中,面对比较大的数据业务量时,如果只在一台数据库服务器中进行读写,那样会造成数据堵塞,速度较慢,极度影响数据的下发及写入。
所以,通常我们在线上环境中,会在数据库服务器中开启多个端口,来实现数据库的读写分离,降低数据的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 //启动1和2
/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 //停止1和2
/usr/local/mysql/bin/mysqld_multi stop 1 //只停止1
OK~ 至此 两种方法都已介绍完毕