您的位置:首页 > 数据库 > MySQL

mysql双主同步实战

2016-12-16 15:40 232 查看
由于公司业务需求,需要搭建认证服务器完成客户登录我们系统的功能,考虑到认证服务器的重要性,故采用两台服务器对客户进行认证,但是考虑到两台认证服务器的数据需要同步,而人工的数据同步也不切实际,由于我们公司使用的是Mysql数据库,而mysql 又很好的提供了同步功能,现将mysql 数据库同步的实践分享给大家。

一、环境介绍

MYSQL-A-IP: 172.17.100.201

MYSQL-B-IP: 172.17.100.202 

数据库实例 :  otpdb

        默认情况下两台机器的iptables 没有开,如果开启的话,需要开启对应端口

二、修改mysql 配置文件

MYSQL-A:  添加如下内容:

server-id       = 1   

log-bin         =mysql-bin

binlog-do-db    =otpdb    /需要同步的数据库实例名

   binlog-ignore-db=mysql   /不需要同步的实例名

binlog-ignore-db=information_shcema

auto-increment-increment=10

auto-increment-offset=1

skip-name-resolve

replicate-ignore-db=mysql

replicate-ignore-db=information_schema

relay_log=mysql-relay-bin

log-slave-updates=on

MYSQL-B: 添加如下内容:

server-id       = 2   /此处必须与A机器不同  

log-bin         =mysql-bin

replicate-do-db =otpdb

replicate-do-db =otpdb

replicate-ignore-db=mysql

replicate-ignore-db=information_shcema

auto-increment-increment=10

auto-increment-offset=2   /此处必须与A机器不同

skip-name-resolve

binlog-ignore-db=mysql

binlog-ignore-db=information_shcema

relay_log=mysqld-relay-bin

log-slave-updates=on

修改完成后,重启mysql 数据库。

三、设置同步:

    登录数据库:  mysql -u root -p 

创建同步用户:分别在A机器和B机器执行同样的命令

GRANTreplication slave on *.* TO ‘tongbu”@’172.31.17.182’ IDENTIFIED BY ‘123’;
Flushprivileges;
设置同步初始信息:

A机器:

Change master to master_host=‘172.17.100.202’,(该ip地址为对方的ip,注意不要写成自己的ip地址)

master_user=‘tongbu’,

master_password=‘123’,

master_log_file=‘mysql-bin.000008’,  (该值通过show master status \G;  查询,注意此处查询实在另一台机器上查询)

master_log_pos=487;   (该值通过show master status \G;  查询,注意此处查询实在另一台机器上查询)

      
B机器:

Change master to master_host=‘172.17.100.201’,(该ip地址为对方的ip,注意不要写成自己的ip地址)

master_user=‘tongbu’,

master_password=‘123’,

master_log_file=‘mysql-bin.000001’,  (该值通过show master status \G;  查询,注意此处查询实在另一台机器上查询)

master_log_pos=354;   (该值通过show master status \G;  查询,注意此处查询实在另一台机器上查询)

        修改完成配置后,需要重启数据库;

四、插入验证

在A机器插入一张表BBB,命令参考:Create table BBB(number int(10),name varchar(255));

show tables;  

同样的到B机器: show tables; 可以看到也自动添加了表BBB,

在B机器上删除表BBB,命令参考:delete table bbb;

同样的A机器上的表BBB也被自动删除。

至此,mysql 同步的部分就已经完成了!

但是,到此还没有完成我们的需求,由于认证服务器添加数据的ip地址只有一个,所以在A机器挂掉以后,并不会自动去连接B服务器,所以此时我们就需要用到keepalived 技术了,而keepalived实现的功能就是虚拟出一个新的ip的,比如我此处用的是172.17.100.203,当我们连接该ip地址的时候,系统默认的会去连接172.17.100.201机器,但是当172.17.100.201这台机器挂掉之后,系统就会连接到172.17.100.202上,这样就能够很好的完成我们的需求了。

五、keepalived配置

   下载安装keepalived ,安装之前需要安装一些依赖的包: prce-devel openssl-devel  popt-devel  ,安装的过程省略。

配置keepalived:

A 机器:
vi /etc/keepalived:

vrrp_instance VI_1 {  

    state MASTER   #指定A节点为主节点 备用节点上设置为BACKUP即可  

    interface eth0   #绑定虚拟IP的网络接口  

    virtual_router_id 51  #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组  

    priority 100   #主节点的优先级(1-254之间),备用节点必须比主节点优先级低  

    advert_int 1   #组播信息发送间隔,两个节点设置必须一样  

    authentication {   #设置验证信息,两个节点必须一致  

      auth_type PASS  

        auth_pass 1111  

    }  

    virtual_ipaddress {   #指定虚拟IP, 两个节点设置必须一样  

        172.17.100.203/24  

        172.17.100.201 /24  

        172.17.100.202 /24  

    }  

}   

B机器:

vrrp_instance VI_1 {  
    state BACKUP   #指定A节点为主节点 备用节点上设置为BACKUP即可  

    i nterface eth0   #绑定虚拟IP的网络接口  

    virtual_router_id 51  #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组  

    priority 50  #主节点的优先级(1-254之间),备用节点必须比主节点优先级低  

    advert_int 1   #组播信息发送间隔,两个节点设置必须一样  

    authentication {   #设置验证信息,两个节点必须一致  

        auth_type PASS  

        auth_pass 1111  

    }  

    virtual_ipaddress {   #指定虚拟IP, 两个节点设置必须一样  

        172.17.100.203/24  

        172.17.100.202//24  

        172.17.100.201 /24  

    }  
}   

配置完成后重启keepalived服务器即可,至此双击热备的需求就实现了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: