阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

123次阅读
没有评论

共计 5508 个字符,预计需要花费 14 分钟才能阅读完成。

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

1,有效利用服务器的资源
  当单个服务器资源有剩余的时候,可以充分利用剩余的资源以提供更多的服务
2,节约服务器的资源
  当公司资源紧张,但是数据库各自需要独立提供服务,而且需要主从同步等技术时候,此时使用多实例是最好的。
3,资源互相抢占的问题
  当某个服务实例并发很高或者有慢查询的时候,整个实例会消耗更多的 CPU,内存,磁盘 IO 资源,导致服务器上其他的实例提供的服务质量大大下降,相当于一个大房子,多个卧室,大家共用一个卫生间,早餐起床,一个人上厕所,长期占用,其他人要等待一样的道理。

二、Mysql 多实例的应用场景

1, 资源紧张型的公司
  业务量不大,不想花钱,又有多需求,所以特别适合多实例
2,并发访问不是特别大的网站
  当公司业务量不大的适合,服务器资源没有充分利用,有浪费的时候,就可以使用多实例
3,百度搜索引擎就使用了多实例,sina 网也使用了多实例
  目的,节约 IDC 空间,资源充分利用

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

三、MySQL 多实例的配置方案
  方案一:如下图  推荐使用此

  这种方式的优势逻辑简单,配置简单,耦合度低
  缺点是管理起来不太方便。

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=\\u@\\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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132129.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5508字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中