如何在同一台机器上安装多个MySQL的实例

如何在同一台机器上安装多个MySQL的实例,第1张

这种架构一般用在以下三类场景

1. 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的 *** 作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。

2. 用来聚合前端多个 Server 的分片数据。

同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。

3. 汇总并合并多个 Server 的数据

第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?

mysql的多实例有两种方式可以实现,两种方式各有利弊。第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理。

1、从MYSQL官方下载MYSQL的源码版本【一定要是源码版本】

2、按以下代码键入LINUX命令行

复制代码

代码如下:

[注]

添加mysql组和用户

#groupadd

mysql

#useradd

-g

mysql

mysql

[注]

解包到/usr/local

#

tar

-xzf

mysql-standard-4.1.9-pc-linux-gnu-i686.tar.gz

-C

/usr/local

[注]

建立软链接,方便 *** 作(此处给此连接命名为mysql001,也可为其它的名字)

#cd

/usr/local

#ln

-s

mysql-standard-5.0.15-linux-i686-glibc23

mysql001

#cd

mysql001

#scripts/mysql_install_db

#chown

-R

root

.

#chown

-R

mysql

data

#chgrp

-R

mysql

.

[注]

复制data,以供单版本多实例分配

#cp

-a

data

data_1

#cp

-a

data

data_2

[注]

添加多实例配置文件

#cd

/usr/local/mysql001/bin

#cat

>my_multi.cnf

[注]

以下是my_multi.cnf的配置信息,可依此复制

[mysqld_multi]

mysqld

=

/usr/local/mysql001/bin/mysqld_safe

mysqladmin

=

/usr/local/mysql001/bin/mysqladmin

user

=

root

password

=

root

[mysqld1]

socket

=

/tmp/mysql_001.sock

port

=

3301

pid-file

=

/usr/local/mysql001/data_1/hostname.pid

datadir

=

/usr/local/mysql001/data_1

log

=

/usr/local/mysql001/data_1/hostname.log

user

=

mysql

#

slave

setting

server-id

=

2

master-host

=

192.168.1.85

master-port

=

3306

master-user

=

backup

master-password

=

123456

replicate-do-db

=

gs_database

replicate-do-db

=

gs_log

master-connect-retry=30

[mysqld2]

socket

=

/tmp/mysql_5_2.sock

port

=

3302

pid-file

=

/usr/local/mysql001/data_2/hostname.pid

datadir

=

/usr/local/mysql001/data_2

log

=

/usr/local/mysql001/data_2/hostname.log

user

=

mysql

#

slave

setting

server-id

=

3

master-host

=

192.168.1.69

master-port

=

3306

master-user

=

backup

master-password

=

123

replicate-do-db

=

gs_databaes

replicate-do-db

=

gs_log

master-connect-retry=30

CTRL+D退出。

复制代码

代码如下:

#vi

/etc/profile

#

添加系统环境变量。

export

MYSQL_HOME=/usr/local/mysql001/bin

export

PATH=$PATH:$MYSQL_HOME

重启系统让环境变量生效。

添加至开机自动启动【此处可不添加,依个人情况决定是否需要设置开机自动启动】

复制代码

代码如下:

vi

/etc/rc.local

#

添加

mysqld_multi

--defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf

start

1,2

3、其它一些技巧

#

访问某个实例:

mysql

-u

root

-S

/tmp/mysql_5_1.sock

-p

#

设置各个实例密码:

mysqladmin

-u

root

password

'root'

-S

/tmp/mysql_5_1.sock

#

手动启动各个实例:

mysqld_multi

--defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf

start

1,2

#

停止各个实例:

mysqld_multi

--defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf

stop

1,2

#

参考文章

http://blog.liuts.com/post/13/

由于第一次接触LINUX,花了三天时间才算有所成就,发出来希望可以给大伙带来方便


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5901666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存