MySQL多实例的配置

步骤1 环境准备

安装多实例数据库

1)安装好数据库mariadb

yum -y install mariadb-server

2)创建mysql多实例数据文件目录

mkdir /data/mysql/3307/{data,etc,socket,log,bin,pid} -pv

mkdir /data/mysql/3308/{data,etc,socket,log,bin,pid} --pv

chown -R mysql.mysql /data/mysql

mysql_install_db --datadir=/data/mysql/3307/data/ --user=mysql

mysql_install_db --datadir=/data/mysql/3308/data/ --user=mysql

步骤2 创建配置文件

cp -a /etc/my.cnf /data/mysql/3307/etc/

vi /data/mysql/3307/etc/my.cnf

mysqld

port=3307

datadir=/data/mysql/3307/data

socket=/data/mysql/3307/socket/mysql.sock

mysqld_safe

log-error=/data/mysql/3307/log/mariadb.log

pid-file=/data/mysql/3307/pid/mariadb.pid

cp /data/mysql/3307/etc/my.cnf /data/mysql/3308/etc/

vi /data/mysql/3308/etc/my.cnf

编辑启动脚本

vi /data/mysql/3307/bin/mysqld

#!/bin/bash

port=3307

mysql_user="root"

mysql_pwd=""

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

vi /data/mysql/3308/bin/mysqld

#!/bin/bash

port=3308

mysql_user="root"

mysql_pwd=""

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

chmod +x /data/mysql/3307/bin/mysqld

chmod +x /data/mysql/3308/bin/mysqld

步骤3 数据库启动

cd /usr/bin

./mysqld_safe --defaults-file=/data/mysql/3307/etc/my.cnf &

chmod 644 /data/mysql/3307/etc/my.cnf

./mysqld_safe --defaults-file=/data/mysql/3307/etc/my.cnf &

ps -elf|grep mariadb

netstat -tanp | grep 3307

./mysqld_safe --defaults-file=/data/mysql/3308/etc/my.cnf &

chmod 644 /data/mysql/3308/etc/my.cnf

./mysqld_safe --defaults-file=/data/mysql/3308/etc/my.cnf &

ps -elf|grep mariadb

netstat -tanp | grep 3308

步骤4 多实例验证

登录多实例数据库

mysql -uroot -S /data/mysql/3307/socket/mysql.sock

show variables like '%port%';

mysql -uroot -S /data/mysql/3308/socket/mysql.sock

show variables like '%port%';

相关推荐
夜雪一千8 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
程序员夏洛12 小时前
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
数据库·mysql
l12586513 小时前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain
梦Arrebol13 小时前
Mysql内容及相关实验
数据库·mysql
OceanWaves199314 小时前
mysql 8.0.32 磁盘爆满,清理从库日志
数据库·mysql
又见情义14 小时前
RK3568 Android 13 驱动适配实战:从零开始让SDK在自己的板子上跑起来
android·arm开发·驱动开发
clorinda15 小时前
MySQL 入门笔记:DQL 基础查询与常用函数
adb
霸道流氓气质15 小时前
MySQL 大表 DDL 变更 — 原理、方案与实践
android·数据库·mysql
JavaPub-rodert16 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
明雨-开发16 小时前
Android打包时候Execution failed for task ‘:launcher:lintVitalAnalyzeRelease‘.
android