代码改变世界

mysqld_multi部署mysql单机多实例

  abce  阅读(489)  评论(0编辑  收藏  举报

1.安装gcc-c++、ncurses依赖包

1
# yum install gcc-c++  ncurses-devel

2.安装cmake,用来编译mysql

1
2
3
4
5
6
7
8
# tar -xvf cmake-3.2.0-.tar.gz
# mv cmake-3.2.0 cmake
# mv cmake /tmp/
# cd /tmp/cmake/
# ./bootstrap
# make
# make install
# cmake --version

3.安装bison

1
2
3
4
5
6
7
8
# tar -xvf bison-3.0.tar.gz
# mv bison-3.0 bison
# mv bison /tmp
# cd /tmp/bison/
# ./cofigure
# make
# make install
# bison --version

4.创建mysql用户

1
2
# /usr/sbin/groupadd mysql
# useradd -s /sbin/nologin -g  mysql -M mysql

5.编译安装

配置

1
2
3
4
5
6
7
8
9
10
11
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \

生成可执行文件

1
# make

安装

1
# make install

6.创建多实例的数据文件目录

1
# mkdir -p /data/{3306,3307}/data/

7.初始化数据库,创建基础的数据库文件

1
2
3
# cd /usr/local/mysql/scripts/
#./mysql_install_db  --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data/
#./mysql_install_db  --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data/

8.配置多实例的文件权限
授权mysql用户和组管理多实例目录/data

1
# chown -R mysql.mysql /data

9.配置多实例的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# vim /etc/my.cnf
[mysqld_multi]  
mysqld     = /usr/local/mysql/bin/mysqld_safe  
mysqladmin = /usr/local/mysql/bin/mysqladmin  
user       = multi_admin  
password   = multipass  
   
[mysqld3306]  
socket          = /data/3306/data/mysql.sock
port            = 3306
log-error       = /data/3306/data/mysql.err 
datadir         = /data/3306/data/ 
pid-file        = /data/3306/data/mysql.pid
log-bin         = /data/3306/data/mysql-bin
relay_log       = /data/3306/data/relay-bin
slow_query_log_file     = /data/3306/data/slowquery.log
general_log_file        = /data/3306/data/general.log
user                    = mysql  
   
[mysqld3307]  
socket          = /data/3307/data/mysql.sock
port            = 3307
log-error       = /data/3307/data/mysql.err 
datadir         = /data/3307/data/ 
pid-file        = /data/3307/data/mysql.pid
log-bin         = /data/3307/data/mysql-bin
relay_log       = /data/3307/data/relay-bin
slow_query_log_file     = /data/3307/data/slowquery.log
general_log_file        = /data/3307/data/general.log
user                    = mysql

10.配置mysql命令的环境变量

1
2
# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
# source /etc/profile

11.启动
查看状态

1
2
3
4
# mysqld_multi --defaults-extra-file=/etc/my.cnf report  
Reporting MySQL servers
MySQL server from group: mysqld3306 is not running
MySQL server from group: mysqld3307 is not running

启动实例

1
2
3
4
5
# mysqld_multi  start 
# mysqld_multi --defaults-extra-file=/etc/my.cnf report
Reporting MySQL servers
MySQL server from group: mysqld3306 is running
MySQL server from group: mysqld3307 is running

12.修改的root用户的密码并且限制只能本机登陆

1
2
# mysqladmin -S /data/3306/data/mysql.sock -u root -h 'localhost' password 'XXXXXXXX'
# mysqladmin -S /data/3307/data/mysql.sock -u root -h 'localhost' password 'XXXXXXXX'

13.使用root用户登陆

1
2
# mysql -S  /data/3306/data/mysql.sock -u root -p
# mysql -S  /data/3307/data/mysql.sock -u root -p

14.创建关闭实例的用户

1
2
mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';

14.停止实例
停止所有实例

1
# mysqld_multi  stop

停止实例1

1
# mysqld_mulit stop 3306

 

管理多实例的话可以使用mysqlmanager实例管理器,管理器来会比较方面 

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示