Mysql多实例启动

多实例启动其实也不复杂,前面《Mysql的启动参数》已经说过了,可以指定配置文件,那其实在启动的时候指定配置文件,那就是独立的一个服务了,可以自行配置了。

总结一下mysql启动需要哪些东西:

1 配置文件
2 数据库目录里的mysql库
3 pid文件
4 sock文件

权限问题就不用说了,主要说一下如何部署更加方便合理,操作简单。

车东的文章提及的mysql维护经验不错,阅读完毕可能觉得还是有完善点的方案,在我的处理方式可能就希望把一些东西再整理一下。

1 app_1、app_2之类的文件夹并不好,无法知道运行的端口号
2 部署我觉得可以考虑主从的启动方式
3 常规参数我觉得在配置文件里独立指定也不错
4 启动脚本可以只考虑变动的文件夹,这样脚本复制了也不用修改

下面说一下部署的内容:

1 脚本三个,作为主服务器启动、作为从服务器启动、关闭
2 配置文件两个,主服务器启动的和从服务器启动的
3 数据库指定在var目录,也方便打包

我觉得可以把文件夹名曰 mysql<port> ,目录形式如下:

[root@bogon mysql3308]# ls -R
.:
master_start.sh my_master.cnf my_slave.cnf slave_start.sh stop.sh var

./var:
bogon.err dbtest mydb mysql mysql-bin.000001 mysql-bin.000002 mysql-bin.index mysql.pid mysql.sock

./var/dbtest:
(省略)

./var/mydb:
(省略)

./var/mysql:
(省略)

主服务器启动脚本 master_start.sh

#!/bin/sh
rundir=dirname "$0"
datadir=`$rundir"/var"`
echo "server path : $rundir"
echo "data path : $datadir/"

/Data/apps/mysql/bin/mysqld_safe \
--defaults-file="$rundir"/my_master.cnf \
--pid-file="$rundir"/mysql.pid \
--datadir="$datadir" \
--socket="$rundir"/mysql.sock \
&

从服务器启动脚本 slave_start.sh

#!/bin/sh
rundir=`dirname "$0"`
datadir=$rundir"/var"
echo "server path : $rundir"
echo "data path : $datadir/"

/Data/apps/mysql/bin/mysqld_safe \
--defaults-file="$rundir"/my_slave.cnf \
--pid-file="$rundir"/mysql.pid \
--datadir="$datadir" \
--socket="$rundir"/mysql.sock \
&

配置文件 my_master.cnf

[mysqld]
port = 3308
socket = /tmp/mysql.sock
user = mysql

skip-locking
skip-name-resolve

max_connect_errors=100000
max_connections=1024
wait_timeout=600

key_buffer = 256M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

binlog-ignore-db=mysql,test,information_schema
log-bin=mysql-bin

server-id = 1

#部分内容
#注意:参数也没细调节,忽略掉底下的其它栏目

从服务器的配置差不多,但指定了一些特殊的内容:
server-id = 1 以下的更替为:

server-id = 2
master-host = 192.168.1.41
master-user = aslibra
master-password = aslibra.com
master-port = 3306

#read-only

具体参数就先不讨论了,下次再说

停止的脚本 stop.sh

#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/Data/apps/mysql5/bin/mysqladmin -uaslibra -paslibra.com -S"$rundir"/mysql.sock shutdown