阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下MySQL多实例的安装部署

411次阅读
没有评论

共计 6064 个字符,预计需要花费 16 分钟才能阅读完成。

MySQL 多实例介绍
 
什么是 MySQL 多实例
 
MySQL 多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个 MySQL 服务进程,通过不同的 socket 监听不同的服务端口来提供各自的服务:
 
MySQL 多实例的特点有以下几点
 
1:有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
2:节约服务器资源
3:资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘 IO 资源,导致服务器上的其他实例提供服务的质量下降;
 
部署 mysql 多实例的两种方式
第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便;
第二种是通过官方自带的 mysqld_multi 使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理;
 
同一开发环境下安装两个数据库,必须处理以下问题
  • 配置文件安装路径不能相同
  • 数据库目录不能相同
  • 启动脚本不能同名
  • 端口不能相同
  • socket 文件的生成路径不能相同

Step 1 . 准备工作

关闭防火墙; 安装 MySQL 依赖于 libaio 库 下载,解压,重命名 MySQL 的执行文件;新建用户组和用户 等准备工作在此不再赘述。

可执行文件目录为 /data/mysql57

Linux 下 MySQL 多实例的安装部署

添加用户和组的指令

groupadd mysql

useradd mysql -g mysql

Step 2 .  添加环境变量

在 /etc/profile 文件中,追加 PATH=${PATH}:/data/mysql57/bin/

保存后,如需要立即生效,可执行 source /etc/profile。

step 3 . 创建目录并授权

在 data 根目录下执行

mkdir -p mysql3306/data mysql3306/mysql_log mysql3306/tmp mysql3307/data  mysql3307/mysql_log  mysql3307/tmp mysqld_multi/log

Linux 下 MySQL 多实例的安装部署

 创建记录 log 的文件,此步骤不可少。

touch /data/mysql3306/mysql_log/mysql3306.err

touch /data/mysql3307/mysql_log/mysql3307.err

 赋予目录和文件权限

chown -R mysql.mysql mysql3* mysqld_multi

在本测试案例中,mysql57 是从其它服务上 copy 来的,不是直接下载解压的,所以多了下面的两步授权操作。

chmod -R 755 /data/mysql57/bin
chmod -R 755 /data/mysql57/support-files

step 4 . 编辑 my.cnf

[client]
host
=localhost
socket
= /tmp/mysql.sock
default
-character-set=utf8mb4
#loose
-local-infile=0

[mysqld]
user=mysql
log_bin_trust_function_creators
=1
secure_file_priv
=/tmp

########server setting#######
sql_mode= ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
character
-set-server=utf8mb4
collation_server
=utf8mb4_unicode_ci
lower_case_table_names
= 0
skip_name_resolve
= 1
#max_connect_errors
= 1000
max_connections
= 2000
thread_cache_size
=256
#thread_stack
= 262144
#back_log
=80
max_allowed_packet
= 134217728
event_scheduler
= 1
local
-infile=0
#lower_case_table_names
= 1
explicit_defaults_for_timestamp
= 1
expire_logs_days
= 7
log_bin_trust_function_creators
=1

####.frm/.ibd files qty related
open_files_limit
=65535
innodb_open_files
=65535
table_open_cache
=65535
table_definition_cache
=65535

#### seesion buffer related
read_buffer_size= 262144
read_rnd_buffer_size
= 524288
sort_buffer_size
= 8388608
join_buffer_size
= 8388608

####memory table size
tmp_table_size=67108864
max_heap_table_size
=67108864

####timeout
interactive_timeout= 1800
wait_timeout
= 1800
# connect_timeout
=10

########slow query ########
slow_query_log= 1
log_slow_slave_statements
= 1
#log_queries_not_using_indexes
= 1
log_throttle_queries_not_using_indexes
= 10
long_query_time
= 1
#min_examined_row_limit
= 10000

########innodb settings########
innodb_buffer_pool_size= 10737418240
innodb_buffer_pool_instances
= 16
innodb_buffer_pool_dump_pct
= 40
innodb_lru_scan_depth
= 2048
innodb_page_cleaners
= 16
#innodb_purge_threads
= 4
innodb_sort_buffer_size
= 67108864
#innodb_file_per_table
= 1
#innodb_flush_log_at_trx_commit
= 1

innodb_undo_log_truncate= 1
innodb_undo_tablespaces
= 3
innodb_max_undo_log_size
= 2147483648
innodb_purge_rseg_truncate_frequency
= 128

innodb_log_file_size= 1073741824
innodb_log_files_in_group
= 3
innodb_log_buffer_size
= 16777216
innodb_flush_method
= O_DIRECT
innodb_flush_neighbors
= 0
innodb_print_all_deadlocks
= 1

innodb_strict_mode= 1
#innodb_lock_wait_timeout
= 50

innodb_io_capacity= 32768
innodb_io_capacity_max
= 65536
innodb_thread_concurrency
= 32
innodb_write_io_threads
= 8
innodb_read_io_threads
= 8

########replication settings########
master_info_repository= TABLE
relay_log_info_repository
= TABLE

gtid_mode= on
enforce_gtid_consistency
= 1
binlog_gtid_simple_recovery
=1
relay_log_recovery
= 1

slave-parallel-type = LOGICAL_CLOCK
slave
-parallel-workers = 16
slave_transaction_retries
=128
slave_preserve_commit_order
=1

log_slave_updates=1
binlog_format
= ROW
log_timestamps
=system

binlog_rows_query_log_events= 1
binlog_row_image
=full
slave_skip_errors
= ddl_exist_errors

########semisync replication settings########
##plugin_dir
=/data/mysql/plugin/
#plugin_load
= rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
#rpl_semi_sync_master_enabled
= 1
#rpl_semi_sync_master_timeout
= 5000
#rpl_semi_sync_slave_enabled
= 1

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

[mysqld3306] 
basedir= /data/mysql57
mysqladmin
=mysqladmin
datadir
=/data/mysql3306/data
port
=3306 
server_id
=102473306
socket
= /tmp/mysql_3306.sock
tmpdir
= /data/mysql3306/tmp
pid
file = /data/mysql3306/mysql_log/mysql3306.pid
slow_query_log_file
= /data/mysql3306/mysql_log/mysql3306_slow_new.log 
log
-error = /data/mysql3306/mysql_log/mysql3306.err
general_log_file
= /data/mysql3306/mysql_log/mysql3306.genlog
log
-bin = /data/mysql3306/mysql_log/mysql3306_bin
relay_log
= /data/mysql3306/mysql_log/relay3306.log

innodb_buffer_pool_size= 90G
innodb_buffer_pool_instances
= 8

[mysqld3307]
basedir= /data/mysql57
mysqladmin
=mysqladmin
datadir
=/data/mysql3307/data
port
=3307
server_id
=102473307
socket
= /tmp/mysql_3307.sock
tmpdir
= /data/mysql3307/tmp
pid
file = /data/mysql3307/mysql_log/mysql3307.pid
slow_query_log_file
= /data/mysql3307/mysql_log/mysql3307_slow_new.log
log
-error = /data/mysql3307/mysql_log/mysql3307.err
general_log_file
= /data/mysql3307/mysql_log/mysql3307.genlog
log
-bin = /data/mysql3307/mysql_log/mysql3307_bin
relay_log
= /data/mysql3307/mysql_log/relay3307.log

innodb_buffer_pool_size= 90G
innodb_buffer_pool_instances
= 8

[mysqldump]
quick

step 5 . 初始化实例

初始化 3306 端口的实例,注意产生的临时密码。

/data/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/data/mysql57  --datadir=/data/mysql3306/data

初始化 3307 端口的实例,注意产生的临时密码。

/data/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/data/mysql57  --datadir=/data/mysql3307/data

step 6 . 复制生成 mysqld_multi 并添加到开机启动

cp /data/mysql57/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
chkconfig  --add mysqld_multi

step 7 . 多实例 Mysqld 的开启

开启全部实例

mysqld_multi start

查看开启情况(查看全部实例状态)

mysqld_multi report

开启指定实例

开启 /etc/my.cnf 中 [mysqld3306] 其中 mysqld 后面的数字为标签,例如 3306 标签

mysqld_multi start 3306

同样开启 3307 标签实例

mysqld_multi start 3307

(注意:此处没有说通过 mysqld_multi stop 命令进行关闭实例,为什么不说,因为命令无效。Step 9 的操作会让它变成有效)

step 8 . 第一次登入实例,修改 root 账号密码

多实例登入需指定 socket 参数

本测试 3306 实例登入的方式为:

mysql  -S /tmp/mysql_3306.sock -uroot --port 3306 -p

Linux 下 MySQL 多实例的安装部署

 

step 9 . 赋予通过 mysqld_multi stop 关闭实例的权限。

关闭实例需要配置 root 用户及密码,修改 /etc/my.cnf 文件。

在 [client] 位置添加 

user=root
password= 密码

Linux 下 MySQL 多实例的安装部署

 因为文件中需要保留账号密码,有安全风险。实际环境中要不要如此设置,还需根据具体情况和安全要求而定。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计6064字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802840
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
Python自学26 – Cookie和Session

Python自学26 – Cookie和Session

Python 自学 26 – Cookie 和 Session 在学习 Web 开发时,Cooki...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...