centos7中MySQL5.7+keepalived双主热备

mysql主主备份原理:
复制过程中一个服务器充当主服务器,另一个或多个充当从服务器,主服务器将更新写入二进制日志,并维护日志文件的一个索引以跟中日志循环。当一个从服务器连接到主服务器时,它通知主服务器上次更新的位置,从服务器就接收主服务器从那时起发生的变更,然后封锁并等待主服务器通知下一次更新。


双主热备原理:
  MySQL都对外提供服务。但是当一台MySQL宕机后,另一台会马上接管宕机的MySQL的访问。当宕机的MySQL修好了之后又对重新将业务还给他




一、编译安装mysql5.7.20


1、卸载系统自带的Mariadb数据库
rrpm -qa |grep mariadb (不卸载后面启动mysql的时候会报错)


2、创建mysql用户组和mysql用户


groupadd mysql
useradd -g mysql mysql


/3、解压mysql-5.7.20


tar zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz   
/4、创建data目录并将解压后的安装包移动到/data目录下重命名为mysql


 mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql
/5、修改属主,属组
   cd /data
 chown -R mysql.mysql mysql
/6、创建data目录,作为数据库存储位置


mkdir /usr/local/mysql/data


7、初始化mysql
  
 
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data 


如果报错 可以先检查/etc/my.cnf中的datadir的路径是否是MySQL的安装数据路径


8、安装的之后记得记下mysql的初始密码:2018-06-07T06:40:13.310635Z 1 [Note] A temporary password is generated for root@localhost: gq+8i+jxQJ9>




9、启动mysql
 /data/mysql/bin/mysqld_safe --user=mysql &




10、登录并修改密码
/usr/local/mysql/bin/mysql -uroot -p  
/usr/local/mysql/bin/mysqladmin -uroot -p password
 11、设置开机自启
cp /data/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql


chmod +x /etc/rc.d/init.d/mysql


 
chkconfig mysqld --add


启动的时候会报239的错,这是因为mysql默认安装在在/usr/local目录下,如果安装在/usr/local目录下则会正常启动和关闭,不会报错。但是本次安装在自定义的/data目录下,此时需要修改/etc/init.d/mysqld文件,保存后退出
vim /etc/init.d/mysqld
basedir=/data/mysql
datadir=/data/mysql/data  




二、编译安装keepalived-2.0.2


1、安装依赖包


yum -y install openssl openssl-devel
2、编译安装
tar zxvf keepalived-2.0.2.tar.gz


cd keepalived-2.0.2


./configure --prefix=/usr/local/keepalived


make && make install
注意:*如果keepalived的配置文件不在/etc/keepalived/下记得要复制一份过来,不然启动的时候会报错




三、配置mysql主主复制


1、mysql1里面配置


server-id=1
#server唯一标识符
auto_increment_offset=1
#自增ID起始值
auto_increment_increment=2
#每次自增数字
log-bin=mysql-bin
#开启二进制功能,主服务器必须打开
max_binlog_size=1024M
#binlog单文件最大值
replicate-ignore-db=mysql
replicate-ignore-db=informaton_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=test
#忽略不同步主从数据库


2、mysql2里面配置


server-id=2
#server唯一标识符
auto_increment_offset=2
#自增ID起始值
auto_increment_increment=2
#每次自增数字
log-bin=mysql-bin
#开启二进制功能,主服务器必须打开
max_binlog_size=1024M
#binlog单文件最大值
replicate-ignore-db=mysql
replicate-ignore-db=informaton_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=test
#忽略不同步主从数据库


3、mysql重启


service mysql restart


4、配置同步数据
登录mysql并在master1上和master2上输入此语句,记得具体情况根据自己的配置看
change master to master_host='111.1.19.122',master_user='repl',master_password='unioncast.cn',master_log_file='mysql-bin.000005',master_log_pos=154;






登录时报错:mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


此意思是说在命令行直接进行密码登录不安全。这是mysql新版的一个安全改进,官方给出的解释是在命令行下如果要使用密码可以在执行命令后的提示输入里输入密码,或者在指定的安全文件内指定密码;如果还不行就该密码


解决方法:输入-p回车后在输入密码就可以啦


改密码:
在配置文件my.cnf中加入
skip-grant-tables
#跳过密码登录
然后重启数据库后登录mysql
update mysql.user set authentication_string=password('unioncast.cn') where user='root';
 flush privileges;
exit
去掉重启
skip-grant-tables
#跳过密码登录


三、配置keepalived






 Configuration File for keepalived


global_defs {
   notification_email {
        fangjuanqin@unioncast.cn
   }
   notification_email_from keepalived@mysql.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id mysql_ha
}






  vrrp_instance VI_1 {
    state BACKUP
    interface em1
#指定HA检测网络的接口
    virtual_router_id 52
#路由标识符,两节点必须一致
    priority 100
    advert_int 1
#组播信息发送间隔时间。两个节点必须一样
   nopreempt
#不抢占资源,只在master上设置
    authentication {
        #验证信息。两节点必须一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        #设置VIP
        172.16.1.111
    }
}


  virtual_server 172.16.1.111 3306 {
    delay_loop 3
#设置健康检查时间
    lb_algo rr
#设置负载调度算法
    lb_kind DR
    persistence_timeout 80
#客户连接保留时间
    protocol TCP
                                      1
#指定转发协议
    real_server 172.16.1.20 3306 {
        weight 1
        notify_down /usr/local/keepalived/mysql.sh


        TCP_CHECK {
                connect_timeout 8
        #连接超时时间
                nb_get_retry 3
        #重试次数
                delay_before_retry 3
        #两次重试间隔时间


                connect_port 3306
        #测试连接的端口
                #检测MySQL端口
                }
        }
}
  






注意:如果是阿里云的服务器记得将keepalived的组播改成单播不然会出现闹列现象 




nginx健康监测脚本




#!/bin/bash
counter=$(netstat -na |grep "LISTEN" |grep "3306" |wc -l)
if [ "${counter}" -eq 0 ];then
        /etc/init.d/keepalived stop
fi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值