mysql 多实例应用配置部署指南

一,Mysql 多实例的作用的问题


1,有效利用服务器的资源

当单个服务器资源有剩余的时候,可以充分利用剩余的资源以提供更多的服务

2,节约服务器的资源

当公司资源紧张,但是数据库各自需要独立提供服务,而且需要主从同步等技术时候,此时使用多实例是最好的。

3,资源互相抢占的问题

当某个服务实例并发很高或者有慢查询的时候,整个实例会消耗更多的CPU,内存,磁盘IO资源,导致服务器上其他的实例提供的服务质量大大下降,相当于一个大房子,多个卧室,大家共用一个卫生间,早餐起床,一个人上厕所,长期占用,其他人要等待一样的道理。

二、Mysql 多实例的应用场景

1,资源紧张型的公司

业务量不大,不想花钱,又有多需求,所以特别适合多实例

2,并发访问不是特别大的网站

当公司业务量不大的适合,服务器资源没有充分利用,有浪费的时候,就可以使用多实例

3,百度搜索引擎就使用了多实例  ,sina 网也使用了多实例

目的,节约IDC空间,资源充分利用

sina的配置 SATA 15000转  4块做raid5  48G内存

三、MySQL多实例的配置方案

方案一:如下图  推荐使用此

这种方式的优势逻辑简单,配置简单,耦合度低

缺点是管理起来不太方便。

方案二:单一的部署方案   不推荐,耦合性太高

[mysqld_muti]

即一个配置文件 启动多个实例

四、开始配置MySQL多实例

环境介绍:

mysql 版本:5.6.27

操作系统:Centos 6.5

mysql实例数:2个

实例占用端口分别为:3306、3307

先配置方案一:

1.下载:在http://dev.mysql.com/downloads/mysql/官网上下载

2.解压

tar xvf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz

3.移动到/usr/local/mysql

mv mysql-5.6.27-linux-glibc2.5-x86_64 mysql

4.安装依赖的lib包:

centos:yum install  libaio -y

5、配置用户,目录

shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .

6、使用/data/目录作为MySQL多实例的总目录

 mkdir -p /data/{3306,3307}/data

7、开始配置多实例的配置文件

vim  /data/3306/my.cnf

[mysqld] 
 #general
 basedir = /usr/local/mysql
 datadir = /data/3306/data
 socket = /data/3306/mysql.sock
 user = mysql
 port = 3306
 server_id = 1
 log-error = /data/3306/err.log
 pid = /data/3306/mysql.pid
 #binlog 
 log-bin  = /data/3306/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3306/mysql.sock
 port = 3306
vim  /data/3307/my.cnf

[mysqld] 
 #general
 basedir = /usr/local/mysql
 datadir = /data/3307/data
 socket = /data/3307/mysql.sock
 user = mysql
 port = 3307
 server_id = 1
 log-error = /data/3307/err.log
 pid = /data/3307/mysql.pid
 #binlog 
 log-bin  = /data/3307/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3307/mysql.sock
 port = 3307

8、创建多实例的启动文件 。

放到/data/3306  | /data/3307 下

脚本省略(mysqld)

多实例启动文件的启动MySQL服务实质:

mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

多实例启动文件的停止MySQL服务实质:

 mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown
 mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown  平滑停止

9,授权MySQL用户,和组管理整个多实例目录

 chown -R mysql.mysql /data

10,配置MySQL全局环境变量

 echo "export PATH=$PATH:/usr/local/mysql/bin/"  >> /etc/profile
 source  /etc/profile

11,开始初始化数据库

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

什么初始化数据库?

a,初始化的主要目的就是创建基础的数据库文件,例如生成MySQL的库表

b,初始化后,产看目录,可以看到一些表文件

12,启动| 停止 MySQL服务

如果有脚本,则使用脚本启动

/data/3306/mysql  start 
/data/3307/mysql  start

如果没有脚本,则使用一下启动

mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 >/dev/null &

如果没有脚本,则使用一下启动停止

mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown

mysqladmin -u root -p passwd -S /data/3306/mysql.sock shutdown  平滑停止|

13,检查

登陆:

mysql -S /data/3306/mysql.sock

管理的话,在本地都是采用 -S /data/3306/mysql.sock,如果在远程可以通过不同的端口连接上去坐管理操作。其他的和单实例的管理没什么区别!

#######################################################################################

再来看第二种通过官方自带的mysqld_multi来实现多实例实战:

这里的mysql安装以及数据库的初始化和前面的步骤一样,就不再赘述。

mysqld_multi的配置

vim /etc/my.cnf

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = admin
password = password
[mysqld1] 
 #general
 basedir = /usr/local/mysql/
 datadir = /data/3306/data/
 socket = /data/3306/mysql.sock
 user = mysql
 port = 3306
 server_id = 1
 log-error = /data/3306/
 pid = /data/3306/
 #binlog 
 log-bin  = /data/3306/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3306/mysql.sock
 port = 3306
[mysqld2]
 #general
 basedir = /usr/local/mysql/
 datadir = /data/3307/data/
 socket = /data/3307/mysql.sock
 user = mysql
 port = 3307
 server_id = 2
 log-error = /data/3307/
 pid = /data/3307/
 #binlog 
 log-bin  = /data/3307/mysql-bin
 sync-binlog = 1
 #InnoDB
 innodb_flush_log_at_trx_commit
 innodb_support_xa = 1                     
 #other
 character_set_server = utf8
 default_storage_engine =InnoDB
 ft_min_word_len = 1
 open_files_limit = 65535
 auto-increment-increment = 10
 auto-increment-offset = 1 
 log_slave_updates=1          允许备库将其重放的事件也记录到自身的二进制日志中
 read_only=0                阻止任何没有特权权限的线程修改数据
 skip_slave_start 
[client]
 socket = /data/3307/mysql.sock
 port = 3307
[mysql]
no-auto-rehash
prompt=\\[email protected]\\d \\R:\\m>
[mysqld_safe]
open-files-limit = 8192

mysqld_multi启动

/usr/local/mysql/bin/mysqld_multi start 1
/usr/local/mysql/bin/mysqld_multi start 2
 

停止MySQL实例
mysqladmin -uroot -p -S /data/3306/mysql.sock shutdown
mysqladmin -uroot -p -S /data/3307/mysql.sock shutdown

更改原来密码
mysqladmin -uroot password ‘123456‘ -S /data/3306/mysql.sock
mysqladmin -uroot password ‘123456‘ -S /data/3307/mysql.sock

测试登陆

mysql -uroot -p -S /data/3306/mysql.sock 
mysql -uroot -p -S /data/3307/mysql.sock
时间: 2024-12-14 17:25:19

mysql 多实例应用配置部署指南的相关文章

MySQL多实例安装配置

MySQL多实例安装配置 一.基本概念 MySQL多实例就是,在一台机器上开启多个不同的服务端口(如:3306,3307,3308...),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的端口提供服务. MySQL可以共用一套安全程序,使用不同的my.cnf配置文件,启动程序,数据文件. 逻辑上是独立的,但是一个实例过载过高的时候会对其他造成影响. MySQL多实例的作用与问题: 1.有效利用服务器资源 2.节约服务器资源 3.资源互相抢占问题 当某个服务实现并发生很高的

Project Server 2003配置部署指南_百度文库

Project Server 2003配置部署指南_百度文库 Project server 2003配置部署指南 - 网管地带 - IT博客

mysql单实例安装配置指南

1.操作系统:CentOS 2.数据库: mysql-5.1.73.tar.gz 3.任务:单实例安装配置指南 提示:下载数据库有两种方式:一种是官网,另一种途径是国内镜象网站:国内镜象下载资源的速度比官网要快,例如,我们这次下载的就是国内搜狐镜象: http://mirrors.sohu.com/mysql/MySQL-5.1/ http://mirrors.sohu.com/ 整个安装过程: [[email protected] tools]#wget http://mirrors.sohu

mysql多实例的配置

1.创建多实例的目录: mkdir -p /data/mysql/mysql_3307/{data,tmp,logs} mkdir -p /data/mysql/mysql_3308/{data,tmp,logs} 2.修改my.cnf的配置文件 vi /data/mysql/mysql_3306/my3306.cnf #my.cnf [client] port            = 3306 socket          = /data/mysql/mysql_3306/tmp/mysq

Amazon EC2安装mysql多实例并配置主从复制

1.MySQL安装: EC2直接使用yum安装mysql非常方便: yum install mysql mysql-server mysql-libs 此处安装了三个包 完事之后能够直接使用 service mysqld start 启动mysql服务 改动root密码: mysqladmin -u root -p password "root" 2.使用mysqld_multi安装多实例mysql: vim /etc/my.cnf 加入实例的配置信息 [mysqld] datadir

Mysql 多实例详细配置教程

8.14 Mysql 多实例 什么是多实例?就是一台机器上开启多个不同的服务端口,运行多个mysql服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务这些mysql实例共用一套mysql安装程序,使用不同(也可以相同)的my.cnf配置文,启动程序,数据库文件,在提供服务时,多实例mysql在逻辑上看来是各自独立, 优缺点:节约服务器资源并发高或慢查询时,整个实例消耗更多的系统资源,影响其它实例 8.14.1 配置mysql 建立数据目录mkdir -p /usr/l

MySQL多实例介绍及安装

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

linux运维、架构之路-MySQL多实例

一.MySQL多实例介绍            一台服务器上开启多个不同的服务端口(3306,33307,3308),运行多个MySQL服务进程,共用一套MySQL安装程序,多实例MySQL在逻辑上看是各自独立的 1.多实例主从复制原理图 2.优点 ①有效利用服务器资源②节约服务器资源③资源互相抢占问题,其中一个实例并发很高或者慢查询,其它实例也受影响 3.应用场景 ①公司资金紧缺②并发访问不是特别大的业务③门户网站应用MySQL多实例场景,一般是从库 4.MySQL多实例常见配置方案 ①多配置

2018-03-24 mysql多实例安装学习笔记

2018-03-24 MySQL多实例介绍 什么是mysql多实例 一台机器上开启多个不同的服务端口(如:3306,3307),运行多个mysql服务进程,这些服务进程通过不同的socket舰艇不同的服务端口来提供各自的服务. 这些mysql多实例共用一套MySQL安装程序,使用不同或相同的my.cnf配置文件.启动程序,数据文件. mysql多实例的作用与问题: 有效利用服务器资源 节约服务器资源,需要主从同步等技术时,多实例再好不过了. 资源互相抢占问题 当某个服务实例并发很高或者有慢查询时