mysql数据库的主、从复制是比较简单的,但是也是mysql数据库高可用性的一个基础,我的理解是所有mysql的高可用都是从这主、从简单复制演变而来。写这篇博客是因为最近有位同事和我说他做mysql ha实验,使用的是keepalived+mysql主、从架构,使我疑惑了,与他一起再次复习mysql ha的高可用架构,知道这样的架构并不理想。
我的理解是主、从复制存在时间差的,数据库一致性得不到保证,即使是使用shell 进行监控从数据库的复制性那也是需要时间的,一个简单的例子当master down时从还没复制完全或没有复制,在实际的生产环境中就存在大问题了。而主、主复制的架构,就很好的解决了数据库一致性问题,是可以使用keepalived来实现。
主、从复制的架构毕竟还是为了数据库的备份,虽然是热备的一种但是不能让他去做高冗余吧,其实这种架构我还是很欣赏的,还有一个好处可以读、写分离来提高数据库的I/O性能,我虽然建立的电子商务平台不多,但基本上上线的还是这个架构为主。这种架构在master出现故障后,还是要靠手工去切换,不存在裂脑问题,同时毕竟牵扯到数据库,稳妥点比较好,电子商务中数据库的事都是大事。
另一种架构我是非常欣赏并使用过主、主的自动切换架构,即解决了单点故障问题,还可以自动切换(一定要设置切换时报警,还是要上线看的),同时还互为备份。在参看了煮酒抚琴兄的一篇mysql数据库优化(下)后,给我的启发是如果数据库的投入充裕的话,还可以主主、从的架构,虽然没有直接应用过,但从理论上应该是中底端mysql数据库应用最稳定的吧,有机会的话应用下,这架构下再加上负载均衡应该问题不大。有时间的话,一定要做这个测试来看看效果。
mysql+lvs+cluster+keepalived的负载均衡、HA架构也应用过,但效果不是很理想,并且那个成本实在有点高,后期维护也是个问题,后面会把这个架构我实施的步骤和配置列出来,给感兴趣的朋友一起研究。
我认为无论是那种高可用的mysql架构,至少做到本地和异地双备份。
主、从复制就简单多了,大家都知道主、从复制的原理就是以下三步:
(1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2)slave将master的binary log events拷贝到它的中继日志(relay log);
(3)slave重做中继日志中的事件,将改变反映它自己的数据。
这里提醒下大家,只需要将master二进制的日志打开即可,从的不需要,这点往往是很多人忽视的,数据引擎我一般是用的InnoDB。
实验环境:centos 6.4 mysql-server-5.1.73-3.el6_5.x86_64。
一、开启Master的二进制日志
开启mysql的binlog日志
vi/etc/my.cnf mysqld中加入
server-id=1
log-bin = mysql-bin
binlog-do-db=falvhezi2 (需要同步的库)
binlog-ignore-db=mysql (不需要同步的)
binlog-ignore-db=test (不需要同步的)
重启mysqld,成功后进入mysql查看是否开启日志。
mysql -uroot -p
上图可以看到log_bin已打开。
如果出现下图,那就是出现错误,需重新检查my.cnf的配置
log_bin打开后,输入show master status;查看并记录
二、授权master同步的用户
grant all on *.* to share@192.168.1.163 identified by "admin888";
设置mysql用来同步的用户名,指定从服务器IP及密码。
别忘记flush privileges;
三、配置slaver
先测试下share用户能否登录到master上。
查看下 slaver的状态 ,确定master_log_file和主数据库的对应,并且Slave_IO_Running和Slave_SQL_Running是yes状态,说明成功在即。
start slave;
成功了。
有两点问题要注意:
Slave_IO_Running: NO
如果此项为NO多为连接性问题
1、 两个服务器系统之间网络连接问题
2、 数据库用户权限问题
Slave_SQL_Running: NO
数据库二进制文件权限不对
转载于:https://blog.51cto.com/hostslinux/1404490