CentOS 上部署 MariaDB 单机多实例
我使用的是 mysqld_multi 这种实现方式,每个实例有其独立的配置文件,适合强迫症患者服用。
首先配置 MariaDB 的官方 yum 源:
vim /etc/yum.repos.d/MariaDB.repo
在新建的文件中添加:
# MariaDB 10.3 CentOS repository list - created 2018-08-28 05:47 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
这里使用的是 MariaDB 10.3,当前貌似有 10.4 版本,可自行在官网查询。
完事儿之后就可以安装 MariaDB 了,这里采用二进制文件而非源码编译:
yum -y install MariaDB-server MariaDB-client
现在我准备部署三套 MariaDB 实例,具体是:
端口:3307,对应数据目录:/data/mysql/3307;
端口:3308,对应数据目录:/data/mysql/3308;
端口:3309,对应数据目录:/data/mysql/3309。
那么先来创建每个实例对应的目录:
mkdir -pv /data/mysql/330{7,8,9}
然后将这些目录所属修改到 MariaDB 用户与用户组:
chown -R mysql:mysql /data/mysql/330{7,8,9}
初始化数据目录:
mysql_install_db --datadir=/data/mysql/330{7,8,9}/data --basedir=/usr --user=mysql
好了,创建 MariaDB 配置文件:
vim /etc/my.cnf
在新建的文件中添加:
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = YOUR_PASSWORD
[mysqld3307]
socket = /data/mysql/3307/mariadb.sock
port = 3307
pid-file = /data/mysql/3307/mariadb.pid
datadir = /data/mysql/3307/data
user = mysql
[mysqld3308]
socket = /data/mysql/3308/mariadb.sock
port = 3308
pid-file = /data/mysql/3308/mariadb.pid
datadir = /data/mysql/3308/data
user = mysql
[mysqld3309]
socket = /data/mysql/3309/mariadb.sock
port = 3309
pid-file = /data/mysql/3309/mariadb.pid
datadir = /data/mysql/3309/data
user = mysql
到这里,已经可以启动这三个实例:
mysqld_multi start 3307-3309
接着再做一些配置,请 One By One 地来:
mysql_secure_installation -S /data/mysql/3307/mariadb.sock
mysql_secure_installation -S /data/mysql/3308/mariadb.sock
mysql_secure_installation -S /data/mysql/3309/mariadb.sock
现在我们修改 root 密码,依然是 One By One:
mysqladmin -u root -p password -S /data/mysql/3307/mariadb.sock
mysqladmin -u root -p password -S /data/mysql/3308/mariadb.sock
mysqladmin -u root -p password -S /data/mysql/3309/mariadb.sock
创建一个 SQL 文件:
vim /data/src/create_user.sql
在新建的文件中添加:
CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';
flush privileges;
在每个实例中执行以创建多实例管理用户,嗯,One By One:
cat create_user.sql | mysql -u root -S /data/mysql/3307/mariadb.sock -p
cat create_user.sql | mysql -u root -S /data/mysql/3308/mariadb.sock -p
cat create_user.sql | mysql -u root -S /data/mysql/3309/mariadb.sock -p
然后再创建一个 sysv 脚本:
vim /etc/rc.d/init.d/mysqld_multi
在新建的文件中添加:
mysqld_multi=/usr/bin/mysqld_multi
instance_list="3307-3309"
start(){
$mysqld_multi start $instance_list
}
stop(){
$mysqld_multi stop $instance_list
}
status(){
$mysqld_multi report
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
start
stop
;;
*)
echo $"Usage: $0 {start|stop|status}"
exit 2
esac
接着添加 sysv:
chkconfig --add mysqld_multi
启用服务:
chkconfig mysqld_multi on
实现开机启动:
echo mysqld_multi start 3307-3309 >> /etc/rc.local
- EOF -