2-1 创建多实例目录
mkdir -p /data/330{7,8,9}/data
2-2 创建配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/app/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF
cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/app/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF
cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/app/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF
2-3 初始化数据库
mv /etc/my.cnf/ etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/app/mysql
注意:
初始化之前首先要将原有数据库配置文件改名,否则系统会默认走原数据库文件
多实例安装完成之后,再恢复原文件名,否则原数据库无法使用
检查文件配置情况
2-4 systemctl管理
cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service
vim mysqld3307.service
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
vim mysqld3308.service
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
vim mysqld3309.service
ExecStart=/app/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
注意:
直接看这一章的小伙伴可能没有mysql.service文件,此文件在上一章中创建。
ExecStart是在原文件基础上修改ExecStart行,给多实例启动添加配置文件路径。
检查 ls /etc/systemd/system
检查 vim mysqld3307.service
2-5 授权
chown-R mysql.mysql/data/*
2-6 启动
mv /etc/my.cnf.bak /etc/my.cnf //恢复3306配置文件
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
2-7 验证
netstat -lnp | grep330
或登录后查看port
2-8 小技巧
2-8-1 多实例下怎样登录不同的数据库
数据库有两种登录方式,本地socket,远程tcp,在多实例情况下,
需要指明登录的使用的sock,默认会走/tmp下的sock, 即
mysql -uroot -p // 会走/tmp/mysql.sock,此处为3306
mysql -uroot -p -S /data/3307/mysql.sock -P3307 //指定才能登录3307,-P可以省略
当登录到数据库之后,可以用 select @@port; 确认自己现在所在的数据库
2-8-2 错误声明