0

0

MySQL之双向主从加keepalived高可用

php中文网

php中文网

发布时间:2016-06-07 14:56:04

|

1295人浏览过

|

来源于php中文网

原创

最近在做MySQL数据库的双向主从,了解到keepalived能够自动判断并切换到可用数据库,自己试了一下,整理出文档来。 先声明一下环境 iptables开启3306端口或者关掉,关闭selinux MySQL-01:192.168.204.138 MySQL-02:192.168.204.139 VIP:192.168.204.200#w

        最近在做mysql数据库的双向主从,了解到keepalived能够自动判断并切换到可用数据库,自己试了一下,整理出文档来。

        先声明一下环境

        iptables开启3306端口或者关掉,关闭selinux

        MySQL-01:192.168.204.138

        MySQL-02:192.168.204.139

        VIP:192.168.204.200             #web服务器连接的ip,自己可以使用工具连接试一下。

        MySQL的安装过程就略过了,根据个人情况自己安装即可。


1.修改数据库的配置文件/etc/my.cnf:

        1.1修改MySQL-01的数据库文件,在[mysql]下添加如下内容

server_id = 1
log_bin = mysql-bin

   1.2修改MySQL-02的数据库文件,在[mysql]下添加如下内容

server_id = 2
log_bin = mysql-bin

2.搭建单向主从

        2.1在MySQL-01上

        2.1.1操作授权 

mysql -u root -p            #输入密码
mysql> grant replication slave on *.* to 'slave'@'192.168.204.139' identified by '123456';
mysql> flush privileges;

   2.1.2数据传递给MySQL-02

mysql -u root -p            #输入密码
flush tables with read lock;        #锁表操作
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000012 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysqldump -u root -p --all-databases > mysqldump.sql
mysql -u root -p
mysql> unlock tables;
mysql> quit
    
scp myqsldump.sql 192.168.204.139:/root/

   2.2在MySQL-02上操作

        2.2.1恢复数据库数据      

mysql -u root -p < mysqldump.sql

   2.2.2建立主从同步       

mysql -u root -p
mysql> change master to master_host='192.168.204.138',master_user='slave',master_password='123456',master_log_file='mysql-bin.000012',master_log_pos=120,master_port=3306;
start slave;

   检查是否成功      

show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

          都为Yes表示同步成功。

          注:master_port=3306,默认时不需要加,但是修改过端口的则需要该选项

3.搭建互为主从

        3.1在MySQl-01上操作

        3.1.1用户授权      

mysql -u root -p123456
mysql> grant replication slave on *.* to 'slave'@'192.168.204.138' identified by '123456'; //建立权限
mysql> flush privileges;

   注:因为做的是所有库的主从,所以在MySQL-01上的操作会同步到MySQL-02上

        注2:假如你是线上环境,主库在不断的写数据,建议锁一下表,最好找个夜深人静的时候做吧

        3.2在MySQL-02上的操作

mysql -u root -p
mysql> show master status\G;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000009 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

   3.1.2在MySQL-01上操作授权

mysql> change master to master_host='192.168.204.138',master_user='slave',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=120;
mysql> start slave;

        检查是否成功

show slave status\G;


ShopNC网上商店单用户版
ShopNC网上商店单用户版

ShopNC单用户商城系统是面向独立卖家而开发的B2C商城系统。系统运行稳定高效,功能强大,突出个性化配置要求,可以根据不同的营销策略,从模板、栏目、功能上进行调整,满足各类客户的需要。系统部署快捷方便,减轻了使用者的技术负担,简单的维护操作免去了用户的后顾之忧。本系统前台开放源码,后台加密的。产品特点快速安装,维护简单 分布提示安装,即使不熟悉技术的用户也可以自主安装系统。后台融合数据库等功能管

下载
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

   表示成功。

        此,mysql的双向主从同步已完成

4.keepalived的搭建

        4.1在两台服务器依次做以下操作

        a.安装keepalived      

wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
tar zxvf keepalived-1.2.15.tar.gz
cd keepalived-1.2.15
./configure --prefix=/usr/local/keepalived
make && make install

   假如编译过程出现错误,请安装 gcc,openssl,openssl-devel

   b.复制相关文件  

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

    4.2修改配置文件

         请先将/etc/keepalived/keepalived.conf文件清空

         4.2.1在MySQL-01上操作

         将一下内容复制进去

! Configuration File for keepalived  
global_defs {  
    notification_email {  
    sunyuansheng7@gmail.com  
    }  
    notification_email_from sunyuansheng7@gmail.com  
    smtp_server 127.0.0.1  
    smtp_connect_timeout 30  
    router_id MySQL-ha  
}

vrrp_instance VI_1 {
    state master      
    interface eth0
    virtual_router_id 51
    priority 100       
    advert_int 1
    nopreempt         
        
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.204.222
    }
}

virtual_server 192.168.204.222 3306 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50        
    protocol TCP
    real_server 192.168.204.138 3306 {
        weight 3
        notify_down /var/lib/mysql/killkeepalived.sh  
        TCP_CHECK {
            connect_timeout 10        
            nb_get_retry 3           
            delay_before_retry 3      
            connect_port 3306        
        }
    }
}

      4.2.2在MySQL-02上操作

         vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived  
global_defs {  
    notification_email {  
    sunyuansheng7@gmail.com  
    }  
    notification_email_from sunyuansheng7@gmail.com  
    smtp_server 127.0.0.1  
    smtp_connect_timeout 30  
    router_id MySQL-ha  
}

vrrp_instance VI_1 {
    state backup      
    interface eth0
    virtual_router_id 51
    priority 100       
    advert_int 1
    nopreempt         
        
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.204.222
    }
}

virtual_server 192.168.204.222 3306 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50        
    protocol TCP
    real_server 192.168.204.139 3306 {
        weight 3
        notify_down /var/lib/mysql/killkeepalived.sh  
        TCP_CHECK {
            connect_timeout 10        
            nb_get_retry 3           
            delay_before_retry 3      
            connect_port 3306        
        }
    }
}

   4.3在两台服务器做以下操作 

vim /var/lib/mysql/killkeepalived.sh
     
#!/bin/sh  
pkill keepalived
     
chmod +x /var/lib/mysql/killkeepalived.sh

   4.4此时先不要启动keepalived,因为我们要观察日志


5.测试是否可用

         创建一个新的用户     

mysql> grant all privileges on *.* to 'test'@'%' identified by '123456';
mysql> flush privileges;

  5.1在MySQL-01上多开一个终端,tailf /var/log/messages,然后再另一个终端启动keepalived服务service keepalived start。日志信息如下

wKiom1Va82yQAiAkAAYgchBcbco747.jpg

    5.2在MySQL-02同样打开一个新的终端查看日志信息,然后启动keepalived

wKiom1Va9kWjSchKAAhnGfPuAJE019.jpg

5.3在MySQL-01上手动停掉MySQL服务。同时得到日志信息

wKiom1Va99ThHQytAALtbXucftM408.jpg   连接3306端口失败,准备移除虚拟ip,然后停掉keepalived服务。最后虚拟ip地址移除。

   MySQL-02日志信息没啥变化!话说两边启动keepalived的日志信息差不多是一样的。

   此时可以使用连接MySQL的工具测试一下,虚拟ip地址还是可用的。

5.4假设MySQL-01恢复此时还应该启动keepalived服务。


相关文章

keep
keep

Keep是一款健身安排,无论是想减肥塑形或增肌,还是寻找健身跑步瑜伽计步等训练计划,你可以随时随地选择课程进行训练!权威教练视频教学,健身干货自由分享!有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

86

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

50

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

100

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

293

2025.12.26

b站看视频入口合集
b站看视频入口合集

本专题整合了b站哔哩哔哩相关入口合集,阅读下面的文章查看更多入口。

589

2025.12.26

俄罗斯搜索引擎yandex入口汇总
俄罗斯搜索引擎yandex入口汇总

本专题整合了俄罗斯搜索引擎yandex相关入口合集,阅读下面的文章查看更多入口。

725

2025.12.26

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

63

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

30

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

94

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 776人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号