介绍
概念
有些时候我们需要启动多个MySQL实例,而不仅仅是多个数据库
那么问题来了,我们知道MySQL占用的默认端口是3306,如果要再启动一个实例,势必要占用其他端口才行,例如:3307,3308等等
可是要如何实现呢?请往下看
操作
关键参数
MySQL运行有这么几个关键参数
端口:默认为3306,这个不用说了,端口相同肯定运行不起来
安装目录:这个是可以共享的哦~~
数据目录:这个必须分离开来,为每一个实例建立一套数据目录
socket:这个是MySQL的文件锁,必须分离开来,为每一个实例选择一个文件路径
pid:这个是MySQL的进程锁,记录这进程ID,必须分离开来。不过一般情况下进程锁是在数据目录下面的,所以我们就不用关心它了
lock:这个锁只是在Redhat/Suse下才会有,必须分离开来,为每一个实例选择一个文件路径
server-id:同步复制时候用到的,即使不用复制这个也必须唯一哦~~
server-uuid:服务器唯一ID,这个也必须唯一哦~~
好,有了上面的一堆特别参数,我们就知道要改什么了!
步骤
数据目录
毫无疑问的是我们要建立新的数据目录,这样我们才能搭建一套完全独立的数据库服务器环境啊
cd /tongfu.net/env/mysql/ mkdir data2rd chown mysql.mysql -R data2rd
端口和socket
我们安装目录下建立配置文件my2rd.cnf(如果没有这个文件就自己创建一个)写入如下内容
# vi /tongfu.net/env/mysql/my2rd.cnf [mysqld] port = 3307 socket = /tmp/mysql2rd.sock
启动脚本
默认的启动脚本在support-files/mysql.server,我们需要为新实例复制出来一份
cd /tongfu.net/env/mysql/ cp support-files/mysql.server support-files/mysql2rd.server
修改新的启动脚本里的datadir一行,指向我们创建的新数据目录
datadir=/tongfu.net/env/mysql/data2rd/
在datadir下面增加一行defaultsfile,指向我们创建的cnf文件路径
defaultsfile=/tongfu.net/env/mysql/my2rd.cnf
修改启动服务的那一行,在最前面增加一个参数defaults-file
$bindir/mysqld_safe --defaults-file="$defaultsfile" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
初始化新环境
通过以下命令初始化新环境
cd /tongfu.net/env/mysql/ ./bin/mysqld --defaults-file=/tongfu.net/env/mysql/my2rd.cnf --initialize --user=mysql --datadir=/tongfu.net/env/mysql/data2rd/
初始化成功后会得到默认root密码
2019-02-01T20:00:00.984252Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-02-01T20:00:02.569519Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-02-01T20:00:02.929479Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-02-01T20:00:03.008211Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f67263e5-265b-11e9-9fbe-02420a100150. 2019-02-01T20:00:03.009632Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-02-01T20:00:03.011537Z 1 [Note] A temporary password is generated for root@localhost: %_?3rpaRy/7!
启动新环境实例
cd /tongfu.net/env/mysql/ ./support-files/mysql2rd.server start
我们使用默认root密码来设置我们自己的密码,特殊字符记得转义一下
cd /tongfu.net/env/mysql/ ./bin/mysqladmin -uroot -p"%_?3rpaRy/7\!" -P 3307 -S /tmp/mysql2rd.sock password "abcdef"
登录新环境
现在我们就可以登录新环境实例了,注意端口和socket哦~~
cd /tongfu.net/env/mysql/ ./bin/mysql -uroot -pabcdef -P 3307 -S /tmp/mysql2rd.sock
看一下数据库列表,新环境只有这4个库
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
好了,后面还可以用mysql2rd.server设置开机启动,这里我们就不再阐述了