千家信息网

MM(主主数据库)+keepalived主备高可用集群

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,博客分享的第一篇技术文章;项目主要搭建:主主数据库高可用集群搭建。数据库互为主备,应用技术:MM+keepalived使用的是虚拟机搭建的实验向大家展示:数据库1:192.168.4.7数据库2:19
千家信息网最后更新 2025年11月08日MM(主主数据库)+keepalived主备高可用集群
博客分享的第一篇技术文章;项目主要搭建:主主数据库高可用集群搭建。数据库互为主备,应用技术:MM+keepalived使用的是虚拟机搭建的实验向大家展示:数据库1:192.168.4.7数据库2:192.168.4.77VIP:192.168.4.68web1:192.168.4.69web2: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.indexdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockbinlog_format="mixed"数据库192.168.4.77[mysqld]#vim/etc/my.cnf[mysqld]log-bin=master77server_id=77binlog_format="mixed"log_slave_updatesdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock:wq依次启动两台数据库:systemctlstart mariadb2、导入数据库:将数据库192.168.4.7备份出来的数据库导入到数据库192.168.4.77,以此保持两端数据一致mysql -uroot -p123456 < all.sql3、配置用户授权并查看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 -p123456mysql>change master  to  master_host="192.168.4.77",master_user="slave",master_password="123456",master_log_file="master77.000001",master_log_pos=357;mysql>start slave;                       //启动slavemysql>show  slave status\G;       //查看slave状态数据库192.168.4.77mysql>change master  to  master_host="192.168.4.7",master_user="slave",master_password="123456",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 keepalivedglobal_defs{   notification_email{     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_fromAlexandre.Cassen@firewall.loc   smtp_server192.168.200.1   smtp_connect_timeout30   router_idLVS_DEVEL}vrrp_scriptcheck_mysql {                                                            script    "/opt/mysql.sh"                       //监控脚本存放位置(最后有参考脚本,也可以自己写)       interval        2                                     //(检测脚本执行的间隔)       weight         2}vrrp_instanceVI_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 keepalivedglobal_defs{   notification_email{     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_fromAlexandre.Cassen@firewall.loc   smtp_server192.168.200.1   smtp_connect_timeout30   router_idLVS_DEVEL}vrrp_scriptcheck_mysql {       script"/opt/mysql.sh"       interval         2       weight           2}vrrp_instanceVI_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/basha=`ps-C mysqld --no-header | wc -l`if[ $a -eq 0 ];then   systemctlstart mariadb   sleep3b=`ps-C mysqld --no-header | wc -l`   if[ $b -eq 0 ];then   killallkeepalived   fifi
0