首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

单台linux部署多个mysql实例实战

2024-12-18 来源:化拓教育网
  1. 了解什么是mysql多实例

MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务;

  1. 部署mysql多实例的两种方式

(1) 使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
(2) 通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;

本文使用的是第二种方法来实现mysql的多实例;

  1. 安装环境准备
    linxu环境:centos 7.1
    mysql安装包: mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz(使用的是免编译二进制包安装)
  2. 解压与迁移
tar -xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  
mv mysql-5.7.18-linux-glibc2.5-x86_64 /test/mysql/mysql
  1. 创建相关目录
mkdir -p /test/mysql/mysql/data
mkdir /test/mysql/mysql/data/mysql1
mkdir /test/mysql/mysql/data/mysql2
mkdir -p /test/mysql/mysql/data/log
mkdir -p /test/mysql/mysql/data/log/mysql1
mkdir -p /test/mysql/mysql/data/log/mysql2
  1. 创建mysql用户和组
groupadd -r mysql
useradd -r -g mysql mysql

授权

chown -R mysql:mysql /test/mysql/mysql/ 
  1. 添加环境变量
echo 'export PATH=$PATH:/test/mysql/mysql/bin' >> /etc/profile
source /etc/profile


  1. 这里要注意一下server_id和port不要冲突了
[client]
port=3306
socket=/test/mysql/mysql/mysql1.sock

[mysqld_multi]
mysqld = /test/mysql/mysql/bin/mysqld_safe
mysqladmin = /test/mysql/mysql/bin/mysqladmin
log = /test/mysql/mysql/data/log/mysqld_multi.log

[mysqld]
user=mysql
basedir =/test/mysql/mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld1]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/test/mysql/mysql/data/mysql1
port=3306
server_id=mysql1
socket=/test/mysql/mysql/mysql1.sock
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /test/mysql/mysql/data/log/mysql1/slow.log
log-error = /test/mysql/mysql/data/log/mysql1/error.log


[mysqld2]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/test/mysql/mysql/data/mysql2
port=3307
server_id=mysql2
socket=/test/mysql/mysql/mysql2.sock
log-output=file
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /test/mysql/mysql/data/log/mysql2/slow.log
log-error = /test/mysql/mysql/data/log/mysql2/error.log

  1. 初始化数据库
    初始化mysql1的数据库
/test/mysql/mysql/bin/mysql_ssl_rsa_setup --basedir=/test/mysql/mysql/  --datadir=/test/mysql/mysql/data/mysql1    

初始化mysql2的数据库

/test/mysql/mysql/bin/mysql_ssl_rsa_setup --basedir=/test/mysql/mysql/  --datadir=/test/mysql/mysql/data/mysql2    
  1. 检查数据库是否初始化成功
[root@mysql ~]# cd /test/mysql/mysql/data/mysql1
[root@mysql data]# ls
  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.pid  performance_schema  test

看一下目录下面文件有没有创建成功,mysql2同上

  1. 启动mysql:
bin/mysqld_multi start

查看启动状态:

bin/mysqld_multi report
  1. 登陆mysql并修改密码:
mysql -u root -p -S mysql1.sock
set password for root@'localhost'=password('123456'); 
flush privileges; 
显示全文