MySQL多实例介绍及配置

在之前的一篇文章中,已经有介绍到怎么安装和配置MySQl了(http://blog.51cto.com/superpcm/2092357)。接下来,MySQL中多实例的配置。

1.什么是MySQL多实例

简单来说,MySQL多实例就是在一台服务器上同时开启多个不同服务端口,同时运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务器端口来提供服务。这些MySQL多实例共用一套MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件,启动程序 (也可以相同)和数据文件。在提供服务时,多实例MySQL在逻辑上看起来是各自独立的,它根据配置文件的对应设定值,获得服务器相应数量的硬件资源。

多实例的好处在于它能有效利用服务器的资源,节约服务器资源,弊端会存在资源的相互抢占的问题。当某个数据库实例并发很高或有SQL慢查询时,整个实例会消耗大量的系统CPU、磁盘I/O等资源,导致服务器上的其他数据库实例提供服务的质量一起下降。不同实例获取的资源是相对独立的,无法像虚拟化一样完全隔离。

2.配置MySQL多实例

MySQL的多实例配置可以是单一文件、单一启动程序的部署方案,但是不推荐,风险太高了。这里部署的是多配置文件,多启动的部署方案。在前面,我们已经搭建了MySQL的服务,也就是存在了一个默认的实例,端口为3306。在这里,我们多增加一个实例,端口为3307.

(1)创建多实例的数据文件目录,目录自己确定就行

mkdir -p /data/3307/data

(2)创建MySQL多实例的配置文件,vim /data/3307/my.cnf,内容如下

[client]
port	= 3307
socket	= /data/3307/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
user	= mysql
port	= 3307
socket	= /data/3307/mysql.sock
basedir	= /usr/local/mysql
datadir	= /data/3307/data
open_files_limit	= 1024
read-only
back_log	= 600
max_connections	= 800
max_connect_errors	= 3000
#table_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
#default_table_type	= InnoDB
thread_stack	= 192K
#transaction_isolation	= READ-COMMITTED
tmp_table_size	= 2M
max_heap_table_size	= 2M
long_query_time	=1 
pid-file	= /data/3307/mysql.pid
relay-log	= /data/3307/relay-bin
relay-log-info-file = /data/3307/relay-log.info
binlog_cache_size	= 1M
max_binlog_cache_size	= 1M
max_binlog_size	= 2M
key_buffer_size	= 16M
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	= 3        #不同实例的server-id不一样的,3306端口的server_id我设置为52了,这里不能是52

#innodb_additional_mem_pool_size	= 4M
innodb_buffer_pool_size	= 32M
innodb_data_file_path	 = ibdata1:128M:autoextend
innodb_file_io_threads	= 4
#innodb_threads_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

[mysql_safe]
log-error=/data/3307/mysql_pcm3307.err
pid-file=/data/3307/mysqld.pid

(3)创建MySQL多实例的启动文件,vim /data/3307/mysql ,内容如下

#!/bin/bash

#init
port=3307
mysql_user="root"
mysql_pwd="pcm123456"
CmdPath="/usr/local/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 "Restart 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.sh {start|stop|restart}\n"
esac

(4)配置MySQL多实例的文件权限

chown -R mysql:mysql /data/
find /data -name mysql.sh |xargs chmod 700    #修改权限为700,因为里面有数据库的密码,要求较高的安全性

(5)初始化MySQL多实例的数据库文件

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/3307/data/ --user=mysql

查看3307目录下data目录,可以看到多出了不少的数据文件

(6)启动MySQL多实例数据库,检查看到3307的端口已经启动

/data/3307/mysql.sh start

PS:一开始我的启动是失败了的,后来把data目录下的ibdata1,ib_logfile0,ib_logfile0这三个文件删除之后才正常启动。应该是因为我之前搭建MySQL服务的时候初始化了一次,再次这样初始化生成的文件和后来的配置不符合。

3.登陆管理MySQL多实例数据库

(1)登陆MySQL数据库

mysql -S /data/3307/mysql.sock        #需要指定sock文件,不然使用默认的3306

(2)上面看到MySQL的root的密码还是空的,我们需要修改。

mysqladmin -u root password 'pcm123456' -S /data/3307/mysql.sock

到这里,MySQL的多实例配置就完成了。如果要远程登陆多实例的MySQL的话,记得加上端口号。

原文地址:http://blog.51cto.com/superpcm/2094744

时间: 2024-10-08 10:54:02

MySQL多实例介绍及配置的相关文章

MySQL多实例介绍与配置

MySQL多实例: 就是在一台机器上开户多个不同的服务端口(如:3306,3307),运行多个 MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来 提供各自的服务. MySQL多实例共用一套MySQL安装程序,使用不同的配置文件.启动程序. 数据文件.在提供服务时,多实例MySQL在逻辑上看来是各自独立的,多个 实例的自身是根据配置文件对应的设定值,来取得服务器的相关硬件资源多少.

MySQL多实例介绍及安装

一.MySQL多实例介绍 (1)什么是MySQL多实例? 简单的说,就是在一台一台机器上开启多个不同的服务端口(如:3306,3307,3308)等,运行多个MySQL服务进程: 这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务. 这些MySQL多实例公用一套MySQL安装程序,使用不同或相同的my.cnf配置文件,启动程序,数据文件.在提供服务时,多实例 MySQL在逻辑上看来试各自独立的多个实例的自身是根据配置文件对应的设定值:来取得服务器的相关硬件资源的多少. 做个比喻

Mysql多实例 安装以及配置

MySQL多实例 1.什么是MySQL多实例 简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306.3307),同时运行多个Mysql服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务. 这些Mysql多实例公用一套Mysql安装程序,使用不同的my.cnf(也可以相同)配置文件,启动程序(也可以相同)和数据文件.在提供服务时,多实例 Mysql在逻辑上看来是各自独立的,它们根据配置文件的对应设定值,获得服务器相应数量的硬件资源. 打个比方,My

MySql多实例介绍与实现

一.什么是mysql多实例 mysql多实例,简单的说,就是在一台服务器上开启多个不同的mysql服务端口(如3306,3307),运行多个mysql服务进程.这些服务进程通过不同的socket监听不同的服务端口,来提供各自的服务. 这些mysql实例共用一套mysql安装程序,使用不同的my.cnf配置文件.启动程序.数据文件.在提供服务时,mysql多实例在逻辑上看来是各自独立的,各个实例之间根据配置文件的设定值,来取得服务器的相关硬件资源. 二.mysql多实例优劣势 优 1.有效的利用服

MySQL主从(介绍,配置主机,配置从机,测试主从同步)

一.介绍及准备工作 1.介绍 MySQL主从配置又叫Replication或者AB复制,简单讲就是A和B两台机器做主从后,在A上写数据,另一台B也会跟着写数据,两台数据实时同步. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 主从过程大致有3个步骤 主将更改操作记录到Binlog里 从将主的Binlog事件(sql语句)同步到从本机上并记录在relaylog里 从根据relaylog里面的sql语句按顺序执行 主上有一个logdump线程,用来和从的i/o线程传递bi

MySQL的主从复制介绍及配置

1.MySQL主从复制介绍 MySQL数据库支持单向.双向.链式级联.环状等不同业务场景的复制.在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(Slave),接收来自主服务器binlog文件的日志内容,解析出SQL,重新更新到从数据库,使得主从服务器的数据达到一致. 如果设置了链式级联复制,那么从服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器,链式级联复制类似A->B->C的复制形式.在这里,只介绍主-&g

MySQL的主从介绍、配置主、配置从、测试主从同步

MySQL的主从介绍 配置主 配置从 测试主从同步 主从配置的常见故障 1.网络原因:查看网络是否正常,SELinux是否关闭,iptables是否关闭2.账号密码不对:粗心大意,用户名与密码输错3.POS值不对:show maste status:4.克隆机器以及复制mysql都会出现UUID的问题,更改UUID即可 原文地址:http://blog.51cto.com/13515599/2095025

Mysql单实例的安装配置指南

实验环境: 操作系统:CentOS 6.8 虚拟机:VMware  数据库:mysql-5.1.62.tar.gz 安装步骤: #wget  http://soft.vpser.net/datebase/mysql/mysql-5.1.62.tar.gz #tar  zxf mysql-5.1.62.tar.gz [[email protected] mysql-5.1.62]#./configure  \ --prefix=/usr/local/mysql \ --with-unix-sock

mysql多实例的介绍与配置

mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307),运行多个服务进程.这些 mysql 服务进程通过不同的 socket来监听不同的数据端口,进而互不干涉的提供各自的服务. 在同一台服务器上,mysql 多实例会去共用一套 mysql 应用程序,因此你在部署 mysql 的时候只需要部署一次 mysql程序即可,无需多次部署.但是,mysql多实例之间会各自使用不同的 my.cnf 配置文件.启动程序和数据文件.在提供服务方面,mysql多实例