Mysql 多实例multi_利用mysqld_multi配置单机多实例

目的

在一台服务器上做主从复制,充分利用CPU资源。下面的文档首先说明如何在一台服务器开启多个MySQL

环境MySQL

5.5

工具

mysql_install_db

mysqld_multi

配置过程

利用mysql_install_db生成数据库

mysql_install_db --datadir=/var/lib/mysql2 --user=mysql

mysql_install_db --datadir=/var/lib/mysql3--user=mysql

……

mysql_install_db命令会自动创建datadir目录。

利用mysqld_multi工具生成配置文件

[root@ora01 ~]# mysqld_multi --example

# This is an example of a my.cnf file for mysqld_multi.

# Usually this file is located in home dir ~/.my.cnf or

/etc/my.cnf

#

# SOME IMPORTANT NOTES FOLLOW:

#

# 1.COMMON USER

#

#Make

sure that the MySQL user, who is stopping the mysqld services,

has

#the

same password to all MySQL servers being accessed by

mysqld_multi.

#This

user needs to have the 'Shutdown_priv' -privilege, but for

security

#reasons

should have no other privileges. It is advised that you create

a

#common

'multi_admin' user for all MySQL servers being controlled by

#mysqld_multi.

Here is an example how to do it:

#

#GRANT

SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY

'password'

#

#You

will need to apply the above to all MySQL servers that are

being

#controlled

by mysqld_multi. 'multi_admin' will shutdown the servers

#using

'mysqladmin' -binary, when 'mysqld_multi stop' is being called.

#

# 2.PID-FILE

#

#If

you are using mysqld_safe to start mysqld, make sure that every

#MySQL

server has a separate pid-file. In order to use mysqld_safe

#via

mysqld_multi, you need to use two options:

#

#mysqld=/path/to/mysqld_safe

#ledir=/path/to/mysqld-binary/

#

#ledir

(library executable directory), is an option that only

mysqld_safe

#accepts,

so you will get an error if you try to pass it to mysqld

directly.

#For

this reason you might want to use the above options within

[mysqld#]

#group

directly.

#

# 3.DATA DIRECTORY

#

#It

is NOT advised to run many MySQL servers within the same data

directory.

#You

can do so, but please make sure to understand and deal with the

#underlying

caveats. In short they are:

#-

Speed penalty

#-

Risk of table/data corruption

#-

Data synchronising problems between the running servers

#-

Heavily media (disk) bound

#-

Relies on the system (external) file locking

#-

Is not applicable with all table types. (Such as InnoDB)

#Trying

so will end up with undesirable results.

#

# 4.TCP/IP Port

#

#Every

server requires one and it must be unique.

#

# 5.[mysqld#] Groups

#

#In

the example below the first and the fifth mysqld group was

#intentionally

left out. You may have 'gaps' in the config file. This

#gives

you more flexibility.

#

# 6.MySQL Server User

#

#You

can pass the user=... option inside [mysqld#] groups. This

#can

be very handy in some cases, but then you need to run

mysqld_multi

#as

UNIX root.

#

# 7.A Start-up Manage Script for mysqld_multi

#

#In

the recent MySQL distributions you can find a file called

#mysqld_multi.server.sh.

It is a wrapper for mysqld_multi. This can

#be

used to start and stop multiple servers during boot and

shutdown.

#

#You

can place the file in /etc/init.d/mysqld_multi.server.sh and

#make

the needed symbolic links to it from various run levels

#(as

per Linux/Unix standard). You may even replace the

#/etc/init.d/mysql.server

script with it.

#

#Before

using, you must create a my.cnf file either in /usr/my.cnf

#or

/root/.my.cnf and add the [mysqld_multi] and [mysqld#] groups.

#

#The

script can be found from support-files/mysqld_multi.server.sh

#in

MySQL distribution. (Verify the script before using)

#

上面是mysqld_multi工具的简单说明,下面是根据实际情况,修改的配置文件。为方便测试,将多实例的配置文件命名为

mysqld_multi.cnf。未指定的其他MySQL参数,将使用默认的。

[mysqld_multi]

mysqld=

/usr/bin/mysqld_safe

mysqladmin = /usr/bin/mysqladmin

#user=

multi_admin

#password=

my_password

[mysqld2]

socket=

/var/lib/mysql2/mysql2.sock

port=

3307

#pid-file=

/var/lib/mysql2/hostname.pid2

datadir=

/var/lib/mysql2

#language=

/usr/share/mysql/mysql/english

user=mysql

[mysqld3]

socket=

/var/lib/mysql3/mysql3.sock

port=

3308

#pid-file=

/var/lib/mysql3/hostname.pid3

datadir=

/var/lib/mysql3

#language=

/usr/share/mysql/mysql/swedish

user=mysql

注:我做测试的时候,把pid-file和language选项注释掉了。

启动

# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf

report

Reporting MySQL servers

MySQL server from group: mysqld2 is not running

MySQL server from group: mysqld3 is not running

# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf

start

等一会儿…………,注意start后面跟具体的数字,比如start 2,则单独开启mysqld2这个实例。

# mysqld_multi --defaults-extra-file=/etc/mysqld_multi.cnf

report

Reporting MySQL servers

MySQL server from group: mysqld2 is running

MySQL server from group: mysqld3 is running

[root@ora01 mysql2]# netstat -tunlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local AddressForeign

AddressStatePID/Program

name

tcp00

192.168.122.1:530.0.0.0:*LISTEN3808/dnsmasq

tcp00

:::3307:::*LISTEN24335/mysqld

tcp00

:::3308:::*LISTEN24241/mysqld

tcp00

:::22:::*LISTEN3537/sshd

udp00

192.168.122.1:530.0.0.0:*3808/dnsmasq

udp00

0.0.0.0:670.0.0.0:*3808/dnsmasq

连接

mysql -uroot -p -h127.0.0.1 -P3307

测试

如果--defaults-extra-file选项指定的配置文件中,未具体设置路径socket,则会用mysql默认的路径。

mysql> show variables like 'socket';

+---------------+---------------------------+

| Variable_name | Value|

+---------------+---------------------------+

| socket|

/var/lib/mysql/mysql.sock |

+---------------+---------------------------+

1 row in set (0.00 sec)

但是pid文件,会自动在数据目录内生成

mysql> show variables like '%pid%';

+---------------+---------------------------------+

| Variable_name | Value|

+---------------+---------------------------------+

| pid_file|

/var/lib/mysql2/ora01.dh.cn.pid |

+---------------+---------------------------------+

1 row in set (0.00 sec)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值