mysql_02 centos7 mysql多实例

一、同一个版本,多个分身实例

方法1 单独配置文件、数据文件 mysqld启动

环境:
centos7.9 最小化安装
mysql 5.7.35

缺陷:
1、启动脚本未通过systemd管理,实例状态信息无法查看
2、my.cnf 中分[mysqld] [mysqld_safe] 等好多选项,是否有必要配置别的选项?
3、目前[mysqld]选项中是否还需要配置其他参数?

##复用的全局文件
yum install -y libaio perl perl-Data-Dumper vim wget 
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz &>/dev/null &
tar -xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src
ln -s /usr/local/src/mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin  mysql
mkdir  -pv /data/mysql/{3306,3307,3308}/data
chown -R mysql:mysql  /data/mysql
echo 'PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

##3306 3307 3308 单独配置文件
cat >/data/mysql/3306/my.cnf <<EOF
[mysqld]
port=3306
user=mysql
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/mysql.sock
pid-file=/data/mysql/3306/mysql.pid
log-error=/data/mysql/3306/mysql.log
#plugin-dir=  参数待定
EOF

##首次安装配置默认字符集
vi /data/mysql/3306/my.cnf    #server端
[mysqld]
character-set-server=utf8mb4  
vi /etc/my.cnf.d/mysql-clients.cnf   #client端
[mysql]
default-character-set=utf8mb4  


##初始化数据库,启动数据库
##mysqld_safe是个保护进程,mysqld异常挂掉会自动另起一个
mysqld --defaults-file=/data/mysql/3306/my.cnf --initialize
mysqld_safe --defaults-file=/data/mysql/3306/my.cnf &

##修改数据库密码
#mysqladmin  -uroot -p`awk '/A temporary password/{print $NF}' /data/mysql/3306/mysql.log` -S /data/mysql/3306/mysql.sock  password magedu
mysqladmin -uroot -p':BxXk=ZrN4F!' -S  /data/mysql/3306/mysql.sock password 'magedu'
临时密码来自/data/mysql/3306/mysql.log 

##查看数据库
mysql -uroot -pmagedu -S /data/mysql/3306/mysql.sock -e 'show variables like "port";\s;'

##开机启动  
vi /etc/rc.d/rc.local
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3306/my.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3307/my.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3308/my.cnf &
chmod +x /etc/rc.d/rc.local

##关闭数据库
mysqladmin -uroot  -pmagedu -S /data/mysql/3306/mysql.sock shutdown
方法2 全局配置文件 单独数据文件 mysqld_multi启动

环境:
centos7.9 最小化安装
mysql 5.7.35

##复用的全局文件
yum install -y libaio perl perl-Data-Dumper vim wget 
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz &>/dev/null &
tar -xf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src
ln -s /usr/local/src/mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
useradd -r -s /sbin/nologin  mysql
mkdir  -pv /data/mysql/{3306,3307,3308}/data
chown -R mysql:mysql  /data/mysql
echo 'PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

##3306 3307 3308 在全局配置文件里
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=root
password=mysql
log=/usr/local/mysql/mysqld_multi.log

[mysqld3306]
port=3306
user=mysql
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/mysql.sock
pid-file=/data/mysql/3306/mysql.pid
log-error=/data/mysql/3306/mysql.log

[mysqld3307]
port=3307
user=mysql
datadir=/data/mysql/3307/data
socket=/data/mysql/3307/mysql.sock
pid-file=/data/mysql/3307/mysql.pid
log-error=/data/mysql/3307/mysql.log


[mysqld3308]
port=3308
user=mysql
datadir=/data/mysql/3308/data
socket=/data/mysql/3308/mysql.sock
pid-file=/data/mysql/3308/mysql.pid
log-error=/data/mysql/3308/mysql.log

##首次安装配置默认字符集
vi /data/mysql/3306/my.cnf    #server端
[mysqld]
character-set-server=utf8mb4  
vi /etc/my.cnf.d/mysql-clients.cnf   #client端
[mysql]
default-character-set=utf8mb4  

##初始化数据库
mysqld --defaults-file=/data/mysql/3306/my.cnf --initialize


##启动数据库,[mysqld3306]这里只写后面的数字
mysqld_multi  start 3306,3307,3308

##修改数据库密码
#mysqladmin  -uroot -p`awk '/A temporary password/{print $NF}' /data/mysql/3306/mysql.log` -S /data/mysql/3306/mysql.sock  password magedu
mysqladmin -uroot -p':BxXk=ZrN4F!' -S  /data/mysql/3306/mysql.sock password 'magedu'
临时密码来自/data/mysql/3306/mysql.log 

##查看数据库
mysql -uroot -pmagedu -S /data/mysql/3306/mysql.sock -e 'show variables like "port";\s;'

##开机启动  
vi /etc/rc.d/rc.local
#/usr/local/mysql/bin/mysqld_multi  start 3306,3307,3308    启不来,待查
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3306/my.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3307/my.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/3308/my.cnf &
chmod +x /etc/rc.d/rc.local

##关闭数据库
mysqld_multi stop 3306
报错“WARNING: my_print_defaults command not found”

#解决方法
#vi /usr/local/mysql/bin/mysqld_multi 
#第222行,加 -s 
#my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;


二、 不同版本实例

案例1 二进制安装mariadb 10.4.22基础上 yum安装mariadb 5.5.68

环境:
centos7.9 最小化安装
已安装mariadb 10.4.22版本数据目录/data/mysql
配置文件/etc/my.cnf

[root@centos7 ~]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
user=mysql
log-error=/data/mysql/mysqld.log
character-set-server=utf8
socket=/data/mysql/mysql.sock

新增一个mysql实例,来自yum安装

yum install -y mariadb-server
mkdir /data/mysql55
chmod mysql.mysql /data/mysql55
cat >/data/mysql55/my.cnf  <<EOF
[mysqld]
datadir=/data/mysql55
user=mysql
log-error=/data/mysql55/mysqld.log
port=13306
socket=/data/mysql55/mysql.sock
EOF

#初始化数据库
/usr/bin/mysql_install_db  --datadir=/data/mysql55  --user=msyql
#启动数据库
/usr/bin/mysqld_safe --defaults-file=/data/mysql55/my.cnf &
#开机启动
echo  '/usr/bin/mysqld_safe  --defaults-file=/data/mysql55/my.cnf &' >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
#进入数据库
/usr/bin/mysql  -S /data/mysql55/mysql.sock


三、总结

主要目录文件:
程序目录、数据目录、my.cnf

关键步骤:
1、初始化数据库
初始化命令要对应实例的绝对路径,这样生成的数据文件才是对应版本的
2、启动程序文件
defaults-file 后面要指定对应实例的my.cnf
实例my.cnf文件里明确port datadir log-error socket

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值