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

使用独立配置文件来实现 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 管理实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值