设为首页 收藏本站
查看: 1024|回复: 0

[经验分享] MM(主主数据库)+keepalived主备高可用集群

[复制链接]

尚未签到

发表于 2018-12-31 07:46:13 | 显示全部楼层 |阅读模式
博客分享的第一篇技术文章;
项目主要搭建:主主数据库高可用集群搭建。
数据库互为主备,应用技术:MM+keepalived
使用的是虚拟机搭建的实验向大家展示:
数据库1:192.168.4.7
数据库2:192.168.4.77
VIP:192.168.4.68
web1:192.168.4.69
web2:192.168.4.70

一、安装mysql,部署主主同步结构。
直接yum安装
配置主主同步:
由于主数据库192.168.4.7里面存放着数据,所以需要先导出数据,方法很多,我们采取mysqldump:
#mysqldump -uroot   -p123456  --all-databases  >    /opt/all.sql
然后需要将数据拷贝到数据库192.168.4.77。
数据库2:
1、修改配置文件:
数据库192.168.4.7
[mysqld]
server_id=7                           #两台主机不能重复
log-bin=master7                     #开启binlog功能
log-bin-index=master7.index
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
binlog_format="mixed"
数据库192.168.4.77
[mysqld]
#vim
/etc/my.cnf
[mysqld]
log-bin=master77
server_id=77
binlog_format="mixed"
log_slave_updates
datadir=/var/lib/
mysqlsocket=/var/lib/mysql/mysql.sock
:wq
依次启动两台数据库:systemctl
start mariadb

2、导入数据库:
将数据库192.168.4.7备份出来的数据库导入到数据库192.168.4.77,以此保持两端数据一致
mysql -uroot -p123456 < all.sql

3、配置用户授权并查看master信息:
数据库192.168.4.7
给用户授权:允许192.168.4.77的数据库用户slave拥有replication slave权限:
mysql>grant replication  slave  on   *.*   to  slave@"192.168.4.77" identified  by "123456";
mysql>show master status;     //查看状态;
数据库192.168.4.77
给用户授权:允许192.168.4.7的数据库用户slave拥有replication slave权限:
mysql>grant replication  slave  on   *.*   to  slave@"192.168.4.7" identified  by "123456";
mysql>show master status;     //查看状态;
4、配置相互主从,并开启slave模式:
数据库192.168.4.7
#mysql -uroot -p123456
mysql>change master  to  master_host="192.168.4.77",master_user="slave",master_password="12
3456",master_log_file="master77.000001",master_log_pos=357;
mysql>start slave;                       //启动slave
mysql>show  slave status\G;       //查看slave状态
数据库192.168.4.77
mysql>change master  to  master_host="192.168.4.7",master_user="slave",master_password="123
456",master_log_file="master7.000001",master_log_pos=357;
mysql>start slave;
mysql>show  slave status\G;         //查看slave状态
状态都为yes是正常,否则主主同步异常,需要进一步排查
Slave_IO_Running:            Yes
Slave_SQL_Running:         Yes
主主同步配置完成后可以进行一些建库,建表的测试测试,看看两边的数据是否一致


二、安装keepalived并设置监控
keepalived是安装在两台MySQL服务器上的
首先安装keepalived过程不解释就正常解压安装就好
1、修改配置文件/etc/keepalived/keepalived.conf
!
Configuration File for keepalived
global_defs
{
   notification_email
{
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from
Alexandre.Cassen@firewall.loc
   smtp_server
192.168.200.1
   smtp_connect_timeout
30
   router_id
LVS_DEVEL
}
vrrp_script
check_mysql {                                                     
       script    "/opt/mysql.sh"                       //监控脚本存放位置(最后有参考脚本,也可以自己写)
       interval        2                                     //(检测脚本执行的间隔)
       weight         2
}
vrrp_instance
VI_1 {
    state         MASTER                                        //备份服务器上将MASTER改为 BACKUP
    interface     eth0                                          
    virtual_router_id         51                                //主、备机的virtual_router_id必须相同
    priority            100                  //主、备机取不同的优先级,主机值较大,备份机值较小,备份服
                                                务器设置为99
    advert_int             1
    authentication
{
        auth_type      
        PASS
        auth_pass      
        1111                                  //主、备机一样
    }
track_script
{
   check_mysql                            //检测脚本
}
    virtual_ipaddress
{
        192.168.4.68                       //VIP(虚拟IP,对外提供服务的IP)
    }
}

数据库192.168.4.77配置文件:
vim
/etc/keepalived/keepalived.conf
!
Configuration File for keepalived
global_defs
{
   notification_email
{
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from
Alexandre.Cassen@firewall.loc
   smtp_server
192.168.200.1
   smtp_connect_timeout
30
   router_id
LVS_DEVEL
}
vrrp_script
check_mysql {
       script
"/opt/mysql.sh"
       interval         2
       weight           2
}
vrrp_instance
VI_1 {
    state               BACKUP
    interface           eth0
    virtual_router_id  51
    priority               90
    advert_int            1
    authentication
{
        auth_type
          PASS
        auth_pass
          1111
    }
track_script
{
   check_mysql
}
    virtual_ipaddress
{
        192.168.4.68
    }
}

******************************************************************************
监控脚本的作用是:实现keepalived主备的切换
附:监控脚本
vim
/opt/ mysql.sh
#!/bin/bash
a=`ps
-C mysqld --no-header | wc -l`
if
[ $a -eq 0 ];then
   systemctl
start mariadb
   sleep
3
b=`ps
-C mysqld --no-header | wc -l`
   if
[ $b -eq 0 ];then
   killall
keepalived
   fi
fi



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657781-1-1.html 上篇帖子: keepalived做nginx的高可用,企业版简单介绍。 下篇帖子: web服务器的高可用性之keepalived的研究与实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表