用户:单台服务器部署多MySQL实例,咋弄?

																			  		note-taker:Ethan_Yang
																		 			recording time: 2019/06/25
																					number of docs:5

【前言】

总有一些需求和业务情况让你不得不在已有mysql进程数据服务器上,再安装一个mysql进程,今天就搞一下一台服务器上两个mysql如何安装,本文新库安装采用二进制形式。

【服务器信息】

服务器A   IP: 192.168.0.100  端口3306 3307
服务器B   IP: 192.168.0.101  端口 3306

【业务需求】

最近来了一个需求,服务器A已有MySQL_1,再创建一个新库MySQL_2进程,并恢复服务器B上的MySQL_3中数据至新的服务器A上新创建的MySQL_2库中;服务器A上MySQL1用的是3006端口,新创建的MySQL_2进程规划使用3307端口。

【解决方案】

规划:

MySQL_1数据存放路径:/mysqldata/3306/
MySQL_2数据存放路径:/mysqldata/3307/

1.创建mysql编译目录

  [root@dcm-testdb ~]# mkdir -p /mysqldata/3307
  [root@dcm-testdb ~]#mkdir -p /mysqldata/3307/data
  [root@dcm-testdb ~]#chown -R mysql:mysql /mysqldata/3307

2.登录MySQL_3查看要恢复的数据

[root@dcm-testdb ~]#/mysqlsoft/mysql/bin/mysql -uroot -p
mysql> select table_schema,round(sum(data_length+index_length)/1024/1024,4)  from information_schema.tables group by table_schema;

3.使用mysqldump做MySQL_3库全备

[root@dcm-testdb ~]#/mysqlsoft/mysql/bin/mysqldump -uroot -p --all-databases --single-transaction --socket=/mysql/3307/data/mysqld.sock  --master-data=2  >/mysql/backup/full_0625.sql

4.服务器A上创建MySQL_2

[root@dcm-testdb ~]# mkdir -p /mysqldata/3307/{data/,etc/,log/}
[root@dcm-testdb ~]# chown -R mysql:mysql /mysqldata/3307/data
[root@dcm-testdb ~]# chown -R mysql:mysql /mysqldata/3307/etc

5.在/mysqldata/etc/下创建新实例的my.cnf

[root@dcm-testdb ~]#vi /mysqldata/3307/etc/my.cnf 
[mysqld]
datadir=/mysqldata/3307/data
Basedie=/usr/local/mysql
socket=/mysqldata/3307/data/mysql.sock
[mysqld_safe]
log-error=/mysqldata/3307/log/mysqld3307.log
pid-file=/mysqldata/3307/mysqld3307.pid

6. 配置自启动

#将mysql的启动服务添加到系统服务中,设置开机自启动:(chkconfig 命令redhat系统的)

[root@dcm-testdb ~]#cp /mysqlsoft/mysql/support-files/support-files/mysql.server /etc/init.d/mysql3307.server

创建软连接:
[root@dcm-testdb ~]# ln -s /mysqlsoft/mysql /usr/local/mysql

赋予执行权限:

[root@dcm-testdb ~]# chmod +x /etc/init.d/mysql3307.server

添加服务:

[root@dcm-testdb ~]# chkconfig --add mysql3307.server

显示服务列表:

[root@dcm-testdb ~]# chkconfig --list

如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则使用如下命令:

[root@dcm-testdb ~]# chkconfig --level 345 mysql3307.server on

7.新实例初始化

[root@dcm-testdb ~]#/mysqlsoft/mysql/bin/mysqld --defaults-file=/mysqlsoft/3307/etc/my.cnf --initialize --datadir=/mysqlsoft/3307/data/ --basedir=/usr/local/mysql  --user=mysql

6.启动新数据库并修改root密码

[root@dcm-testdb ~]#/usr/local/mysql/bin/mysqld_safe --defaults-file=/mysqlsoft/3307/etc/my.cnf --user=mysql &

PS:一定记得后台方式打开MySQL库,否则会随着session的断开MySQL服务会中断。

[root@dcm-testdb ~]#/usr/local/mysql/bin/mysqladmin -uroot -p password 'mysql' --socket=/tmp/mysql3307.sock

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'mysql';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

8.服务器A MySQL_2上恢复MySQL_3的数据

/usr/local/mysql/bin/mysql -uroot -pmysql --socket=/mysql/3307/data/mysqld.sock  </mysql/backup/full_0625.sql

9.验证数据

使用如下命令查看MySQL_2和MySQL_3的大小,做简单对比

mysql> select table_schema,round(sum(data_length+index_length)/1024/1024,4)  from information_schema.tables group by table_schema;

【结语】

1.之前都是在单台服务器上部署一个MySQL进程,单台服务器上部署多个MySQL实例并不常见;常规做法更多的是在一个MySQL实例创建schema的形式来满足业务需求。
2.单台服务器上部署多个MySQL实例有其好处,即计算资源和数据存放均与原来的MySQL实例相互独立,逻辑上更为清晰,也方便进行管控,端口需不同,如本文源库使用3306端口,新库使用3307端口。
3.在一个MySQL实例使用服务器资源低的情况下,可以多部署几个MySQL实例,能充分利用服务器资源。

欢迎关注如下个人微信公众号:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值