实现MySQL的多实例
1.1 实验目的
CentOS 7.7 yum安装mariadb并实现三个实例
1.1.1 环境要求
一台主机
系统:CentOS 7.X
1.1.2 前提准备
关闭SElinux
关闭防火墙
时间同步
1.1.3 实现步骤
1. 安装mariadb
yum install mariadb-server
Systemctl start mariadb
2. 准备三个实例的目录
mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
chown -R mysql.mysql /mysql
3. 分别生成数据库文件
mysql_install_db --datadir=/mysql/3306/data --user=mysql
mysql_install_db --datadir=/mysql/3307/data --user=mysql
mysql_install_db --datadir=/mysql/3308/data --user=mysql
4. 准备配置文件
cp /etc/my.cnf /mysql/3306/etc/
vim /mysql/3306/etc/my.cnf
[mysqld]
#加此行,如果port是3306可省略此行
port=3306
datadir=/mysql/3306/data/
socket=/mysql/3306/socket/mysql.sock
[mysqld_safe]
log-error=/mysql/3306/log/mariadb.log
pid-file=/mysql/3306/pid/mariadb.pid
#重复上面步骤设置3307,3308
5. 准备启动脚本
vim /mysql/3306/bin/mysqld
port=3306
mysql_user="root"
mysql_pwd="centos"
cmd_path="/usr/bin"
mysql_basedir="/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 --defaultsfile=${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
6. 启动关闭服务
/mysql/3306/bin/mysqld start
/mysql/3307/bin/mysqld start
/mysql/3308/bin/mysqld start
7. 登录实例
/mysql/3306/bin/mysqld start
mysql -uroot -S /mysqldb/3306/socket/mysql.sock
mariadb>show variables like ‘port’ #确认连接的端口
8. 修改root密码
mysqladmin -uroot -S /mysqldb/3306/socket/mysql.sock password 'magedu' #加上新口令
#或者登录mysql,执行下面也可以
Mariadb>update mysql.user set password=password(“centos”) where user=’root’;
Mariadb>flush privileges;
#重复步骤,分别修改别外两个实例3307,3308对应root口令
9. 测试连接
mysql -uroot -S /mysqldb/3306/socket/mysql.sock –p #提示输入口令才能登录