最近由于工作的需要,需要在同一台服务器上搭建两个Redis
与MySQL
的实例。
多实例:就是在一台机器上面开启多个不同的端口(如Redis
用6379
/6380
,MySQL
用3306
/3307
等),运行多个服务进程;公用一套安装程序,使用不同的配置文件,数据文件。
1. Redis多实例配置
1.1 查看主机Redis信息
- 用
ps
命令查看Redis
进程
1 | [root@localhost ~] ps -ef |grep redis |
- 查找配置文件位置
1 | [root@localhost ~] locate redis.conf |
1.2 拷贝配置文件并修改
- 拷贝
redis.conf
并命名为redis6380.conf
,并修改参数
1 | [root@localhost ~] cp /etc/redis.conf /etc/redis6380.conf |
- 准备上面配置的文件
1 | [root@localhost ~] mkdir –p /mnt/newdatadrive/data/redis6380 |
1.3 启动测试
- 启动
6380
端口Redis
服务,并查看Redis
进程
1 | [root@localhost ~] /usr/local/bin/redis-server /etc/redis6380.conf |
- 测试登录
Redis
客户端
1 | [root@localhost ~] redis-cli -p 6380 |
- 停止
6380
端口的Redis
服务
1 | redis-cli -p 6380 shutdown |
1.4 Redis数据迁移
- 登录原
Redis
客户端(6379
)
1 | [root@localhost ~] redis-cli -p 6379 |
- 拷贝数据文件
appendonly.aof
和dump.rdb
到6380
1 | # 查看6379的数据文件 |
- 启动
6380
端口Redis
服务,导入AOF
数据文件
1 | [root@localhost ~] /usr/local/bin/redis-server /etc/redis6380.conf |
- 登录
Redis
查看数据
1 | [root@localhost ~] redis-cli -p 6380 |
1.5 配置远程可访问
- 修改配置文件
redis6380.conf
1 | [root@localhost ~] vim /etc/redis6380.conf |
- 开启防火墙的端口号规则(安全组),将
6380
端口号开通
1 | [root@localhost ~] /sbin/iptables -I INPUT -p tcp --dport 6380 -j ACCEPT |
- 修改完成后,要在服务里重启
Redis
服务才能使设置生效
1 | /usr/local/bin/redis-server /etc/redis6380.conf |
- 测试远程访问
1 | C:\Users\zc> redis-cli -h 192.168.111.226 -p 6380 -a password123456 |
- 停止
6380
的Redis
服务也需要密码
1 | [root@localhost ~] redis-cli -p 6380 -a password123456 shutdown |
2. MySQL多实例配置
2.1 查看主机MySQL信息
- 查看现有
MySQL
数据库实例占用端口
1 | [root@localhost ~] netstat -anp | grep mysqld |
须先关闭单实例,跟多实例会有冲突
- 备份数据:
[root@localhost ~] mysqldump -P 3306 -u root -p --all-databases > /home/backup/data3306.bak
- 停止单实例服务:
[root@localhost ~] service mysqld stop
- 查找配置文件位置
1 | [root@localhost ~] locate my.cnf |
2.2 添加一个3307端口的实例
- 拷贝
my.cnf
并命名为my3307.cnf
,并修改参数,主要修改port,sockt,datadir
1 | [root@localhost ~] cp /etc/my.cnf /etc/my3307.cnf |
- 初始化数据库
1 | # 写入host避免反解析报错 |
- 启动
3307
端口MySQL
服务,并查看MySQL
进程
1 | [root@localhost ~] mysqld --defaults-file=/etc/my3307.cnf --user=root & |
- 登录
MySQL
1 | # 多实例为root增加密码 |
- 停止本实例
MySQL
服务
1 | [root@localhost ~] mysqladmin -u root -S /var/lib/mysql/mysql3307.sock shutdown |
2.3 再添加一个3308端口的实例
- 拷贝
my.cnf
并命名为my3308.cnf
,并修改参数,主要修改port,sockt,datadir
1 | [root@localhost ~] cp /etc/my.cnf /etc/my3308.cnf |
- 初始化数据库
1 | [root@localhost ~] mysqld --defaults-file=/etc/my3308.cnf --initialize-insecure |
- 启动
3308
端口MySQL
服务
1 | [root@localhost ~] mysqld --defaults-file=/etc/my3308.cnf --user=root & |
- 登录
MySQL
1 | # 多实例为root增加密码 |
- 停止本实例
MySQL
服务
1 | [root@localhost ~] mysqladmin -u root -S /var/lib/mysql/mysql3308.sock shutdown |
2.4 实例3307开启远程访问
- 开启
3307
端口防火墙
1 | [root@localhost ~] /sbin/iptables -I INPUT -p tcp --dport 3307 -j ACCEPT |
- 测试远程访问
1 | C:\Users\zc>mysql -h 192.168.111.227 -P 3307 -u root -p |