博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 多实例应用配置部署指南
阅读量:5990 次
发布时间:2019-06-20

本文共 6887 字,大约阅读时间需要 22 分钟。

一,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.解压

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

 

3.移动到/usr/local/mysql

 

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

4.安装依赖的lib包:

1
centos:yum 
install  
libaio -y

5、配置用户,目录

1
2
3
4
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多实例的总目录

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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服务实质:

 

   

1
2
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服务实质:

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

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

1
 
chown 
-R mysql.mysql 
/data

10,配置MySQL全局环境变量

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

11,开始初始化数据库

 

1
2
3
 
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服务

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

1
2
/data/3306/mysql  
start 
/data/3307/mysql  
start

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

1
mysqld_safe 
--defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
1
2
3
4
5
6
7
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的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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启动

1
2
3
4
5
6
7
8
9
10
11
/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

测试登陆

1
2
mysql -uroot -p -S /data/3306/mysql.sock 
mysql -uroot -p -S /data/3307/mysql.sock

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

多实例MySQL忘记密码,修改密码的方法:

1,停掉原有实例进程 

1
mysqladmin -uroot -p -S /data/3306/mysql.sock shutdown

2,加参数登录MySQL,此时跳过密码验证

1
mysqld_safe  
--defaults-file=/data/3306/my.cnf  --skip-grant-tables  &

3,登录,并修改密码 

 

1
mysql -uroot -p -S /data/3306/mysql.sock   登录时空密码

 修改密码:

1
2
update 
mysql.
user 
set 
passowrd=
password
(
"123456"
where 
user
=
'root'
;
flush 
privileges
;

4,重启MySQL,使用新密码登录

 

1
2
mysqladmin -uroot -p -S /data/330/mysql.sock shutdown
mysqld_safe 
--defaults-file=/data/3306/my.cnf 2>&1 >/dev/null &
      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1787516,如需转载请自行联系原作者
你可能感兴趣的文章
关于Js OOP编程 创建对象的一些理解。
查看>>
vsftp配置参数
查看>>
CentOS 6.7安装HBase 0.98.23
查看>>
JS怎么创建一个类?
查看>>
BZOJ 3668 [NOI2014]起床困难综合症
查看>>
采用OleDB读取EXCEL文件 读取数字后,字符串无法读取
查看>>
HDU 4371 Alice and Bob
查看>>
array_filter函数
查看>>
数字int字符串str(深入学习)
查看>>
软测第一次lab 实验报告
查看>>
HDU 3966 & POJ 3237 & HYSBZ 2243 & HRBUST 2064 树链剖分
查看>>
Cashier Employment(poj1275
查看>>
mysql查找以逗号分隔的值-find_in_set
查看>>
PHP 面试知识点整理归纳
查看>>
HTTP真的很简单
查看>>
SQL 关键词
查看>>
mysql GTID主从复制(主库在线,添加新丛库)
查看>>
[JVM-1]Java运行时数据区域
查看>>
bzoj 2818: Gcd
查看>>
windows 下载 scrapy
查看>>