这种架构一般用在以下三类场景
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,花了三天时间才算有所成就,发出来希望可以给大伙带来方便
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)