之前也做过Mysql单机多实例的测试,不过那时候使用5.1版本的,这次使用5.7.9版本,虽然版高了但是也不会复杂,只是中间多出一个步骤;
就是初始化数据文件时会自动生成一个随机的root密码。
1、建立多实例数据存放目录,以端口为目录:
mkdir -p /data/{3306,3307}/log
2、在3306、3307目录下添加配置文件:
配置根据情况修改,这里只贴一个配置,只需要改改端口就好。
[root@mysql data]# cat /data/3306/my.cnf
[client]
port = 3306
socket = /data/3306/mysql.sock
[mysqld]
port=3306
socket = /data/3306/mysql.sock
pid-file = /data/3306/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306/data
#server-id=1
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index
# LOGGING
log_error=/data/3306/log/mysql-error.log
slow_query_log_file=/data/3306/log/mysql-slow.log
3、初始化第一个实例:
mysql_install_db --datadir=/data/3306/data/ --user=mysql
由于5.6版本后安装都会随机生成一个密码在:~/.mysql_secret
[root@mysql data]# cat ~/.mysql_secret
# Password set for user 'root@localhost' at 2016-06-01 09:25:18
bse5kaaG.xyf
启动实例3306:
/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &
修改密码:提示密码在命令行中不安全。
[root@mysql data]# mysqladmin -uroot -pbse5kaaG.xyf password '123456' -S /data/3306/mysql.sock
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
完成上面就可以登陆3306端口的Mysql啦。
4、初始化第二个实例:
mysql_install_db --datadir=/data/3307/data/ --user=mysql
报错:提示data目录不为空,虽然上面已经执行了:rm -rf /data/3307/data/*
但是并不能解决问题。
[root@mysql data]# mysql_install_db --datadir=/data/3307/data/ --user=mysql
2016-06-01 09:33:45 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2016-06-01 09:33:45 [ERROR] The data directory '/data/3307/data/' already exist and is not empty.
解决方法:把整个data目录删除; /data/3307/data,同重新建立一个data目录。
rm -rf /data/3307/data
mkdir /data/3307/data
修改密码:查看初始化生成的随机密码:
[root@mysql data]# cat ~/.mysql_secret
# Password set for user 'root@localhost' at 2016-06-01 09:36:20
Z7fifnuhRMUZ
启动实例3307:
/bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 > /dev/null &
再修改3307实例的密码:
mysqladmin -uroot -pZ7fifnuhRMUZ password '123456' -S /data/3307/mysql.sock
查看实例启动情况:
这样就可以在单机上做主从,读写分离的实验啦。