快速业务通道

mysql的主从构架,复制,半同步,SSL加密复制的实现

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-27

mysql主从构架及复制的实现

在企业应用中,mysql经常采用主从构架,或者主主架构,这样可以实现mysql服务器的负载均衡,提升mysql服务器的性能.而关键是,可以实现mysql的数据同步复制功能,来为企业数据备份提供一种方便的机制.

一.了解下mysql的复制功能:

1)支持一主多从的机制,数据通过同步从主服务器复制都从服务器里

2)支持多级结构,主从 从从 主主(互为主从)

3)支持过滤的功能(可以只复制主服务的部分数据而非全部)

二.关于主从构架的mysql,为了数据的一致性,修改数据只能在主服务器上执行,我们来了解一下它的复制类型

1)基于语句的复制:把在主服务上执行的语句,在从服务器上在执行一次.

这种方式有缺陷,如果是像updata t1 SET SALRIS=SALARIS 1000,那么对每个需要更改的数据执行1000次,而不是基于行,大量浪费了系统资源.

2)基于行的复制Row:改变以后的内容复制过去,而不是重新执行一遍.

update t1 SET SALARIS=SALARIS 1000

3)混合类型复制:语句 行

优先使用语句复制,如果语句复制的内容和数据精确,启用行复制

但是想象一下,这种构架的复制单主服务器如果写的操作比较多,可能会成为系统瓶颈.而从服务器过多也会造成存储空间的浪费.这种构架只能为读操作提供优化,对数据的写入,只能依赖主服务器.

复制的主要功用:

1)实现数据的分布式存储(Data distribution),但这种分布是指主从服务器都提供同样的数据.

2)实现数据的负载均衡(主要指读,写需要别的机制实现),主要通过LVS集群或者mysql-proxy来实现.

3)备份(backup) 在从服务器上发出复制请求,主服务器将数据传输给从服务器后,进行热备或者温备,或者当需要备份的时候将服务停下来,进行冷备.

Empire CMS,phome.net

4)提供高可用和及其故障转移功能: 确保服务不会断掉.

5)测试mysql的升级:将主服务上数据备份到从服务器,从服务升级如果可以使用,升级为主服务(如果性能较差,只是临时替代).

三.主要注意的地方:

1)mysql复制过程在网络上传输时是明文的,不过支持SSL加密.

2)mysql复制要求主从架构的服务器的server id 不能相同.

=============================分 割 线============================

下面我们来实现主从构架的mysql服务器及复制过程,需要准备两台虚拟机,一台做主mysql,一台做从mysql,如下图:

1)设置一个服务器成为主服务器

#主服务器一定要设置成静态地址

#5.5以下版本要将默认引擎设置为innodb,设置方法:在/etc/my.cf里添加default-engine=innodb ,再重启服务,安装过程不再累赘,笔者采用二进制包的mysql5.5

(1)配置好IP,

  1. ifconfig eth0 172.16.14.11
  2. vim /etc/sysconfig/network-scripts/ifcfg-eth0
  3. DEVICE=eth0
  4. BOOTPROTO=static
  5. ONBOOT=yes
  6. HWADDR=00:0c:29:f5:6d:47
  7. IPADDR=172.16.14.11
  8. NETMASK=255.255.0.0
  9. GATEWAY=172.16.0.1

(2)修改配置文件,使它成为主服务器

Empire CMS,phome.net

vim /etc/my.cnf

# 添加或修改如下行

# 如果是5.0版本须添加:default-engine=innodb

log-bin=mysql-bin

log-bin-index=mysql-bin.index

binlog_format=mixd

server_id=1

service mysql restart

(3)创建用户,授予权限

mysql

mysql>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO repl@''172.16.%.%'' IDENTIFIED BY ''redhat'';

#REPLICATION CLIENT:用户有权询问附属者/控制者在哪里. REPLICATION SLAVE:回复附属者所需.

FLUSH PRIVILEGES;

2 )设置一个服务器成为从服务器

  1. vim /etc/my.cnf
  2. # 从服务器不需要二进制日志,只需要启动中继日志
  3. 注释掉log-bin 和 binlog_format
  4. relay-log=relay-bin # 从服务器需要开启中继日志
  5. relay-log-index=relay-bin.index
  6. server-id = 11 # id=1是主服务器,其余表示从服务器
  7. service mysqd start
  8. mysql
  9. # 查看relay相关的变量设置,几server_id的值
  10. mysql> SHOW VARIABLES LIKE ''relay%''
  11. Empire CMS,phome.net
  12. mysql> SHOW VARIABLES LIKE ''server_id'';
  13. # 设置连接账号和密码,(可以设置使用SSL等)
  14. mysql> CHANGE MASTER TO MASTER_HOST=''172.16.14.11'',
  15. mysql> MASTER_USER=''repl'', # 注意是逗号
  16. mysql> MASTER_PASSWORD=''redhat''
  17. # 查看下从服务的状态,是否开启
  18. mysql> SHOW SLAVE STATUS\G
  19. # 开启从服务器
  20. mysql> START SLAVE
  21. # 过一会,再使用SHOW命令查看状态.
  22. mysql> SHOW SLAVE STATUS\G
  23. # 如果错误,查看错误日志
  24. mysql> SHOW VARIABLES LIKE ''%erro%''
  25. vim /etc/my.cnf
  26. slave_skip_erros=ON

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号