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 = 1000

explicit_defaults_for_timestamp = true
max_connections = 5000
max_connect_errors = 1000
open_files_limit = 65535


log-bin = mysql3406-bin
binlog_format=row
expire_logs_days = 10

default_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 = 50

symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

character-set-server=utf8
collation-server=utf8_general_ci

server-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=mysql

Type=forking

PIDFile=/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 = 5000

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=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 端口,它们各自有独立的数据目录和配置。

相关推荐
妖灵翎幺4 分钟前
Java应届生求职八股(2)---Mysql篇
数据库·mysql
HMBBLOVEPDX7 分钟前
MySQL的事务日志:
数据库·mysql
焄塰20 分钟前
Ansible 管理变量和事实
学习·centos·ansible
炫友呀23 分钟前
Centos 更新/修改宝塔版本
linux·运维·centos
weixin_419658312 小时前
MySQL数据库备份与恢复
数据库·mysql
林开落L5 小时前
库制作与原理(下)
linux·开发语言·centos·库制作与原理
苏婳6667 小时前
【最新版】怎么下载mysqlclient并成功安装?
数据库·python·mysql
Java水解9 小时前
MySQL 亿级数据表平滑分表实践:基于时间分片的架构演进
后端·mysql
代码的余温10 小时前
SQL性能优化全攻略
数据库·mysql·性能优化