在单实例MySQl安装的基础上,进行多实例配置


1.停止MySQL服务

# /etc/init.d/mysqld stop
# chkconfig mysqld off
# chkconfig --list mysqld


2.创建多实例目录

# mkdir -p /data/{3306,3307}/data
# tree /data
/data
├── 3306
│   └── data
└── 3307
    └── data

3.初始化数据库

# cd /application/mysql/scripts/
# ./mysql_install_db  --defaults-file=/data/3306/my.cnf --basedir=/application/mysql/ --datadir=/data/3306/data/ --user=mysql
# ./mysql_install_db  --defaults-file=/data/3307/my.cnf --basedir=/application/mysql/ --datadir=/data/3307/data/ --user=mysql

3.多实例配置文件(以2个实例为例,红色部分需要修改为3307,server-id 修改为与第一个实例不同)

# vi /data/3306/my.cnf

[client]

port = 3306

socket = /data/3306/mysql.sock


[mysql]

no-auto-rehash


[mysqld]

user = mysql

port = 3306

socket = /data/3306/mysql.sock

basedir = /application/mysql

datadir = /data/3306/data

open_files_limit = 1024

back_log = 600

max_connections = 800

max_connect_errors = 3000

table_open_cache = 614

external-locking = FALSE

max_allowed_packet =8M

sort_buffer_size = 1M

join_buffer_size = 1M

thread_cache_size = 100

thread_concurrency = 2

query_cache_size = 2M

query_cache_limit = 1M

query_cache_min_res_unit = 2k

thread_stack = 192K

tmp_table_size = 2M

max_heap_table_size = 2M

long_query_time = 1

pid-file = /data/3306/mysql.pid

relay-log = /data/3306/relay-bin

relay-log-info-file = /data/3306/relay-log.info

binlog_cache_size = 1M

max_binlog_cache_size = 1M

max_binlog_size = 2M

expire_logs_days = 7

key_buffer_size = 16M

read_buffer_size = 1M

read_rnd_buffer_size = 1M

bulk_insert_buffer_size = 1M

lower_case_table_names = 1

skip-name-resolve

slave-skip-errors = 1032,1062

replicate-ignore-db=mysql

server-id = 5

innodb_additional_mem_pool_size = 4M

innodb_buffer_pool_size = 32M

innodb_data_file_path = ibdata1:128M:autoextend

innodb_file_io_threads = 4

innodb_thread_concurrency = 8

innodb_flush_log_at_trx_commit = 2

innodb_log_buffer_size = 2M

innodb_log_file_size = 4M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table = 0

[mysqldump]

quick

max_allowed_packet = 2M

[mysqld_safe]

log-error=/data/3306/I1_3306.log

pid-file = /data/3306/mysql.pid


4.启动文件(红色部分修改为3307)

vi /data/3306/mysqld

#!/bin/sh

port=3306

mysql_user="root"

mysql_pwd=""

CmdPath="/application/mysql/bin"

mysql_sock="/data/${port}/mysql.sock"

#startup function

function_start_mysql()

{

  if [ ! -e "$mysql_sock" ];then

    printf "Starting MySQL...\n"

    /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &

  else

    printf "MySQL is running...\n"

    exit

  fi

}

#stop function

function_stop_mysql()

{

  if [ ! -e "$mysql_sock" ];then

     printf "MySQL is stopped...\n"

     exit

  else

     printf "Stoping MySQL...\n"

     ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown

   fi

}

#restart function

function_restart_mysql()

{

  printf "Restarting MySQL...\n"

  function_stop_mysql

  sleep 2

  function_start_mysql

}

case $1 in

start)

  function_start_mysql

;;

stop)

  function_stop_mysql

;;

restart)

  function_restart_mysql

;;

*)

  printf "Usage: /data/${port}/mysql {start|stop|restart}\n"

esac


# chown -R mysql:mysql /data
# chmod +x mysqld


6.启动数据库

# /data/3306/mysqld start


7.登入数据库

# mysql -S /data/3306/mysql.sock