在一台server上启动多个mysql服务

本文详细介绍了如何为第二个MySQL建立数据目录、初始化数据库文件、配置MySQL服务及启动双节点集群的过程,包括设置数据目录、初始化系统schema、配置文件编写、启动与关闭服务的步骤,并提供了命令行操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先给第二个mysql建立一个数据目录,并把所有者给mysql用户

例如:

mkdir data2

chown mysql:mysql data2

然后在data2目录里,初始化数据库文件。

mysql_install_db --datadir=/XXX/data2 --user=mysql

执行结束后在data2目录下,会出现一些系统schema,如mysql,performance_schema。还有一个test schema

准备工作结束后,开始写配置文件,我的配置文件如下

[mysqld_multi]

#说白了还是调用mysqld_safe其服务,所以要指定其位置。
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

#[mysqld]原来的配置头后面要加个数字,启动时好识别配置的位置

[mysqld1]

server-id=3
log-bin=mysql-bin
replicate-do-db=c

read-only=1

lower_case_table_names=1

datadir = "XXX/data"
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
user=mysql

[mysqld2]
port = 3307
socket = "xxx/data2/mysql.sock2"
server-id=3
pid-file = "/xxx/data2/db2.pid"
datadir = "/xxx/data2"
user=mysql

配置改好后,就可以启动了

mysqld_multi start 1-2

1-2表示要启动的服务器,[mysqld]后面的数字。

这里要注意配置文件似乎要放到/etc/下才行,我以前放在/usr/下怎么也起不起来。

关闭的时候,使用mysqld_multi stop 1-2

可以用以下命令查看进程状态。

 ps -aux|grep mysql

root     14819  0.5  0.0 106228  1392 pts/3    S    16:50   0:00 /bin/sh /usr/bin/mysqld_safe --server-id=3 --log-bin=mysql-bin --replicate-do-db=c --read-only=1 --log_bin_trust_function_creators=1 --lower_case_table_names=1 --datadir=/mnt/erp/programdata/data --port=3306 --sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES --user=mysql
root     14826  0.2  0.0 106228  1388 pts/3    S    16:50   0:00 /bin/sh /usr/bin/mysqld_safe --port=3307 --socket=/data2/mysql.sock2 --server-id=3 --pid-file=//data2/db2.pid --datadir=//data2 --user=mysql
mysql    15133  9.5  5.5 1011800 448172 pts/3  Sl   16:50   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=//data2 --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --server-id=3 --log-error=//data2/SlaveDB.err --pid-file=//data2/db2.pid --socket=/data2/mysql.sock2 --port=3307
mysql    15180 10.5  5.6 1340840 454176 pts/3  Sl   16:50   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=//data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --server-id=3 --log-bin=mysql-bin --replicate-do-db=c --read-only=1 --log-bin-trust-function-creators=1 --lower-case-table-names=1 --sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES --log-error=//data/SlaveDB.err --pid-file=//data/SlaveDB.pid --port=3306
root     15233  0.0  0.0 103256   856 pts/3    S+   16:50   0:00 grep mysql

其实就是从配置文件里读出参数,然后以命令行加一大段参数的方式启动mysql罢了。

无需配置文件,直接mysqld_safe也是一样的效果。

最后,新建的数据库需要连上去设root密码。

MySQL –u root -P3307的话,居然会连上老数据库。

这是因为,没有指定Socket文件

MySQL –u root -P3307 -S xxx/data2/mysql.sock2

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

 保存即可

话说,用下面的语句修改密码,改完后总是用新密码登不上去,不知道为什么。

UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值