设为首页 加入收藏

TOP

MySQL搭建系列之多实例(五)
2015-07-24 11:08:27 来源: 作者: 【 】 浏览:4
Tags:MySQL 搭建 系列 实例

my_cnf=/etc/mya.cnf

l 2:修改extra_args参数值,目的是让parse_server_arguments函数从中解析出datadir等参数值

(红色字体为添加部分)

extra_args=""

if test -r "$basedir/my.cnf"

then

extra_args="-e$basedir/my.cnf"

else

if test -r"$datadir/my.cnf"

then

extra_args="-e$datadir/my.cnf"

else

extra_args="-e $my_cnf"

fi

fi

l 3:在mysqld_safe命令中使用--defaults-file以便显式指定一个参数文件

$bindir/mysqld_safe --defaults-file=$my_cnf--datadir="$datadir" --pid-file="$mysqld_pid_file_path"$other_args >/dev/null 2>&1 &

注意:一定要将--defaults-file参数紧跟mysqld_safe,中间不能有其他参数,否则启动失败。

l 4:修改lock_file_path,若未修改,虽还不清楚有啥影响,但以防万一,还是修改之

lock_file_path="$lockdir/mysqla"

l 5:找到'status',将获取mysqld进程的命令pidof替换为ps

#mysqld_pid=`pidof $libexecdir/mysqld`

mysqld_pid=`ps --user=mysql -f|grep "$libexecdir/mysqld--defaults-file=$my_cnf"|awk '{print $2}'`

说明:pidof命令用于获取$libexecdir/mysqld的进程号,进而判断MySQL实例的状态,由于路径及名称都是固定的,所以无法区分每个实例对应的进程,导致Status混乱;用ps命令的过滤功能可实现这个需求,针对每个实例找到其对应的进程。

按照同样的方法,为第二个MySQL实例调整服务启动文件。

??启动服务

[root@db mysqla]# service mysqla start

Starting MySQL.. [ OK ]

[root@db mysqla]# service mysqlb start

Starting MySQL.. [ OK ]

至此,我们通过RPM包在一台服务器上安装了两个MySQL实例。

四. 采用mysqld_multi工具实现多实例

mysqld_multi是MySQL自带的一个统一管理多个MySQL实例的服务脚本,它会从MySQL的参数文件中搜索[mysqld#]段序列(#即GNR,可以是任意的正整数),作为自己的参数,以此来区分不同的段,进而控制特定的mysqld进程(MySQL实例)的启动、停止或者获取报告信息。

下面我们采用来了解一下它是如何管理多个MySQL实例的。

1. 配置参数文件

mysqld_multi与安装包类型无关,所以无论是源码包、二进制包,还是RPM包都自带了这个程序脚本,假设MySQL已成功安装。

鉴于mysqld_multi的工作机制,要求MySQL的参数文件中配置[mysqld_multi]项,及多个[mysqld#]段,每个[mysqld]段对应一个MySQL实例,使用不同的端口及unix socket监听文件。

本例配置两个[mysqld#]段,如下:

# vi /etc/my.cnf

[mysqld_multi]

mysqld =/usr/bin/mysqld_safe

mysqladmin = /usr/bin/mysqladmin

[mysqld1]

port = 3306

server-id = 3306

datadir =/data/lib/mysqla

socket =/data/lib/mysqla/mysql.sock

pid-file =/data/lib/mysqla/mysql.pid

character-set-server =utf8

default_storage_engine = InnoDB

log-bin =/data/lib/mysqla/mysql-bin

binlog_format = row

sync-binlog = 1

slow-query-log = on

slow-query-log-file = /data/lib/mysqla/mysql-slow.log

log_error =/data/lib/mysqla/mysql.err

max_connections =2000

back_log =50

skip-external-locking

skip-name-resolve

#skip-networking

key_buffer_size =256M

max_allowed_packet =1M

table_open_cache = 2000

sort_buffer_size =1M

read_buffer_size =1M

read_rnd_buffer_size =4M

myisam_sort_buffer_size = 64M

thread_cache_size =8

query_cache_size =16M

thread_concurrency =8

innodb_data_home_dir = /data/lib/mysqla

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = /data/lib/mysqla

innodb_buffer_pool_size = 256M

innodb_additional_mem_pool_size = 20M

innodb_log_file_size = 64M

innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

innodb_lock_wait_timeout = 50

[mysql2]

port = 3307

server-id = 3307

datadir =/data/lib/mysqlb

socket =/data/lib/mysqlb/mysql.sock

pid-file =/data/lib/mysqlb/mysql.pid

character-set-server =utf8

default_storage_engine = InnoDB

log-bin =/data/lib/mysqlb/mysql-bin

binlog_format = row

sync-binlog = 1

slow-query-log = on

slow-query-log-file = /data/lib/mysqlb/mysql-slow.log

log_error =/data/lib/mysqlb/mysql.err

max_connections =2000

back_log =50

skip-external-locking

skip-name-resolve

#skip-networking

key_buffe

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇解决MySQL出现大量unauthenticate.. 下一篇shell实现,将mysql每个存储过程..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)
·利用Python进行数据 (2025-12-25 15:49:04)
·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)