日期:2014-05-16  浏览次数:20988 次

Mac下mysql多端口实例配置并设置开机自动启动
请原谅我使用java代码的风格来表示很多的终端命令,编辑器自带的样式太少了??



先是给mysql配置~
(文中"/Users/XXX"代表当前用户主目录,我是在自己主目录下建了一个 Dev 目录,各种开发工具都放在里面,下文中的路径请根据自己实际目录作调整)

1、这里使用官网的tar.gz包,然后解压到 /Users/XXX/Dev/mysql 目录下

2、在 /Users/XXX/Dev/mysql/data 下新建目录 data1 和 data2

3、初始化数据库,在 terminal 执行如下shell :
cd /Users/XXX/Dev/mysql
./script/mysql_install_db --datadir=./data/data1
./script/mysql_install_db --datadir=./data/data2

4、mac下mysql默认是不需要 my.cnf 的,所以需要在 /Users/XXX/Dev/mysql 下新建 my.cnf 内容如下:
[mysqld_multi]
mysqld = /Users/XXX/Dev/mysql/bin/mysqld_safe
mysqladmin = /Users/XXX/Dev/mysql/bin/mysqladmin
user = root
#password = root

[mysqld1]
port      = 3307
socket    = /tmp/mysql.sock1
pid-file=/Users/XXX/Dev/mysql/data/data1/db-app1.pid
log=/Users/XXX/Dev/mysql/data/data1/db-app.log
datadir = /Users/XXX/Dev/mysql/data/data1
basedir = /Users/XXX/Dev/mysql
user = root

[mysqld2]
port = 3308
socket = /tmp/mysql.sock2
pid-file = /Users/XXX/Dev/mysql/data/data2/db-app2.pid
log=/Users/XXX/Dev/mysql/data/data2/db-app.log
datadir = /Users/XXX/Dev/mysql/data/data2
basedir = /Users/XXX/Dev/mysql
user = root

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


5、手动启动/关闭实例的命令(这里做测试用,后期改为自动启动将命令改为脚本执行)

启动:
/Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf start 1-2 

注意:有些文章讲的是 –config-file ,但在5.5的版本里,已经没有该选项了。
起动时,会报找不到my_print_defaults。需要在PATH中添加bin目录。

关闭:
/Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf stop 1-2 

或者
/Users/XXX/Dev/mysql/bin/mysqladmin -uroot -h 127.0.0.1 -P 3306 shutdown

其实mysqld_multi就是通过mysqladmin来实现关闭实例的。

############## 环境变量设置方法1 #################
打开shell后, 默认在$HOME目录下
键入: vi .bash_profile 回车, 编辑.bash_profile文件
按i进入插入文字编辑模式
找到设定PATH环境变量的一行,将你要添加的完整路径(如:/Users/XXX/Dev/mysql/bin)加入其中。如果没有找到设定PATH变量的行, 你可以自己添加一行:

export PATH=${PATH}:/Users/XXX/Dev/mysql/bin
############ 环境变量设置方法2(推荐) ##############
在 /etc/paths.d 建立一个文件专门表示mysql的path
1)浏览到 /etc/paths.d :
cd /etc/paths.d
2)创建文件:
sudo vi mysql
3)编辑模式下输入:
/Users/XXX/Dev/mysql/bin
4)可以在terminal下输入以下命令验证是否生效:
echo $PATH

6、修改root密码
mysqladmin -u root -h 127.0.0.1 -P 3307 password [yourpassword]
mysqladmin -u root -h 127.0.0.1 -P 3308 password [yourpassword]



20120229 补充:
使用mysqldump时需指定sock,比如备份3308端口的数据库时,须添加“ -S /tmp/mysql.sock2”

=================到这里mysql配置完毕,开始设置开机自动启动=====================

主要做法是将脚本加入到StartupItems

1.首先,要放到 /Library/StartupItems 下的自定义启动项必须是一个目录,然后再把脚本放到目录下,而且脚本与目录必须同名,以启动项命名为 MysqlMulti 为例
terminal下执行:
cd /Library/StartupItems
sudo mkdir MysqlMulti

2.创建启动脚本
创建脚本文件:
sudo vi /Library/StartupItems/MysqlMulti/MysqlMulti 

编辑模式下输入以下内容:
#!/bin/sh

# Source common setup, including hostconfig.
#
. /etc/rc.common

StartService( )
{
	ConsoleMessage "Starting MySQL"
	/Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf start 1-2
}

StopService( )
{
	ConsoleMessage "Stopping MySQL"
	/Users/XXX/Dev/mysql/bin/mysqld_multi --defaults-file=/Users/XXX/Dev/mysql/my.cnf stop 1-2
}

RestartService( )
{
	ConsoleMessage "Restarting MySQL"
	StopService
	StartService