欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Linux利用mysqld_multi单机启动多个MySQL实例

程序员文章站 2022-05-29 19:05:15
...

一、背景说明

以往在使用mysql时用的多的是仅仅使用一个mysql schema,或者多个schema,但一般都是在同一个数据库实例中的,也就是同一个端口的。
mysql双机双向热备份中,机器甲上的myql schema(暂称为A)需要作为热备份(mysql replication)中的master节点,备份的mysql schema(暂称为B)则存在另一台机器乙上。那么双向热备中B也需要配置为master,A则配置为slave,说白了就是配置了两遍热备份,好,到这里机器甲的热备已经搞定了,再轮到乙。我们说到机器乙上也有一个mysql schema(C),也要配置为master,并且备份schema放在机器甲上,但问题来了:备份的mysql schema(B)刚才在配置热备时已经将mysql端口号与master 的角色绑定了,此时若配置C为master会将此前 配置B为master的操作覆盖掉;然后在机器甲上配置C的备份数据库(D)为master时,又会将 配置A为master的操作覆盖了。
那么在此过程中,配置schema A 和B的双向热备分别在两台机器上的默认端口3306上完成,而配置schema C和D的双向热备时,则需要分别在两台机器上不同的mysql实例中完成(端口号不同),下面对启动多个mysql实例进行说明。

二、实现步骤

(1)默认mysql已经安装完成,基本配置已经实现。

(2)配置my.cnf (仅写出本文相关的配置)

[mysqld_multi]

mysqld = /opt/mysql/server-5.6/bin/mysqld_safe #根据自己的mysql目录配置
mysqladmin = /opt/mysql/server-5.6/bin/mysqladmin

[mysqld1]
port = 3307
socket = /tmp/mysql.sock1
pid-file   = /opt/mysql/server-5.6/data3307/cloud3.pid3
basedir=/opt/mysql/server-5.6
datadir=/opt/mysql/server-5.6/data3307
log-bin=mysql1-9003-bin
user=cloud1

[mysqld2]
port = 3308
socket = /tmp/mysql.sock2
pid-file   = /opt/mysql/server-5.6/data3308/cloud3.pid2
basedir=/opt/mysql/server-5.6
datadir=/opt/mysql/server-5.6/data3308
log-bin=mysql2-9003-bin
user=cloud1

(3)初始化数据库目录(根据配置中目录指向)

cd /opt/mysql/server-5.6/;./scripts/mysql_install_db --datadir=/opt/mysql/server-5.6/data3307 --user=cloud1
cd /opt/mysql/server-5.6/;./scripts/mysql_install_db --datadir=/opt/mysql/server-5.6/data3308 --user=cloud1

初始话成功,会提示OK,否则查看数据库目录是否有权限。

(4)启动实例

使用如下参数来启动mysqld_multi: (注:该命令在mysql的bin目录中 ) 。

 mysqld_multi [options] [GNR[,GNR]...]

start,stop和report是指你想到执行的操作。你可以在单独的服务或是多服务上指定一个操作,区别于选项后面的GNR列表。如果没有指定GNR列表,那么mysqld_multi将在所有的服务中根据选项文件进行操作。
每一个GNR的值是组的序列号或是一个组的序列号范围。此项的值必须是组名字最后的数字,比如说如果组名为mysqld17,那么此项的值则为 17。如果指定一个范围,使用"-"(破折号)来连接二个数字。如GNR的值为10-13,则指组mysqld10到组mysqld13。

mysqld_multi --defaults-file=/opt/mysql/server-5.6/my.cnf start 1-2
或者
mysqld_multi --defaults-file=/opt/mysql/server-5.6/my.cnf start 1
mysqld_multi --defaults-file=/opt/mysql/server-5.6/my.cnf start 2

(5)修改密码,登陆

mysqladmin -u root -p -P 3307 -S /tmp/mysql.sock1 password  //刚开始默认没有密码,如果要输入密码,直接回车
mysql -u root -p -P 3307 -S /tmp/mysql.sock1

以上就是Linux利用mysqld_multi单机启动多个MySQL实例的详细内容,更多请关注其它相关文章!