[转帖]MYsql实现主主复制以及单点故障_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1734 | 回复: 0   主题: [转帖]MYsql实现主主复制以及单点故障        下一篇 
刘习托
注册用户
等级:中士
经验:208
发帖:66
精华:0
注册:2011-11-23
状态:离线
发送短消息息给刘习托 加好友    发送短消息息给刘习托 发消息
发表于: IP:您无权察看 2014-12-30 16:10:38 | [全部帖] [楼主帖] 楼主

今天磕磕碰碰的把mysql的主主复制和单点故障搞定了,写下步骤,以及遇到的问题。 

mysql主主复制主要通过mysql较低版本来实现(已确认5.5版本貌似不支持…),于是,我重新下载了mysql-5.1.57-linux-i686-glibc23.tar.gz(124M),然后部署配置mysql,具体部署步骤详见《部署Centos5.4服务器–MySql篇》。

ok,如果你的mysql能正常启动了,现在可以进入mysql主主复制的配置阶段了:

一、mysql主主复制
注意:下述配置需同时在两台服务器上配置,不同的地方已经指出。

1、登陆Mysql,在两台服务器上分别创建mysql授权用户:

mysql> grant replication slave,file on *.* to 'root'@'*' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


这里我用,Navicat向两台服务器的测试同步的test数据库添加了一些信息,等配置完毕可以修改或者删除这些信息看是否实现主主同步。

2、停止mysql,修改两台服务器的mysql配置文件:

log-bin=mysql-bin #必须要开启二进制日志
server-id = 1  #另外一台id改成2
binlog-do-db=test  #填写需要同步的数据库
binlog-ignore-db=mysql  #填写不需要同步的数据库
replicate-do-db=test #填写需要同步的数据库
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1


稍后我会附上我整个my.cnf配置文件下载地址。

3、重启mysql,进入mysql配置主主同步:

mysql> stop slave;
mysql> flush tables with read lock\G
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.00001
Position: 106
Binlog_Do_DB: jsdoc
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
change master to master_host='192.168.1.83',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=106;
###注意这里红色部分,Node2上面运行的应该是Node2-2的信息,反之Node2-2上面运行上述语句,用Node2得出信息(当然File和Postion一样就只需要改改IP了)###
mysql> start slave;
mysql> show processlist\G
###在这里看到回显里面有State: Has sent all binlog to slave; waiting for binlog to be updated,说明主主复制基本OK了。###
mysql> unlock tables;


4、修改test表,测试主主同步是否完成。

如果主主同步没有问题了,就可以进入下一个阶段,通过keepalived实现mysql的单点故障。如果有问题,请仔细查看mysql的错误日志,并自己google下。

二、keelalived实现mysql单点故障
注意:下述配置需同时在两台服务器上配置,不同的地方已经指出。

1、下载keepalived编译安装

wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure
make&&make install


2、配置keepalived

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
      notification_email {
            admin@ajcheng.com
      }
      notification_email_from admin@ajcheng.com
      smtp_server 127.0.0.1
      smtp_connect_timeout 30
      router_id MySQL-ha
}
vrrp_instance VI_1 {
state BACKUP #两台配置此处均是BACKUP
interface eth0
virtual_router_id 61
priority 100 #优先级,另一台改为90
advert_int 1
nopreempt #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
      auth_type PASS
      auth_pass 111
}
virtual_ipaddress {
192.168.1.86
}
}
virtual_server 192.168.1.86 3306 {
      delay_loop 2 #每个2秒检查一次real_server状态
      lb_algo wrr #LVS算法
      lb_kind DR #LVS模式
      persistence_timeout 60 #会话保持时间
      protocol TCP
      real_server 192.168.1.83 3306 {
            weight 3
            notify_down /usr/local/mysql/bin/mysql.sh #检测到服务down后执行的脚本
            TCP_CHECK {
                  connect_timeout 10 #连接超时时间
                  nb_get_retry 3 #重连次数
                  delay_before_retry 3 #重连间隔时间
                  connect_port 3306 #健康检查端口
            }
      }
}
vim /usr/local/mysql/bin/mysql.sh
#!/bin/sh
pkill keepalived
service network restart
chmod -R 777 /usr/local/mysql/bin/mysql.sh
chkconfig keepalived on
service keepalived start
service keepalived stauts
ip add


如果在其中一台机子上看到了VIP 192.168.1.86,且在局域网内能ping通,通过Navicat能过连上,说明ok了!

下面是一些遇到的问题:
1、在两台机子上通过ifconfig命令看不到vip

通过ip add命令查看即可

2、只有其中一台机子有VIP,另外一台没有

因为在keepalived配置文件里面的realserver就写了一台机器,貌似是这样吧?

3、tail -f /var/log/message报如下错误:

May 13 15:06:07 Sql-1 Keepalived_vrrp: ip address associated with VRID not present in received packet : 192.168.1.86
May 13 15:06:07 Sql-1 Keepalived_vrrp: one or more VIP associated with VRID mismatch actual MASTER advert
May 13 15:06:07 Sql-1 Keepalived_vrrp: bogus VRRP packet received on eth0 !!!
May 13 15:06:07 Sql-1 Keepalived_vrrp: VRRP_Instance(VI_1) ignoring received advertisment…


因为virtual_router_id冲突了,之前配置Node1和Node1-1服务器(LVS+keepalived)时,keepalived的配置文件用了这个id,只需要把这个id改成其他的就ok!注意:Node2和Node2-2上,这两个virtual_router_id必须一样。

基本上,结束了,写的估计就自己能看懂吧….汗!

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论