当前位置: 首页 > news >正文

CentOS启动两个MySQL实例

在 CentOS 7 上配置 MySQL 3406 端口实例

要在同一台服务器上运行另一个 MySQL 实例(3406 端口),需要创建独立的配置文件、数据目录和服务文件。以下是详细步骤:

0.环境

操作系统:CentOS 7

MySQL:5.7.36

1. 创建必要的目录

首先为新实例创建独立的数据和日志目录:

# 创建数据目录
mkdir -p /data/mysql3406
# 创建日志目录
mkdir -p /data/log/mysql3406
# 设置权限
chown -R mysql:mysql /data/mysql3406
chown -R mysql:mysql /data/log/mysql3406

2. 创建新的配置文件

复制并修改原配置文件:

cp /etc/my.cnf /etc/my3406.cnf

编辑新配置文件/etc/my3406.cnf,内容如下:

[mysqld]
port        = 3406
socket      = /data/mysql3406/run/mysqld.sock
user = mysql
log_bin_trust_function_creators = 1
datadir = /data/mysql3406
pid-file = /data/mysql3406/run/mysqld.pid
skip_ssl 
log-error = /data/log/mysql3406/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/log/mysql3406/mysql-slow.log
lower_case_table_names=1
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1024M
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
query_cache_type = 1
tmp_table_size = 32M
performance_schema_max_table_instances = 1000explicit_defaults_for_timestamp = true
max_connections = 5000
max_connect_errors = 1000
open_files_limit = 65535log-bin = mysql3406-bin
binlog_format=row
expire_logs_days = 10default_storage_engine = InnoDB
innodb_file_per_table = 1
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 = 50symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLEScharacter-set-server=utf8
collation-server=utf8_general_ciserver-id = 2  # 必须与原实例不同[mysqldump]
quick
max_allowed_packet = 16M[mysql]
default-character-set = utf8
socket = /data/mysql3406/run/mysqld.sock
no-auto-rehash[mysql.server]
default-character-set = utf8
socket = /data/mysql3406/run/mysqld.sock[mysqld_safe]
log-error=/data/log/mysql3406/mysqld.log
pid-file=/data/mysql3406/run/mysqld.pid
socket = /data/mysql3406/run/mysqld.sock
default-character-set = utf8[client]
default-character-set = utf8
socket = /data/mysql3406/run/mysqld.sock

3. 创建新的 systemd 服务文件

复制并修改服务文件:

cp /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld3406.service

编辑新服务文件/usr/lib/systemd/system/mysqld3406.service:

[Unit]
Description=MySQL Server (3406)
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target[Install]
WantedBy=multi-user.target[Service]
User=mysql
Group=mysqlType=forkingPIDFile=/data/mysql3406/run/mysqld.pid# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0# Execute pre and post scripts as root
PermissionsStartOnly=true# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd# Start main service - 指定新的配置文件
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my3406.cnf --daemonize --pid-file=/data/mysql3406/run/mysqld.pid $MYSQLD_OPTS# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql# Sets open_files_limit
LimitNOFILE = 5000Restart=on-failureRestartPreventExitStatus=1PrivateTmp=false

4. 初始化新的 MySQL 实例

# 初始化数据库(注意要保证datadir目录下为空,否则报错)
mysqld --defaults-file=/etc/my3406.cnf --initialize --user=mysql# 查看初始密码
grep 'temporary password' /data/log/mysql3406/mysql-error.log# 创建run目录
mkdir -p /data/mysql3406/run
# 设置权限
chown -R mysql:mysql /data/mysql3406/run

5. 启动并设置开机启动

# 重新加载systemd配置
systemctl daemon-reload# 启动新实例
systemctl start mysqld3406# 设置开机启动
systemctl enable mysqld3406# 检查状态
systemctl status mysqld3406

6. 登录新实例并修改密码

# 使用初始密码登录(注意此处使用-S指定套接字,否则可能会连接到3306实例)
mysql -u root -P 3406 -S /data/mysql3406/run/mysqld.sock -p# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
FLUSH PRIVILEGES;

现在你应该有两个 MySQL 实例在运行:一个在 3306 端口,另一个在 3406 端口,它们各自有独立的数据目录和配置。

http://www.dtcms.com/a/335683.html

相关文章:

  • C#对象的本地保存与序列化详解笔记
  • [每周一更]-(第155期):Go 1.25 发布:新特性、技术思考与 Go vs Rust 竞争格局分析
  • 【前端面试题】前端面试知识点(第三十一题到第六十一题)
  • 项目发布上线清单
  • neo4j导入导出方法
  • 《设计模式》抽象工厂模式
  • 链表OJ题讲解---试金石含金量
  • RabbitMQ入门:生产者和消费者示例
  • Java注解学习记录
  • 什么是EDA(Exploratory Data Analysis,探索性数据分析)
  • AI出题人给出的Java后端面经(十七)(日更)
  • 第 463 场周赛(GPT-3,Me-1)
  • Foreign-Memory Access API外部内存API
  • 混沌工程(Chaos engineering):系统韧性保障之道
  • 计算机网络 HTTPS 全流程
  • p5.js 3D 形状 “预制工厂“——buildGeometry ()
  • 【位运算】查询子数组最大异或值|2693
  • 图灵完备(Turing Complete)免安装中文版
  • 关于pygsp引发的一系列问题和实例小demo
  • ​​Vue 3 开发速成手册
  • 裸机框架:按键模组
  • macos 安装nodepad++ (教程+安装包+报错后的解决方法)
  • AI证书怎么选
  • 交叉编译 手动安装 SQLite 库 移植ARM
  • 基于Vue + Node能源采购系统的设计与实现/基于express的能源管理系统#node.js
  • JavaScript 性能优化实战大纲
  • 记SpringBoot3.x + Thymeleaf 项目实现(MVC架构模式)
  • .NET 中的延迟初始化:Lazy<T> 与LazyInitializer
  • 【Java后端】MyBatis-Plus 原理解析
  • Unity进阶--C#补充知识点--【Unity跨平台的原理】了解.Net