基于yum源实现多实例
本实验实现三个实例,分别使用端口3306,3307,3308
1.yum安装mariadb-server
#yum install mariadb-server
2.创建各个实例存放的目录
#mkdir /data/mysql/{3306,3307,3308}/{etc,data,socket,log,bin,pid} -pv
3.修改目录及子目录的权限
#chown -R mysql.mysql /data/mysql
4.利用脚本生成默认数据库及数据文件
#/usr/bin/mysql_install_db --datadir=/data/mysql/3306/data --user=mysql
#/usr/bin/mysql_install_db --datadir=/data/mysql/3307/data --user=mysql
#/usr/bin/mysql_install_db --datadir=/data/mysql/3308/data --user=mysql
5.准备配置文件
以3306为例,3307和3308按照3306的配置文件加以修改即可。
#vim /data/mysql/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/socket/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/data/mysql/3306/log/mariadb.log
pid-file=/data/mysql/3306/pid/mariadb.pid
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d
6.准备启动程序脚本
我事先准备好了一个简单的脚本文件mysqld(文末附脚本内容)
#cp mysqld /data/mysql/3306/bin/
针对各个实例稍加修改(以3306为例)
文件中修改的内容:
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/data/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
修改完以后,对程序脚本添加执行权限:
#chmod +x /data/mysql/3306/bin/mysqld
#chmod +x /data/mysql/3307/bin/mysqld
#chmod +x /data/mysql/3308/bin/mysqld
完成之后就可以运行启动程序脚本启动实例了(以3306为例)
#/data/mysql/3306/bin/mysqld start
启动之后可以查看端口开放情况以验证是否成功。
启动成功吗,便可以通过socket,打开三个不同的实例了。(以3306为例)
#mysql -S /data/mysql/3306/socket/mysql.sock
7.修改数据库口令
#mysqladmin -uroot -S /data/mysql/3306/socket/mysql.sock password "centos"
之后再次修改mysqld脚本
附:mysqld脚本文件内容
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd="centos"
cmd_path="/usr/bin"
mysql_basedir="/data/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac