文档章节

mysql 5.7 配置多实例 — 独立配置文件方式

big_cat
 big_cat
发布于 2017/04/01 11:21
字数 1208
阅读 1268
收藏 4

使用独立配置文件来实现 mysql 的单机多实例

一下教程皆以已在 /usr/local 下安装了 mysql 为说明

我们将在原 3306 实例的基础上新建 3307 和 3308 两个实例

1、创建实例目录

[root@localhost ~]# mkdir /usr/local/mysql{3307,3308}/data -p
[root@localhost ~]# chown mysql.mysql /usr/local/mysql{3307,3308} -R

2、初始化数据目录

# 这里我们使用 --initialize-insecure 来让生成的新实例的数据库密码为空
[root@localhost ~]# mysqld --no-defaults \
--initialize-insecure \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql3307/data \
--user=mysql \
--explicit_defaults_for_timestamp

[root@localhost ~]# mysqld --no-defaults \
--initialize-insecure \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql3308/data \
--user=mysql \
--explicit_defaults_for_timestamp

3、分配独立配置文件

这里简单说一下,mysql 的多实例是通过不同的配置创建多个进程,basedir 是一样的,实例拥有独立的配置文件和数据目录 datadir,而 mysql 加载配置的过程为:

/etc/my.cnf > basedir/my.cnf > datadir/my.cnf

 我们需要把实例的配置文件隔离开,这里将配置文件放在每个 datadir 下(在 etc 或 basedir 下就不要存在 my.cnf 了,当然配置些全局的参数在里面试没问题的,这里我们为了方便就不搞全局配置了,每个实例都是绝度的单独配置文件),待会我们还要修改 mysql 的服务控制脚本,将实例注册到系统服务中,方便使用 service / systemctl 进行管理

# 各实例的配置文件
cp /usr/local/mysql/support-files/my.cnf /usr/local/mysql/data
cp /usr/local/mysql/support-files/my.cnf /usr/local/mysql3307/data
cp /usr/local/mysql/support-files/my.cnf /usr/local/mysql3308/data

配置示例:以 3308 为例,其他灵活更改就好

[client]
port        = 3308 
socket      = /tmp/mysql3308.sock

[mysqld]
port    = 3308 #注意
socket  = /tmp/mysql3308.sock #注意
datadir = /usr/local/mysql3308/data #注意
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M

log-error = /usr/local/mysql3308/mysql3308_error.log #注意
pid-file = /usr/local/mysql3308/mysql3308.pid #注意

explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 100
max_connect_errors = 5
open_files_limit = 65535

log-bin=mysql-bin
binlog_format=mixed
server-id   = 1
expire_logs_days = 10
early-plugin-load = ""

default_storage_engine = InnoDB
innodb_data_home_dir = /usr/local/mysql3308/data #注意
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql3308/data #注意
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

把加载独立配置写入控制脚本,还有一种方法是直接用 mysqld_safe 命令去加载配置文件进行启动,用起来麻烦...关闭或者reload还得用 mysqladmin命令,我也贴出来吧,大家自行决定用哪一种

1、注册到系统服务中,方便使用 service 管理

# 各实例的控制脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql # 可能已经存在 自行决定是否覆盖
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql3307
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql3308

# 配置各实力的服务脚本
[root@localhost local]# vi /etc/init.d/mysql3308
# 修改如下
basedir=/usr/local/mysql
datadir=/usr/local/mysql3308/data

# 在 283 行有(灵活寻找 不同版本可能会 +- 若干行)
$bindir/mysqld_safe --datadir="$datadir" .....
# 修改如下,即为启动指定加载的配置文件
$bindir/mysqld_safe --defaults-file="$datadir/my.cnf" --datadir="$datadir" .....

其他的实例请对应灵活修改

2、或者你可以直接使用 msyqld_safe 命令方式

# 使用 mysqld_safe 命令加载指定的配置文件启动
[root@localhost ~]# mysqld_safe --defaults-file=/usr/local/mysql3308/data/my.cnf >/dev/null 2>&1 &
# 使用 mysqladmin 命令 shutdown 或 reload
[root@localhost ~]# mysqladmin -u root -p -S /tmp/mysql3308.sock shutdown|reload

4、启动实例

[root@localhost ~]# service mysql start
[root@localhost ~]# service mysql3307 start
[root@localhost ~]# service mysql3308 start

[root@localhost ~]# service mysql status
[root@localhost ~]# service mysql3307 status
[root@localhost ~]# service mysql3308 status

[root@localhost ~]# service mysql stop|restart
[root@localhost ~]# service mysql3307 stop|restart
[root@localhost ~]# service mysql3308 stop|restart

5、修改初始密码

# 原密码为空 设置新密码为 123456
[root@localhost ~]# mysqladmin -uroot -p password 123456 -S /tmp/mysql3308.sock

6、登录实例

[root@localhost ~]# mysql -u root -p -S /tmp/mysql3308.sock
mysql> select @@port;
+--------+
| @@port |
+--------+
|   3308|
+--------+
1 row in set (0.00 sec)

mysql> select @@socket;
+---------------------+
| @@socket            |
+---------------------+
| /tmp/mysql3308.sock |
+---------------------+
1 row in set (0.00 sec)

7、查看实例运行状态 

[root@localhost ~]# ps -ef | grep mysqld_safe | grep -v grep

可以看到有三个数据库实例正在运行,加载不同的配置文件,不同的数据目录

[root@localhost ~]# ps -ef | grep mysqld_safe | grep -v grep
root     31374     1  0 10:41 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql3307/var/my.cnf --datadir=/usr/local/mysql3307/var --pid-file=/usr/local/mysql3307/mysql3307.pid
root     31949     1  0 10:41 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql3308/var/my.cnf --datadir=/usr/local/mysql3308/var --pid-file=/usr/local/mysql3308/mysql3308.pid
root     32522     1  0 10:41 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/var/my.cnf --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/mysql.pid

至此,独立配置文件的 mysql 多实例到此就结束了,主要的步骤为

1、创建实例数据库目录,使用 mysqld initialize 命令进行初始化

2、修改配置文件,修改服务脚本

3、启动实例服务

4、使用 mysqladmin 设置密码

5、使用 service 管理实例

© 著作权归作者所有

big_cat
粉丝 49
博文 237
码字总数 162865
作品 0
长宁
后端工程师
私信 提问
mysql单机多实例搭建采坑记录

这次尝试使用的是 mysql提供的多实例管理功能 mysql_multi , 多个实例的配置文件在同一个地方 /etc/my.cnf,还有一种方式是将配置文件分别放在 实例的数据文件下然后在启动的时候指定配置文...

holysu
2018/08/19
0
0
RDS for MySQL 5.7 备份恢复为本地实例

RDS for MySQL 5.7 备份恢复为本地实例 1. 本地环境 2. 恢复步骤 3. 后记 近期同学咨询反馈 RDS for MySQL 5.7 备份恢复本地实例的问题比较多,提供一个恢复样例。 1. 本地环境 1.1 MySQL DB...

田杰
01/24
0
0
MySQL 5.7 多源复制实践

运维之美 MySQL 5.7发布后,在复制方面有了很大的改进和提升。比如开始支持多源复制 (multi-source) 以及真正的支持多线程复制了。多源复制可以使用基于二进制日志的复制或者基于事务的复制。...

rootliu
07/09
71
0
Mysql配置Replication主从复制-实现读写分离

概述:Mysql集群的方式可以是很多的,主从,一主多从,多组多从,主从的策略还可以进一步选择和配置。可以说是很灵活了。本文介绍的Replication是异步复制同步方案,分别有基于日志的还有基于...

jorgezhong
2018/09/10
0
0
MySQL--------多版本多实例混合部署

1. 背景 * MySQL数据库的集中化运维,可以通过在一台服务器上,部署运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务。各个实例之间是相互独立的,每个实例的dat...

asd1123509133
2017/07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部