mysql主从复制+keepalived安装与配置

mysql主从复制

主从数据库创建主从同步账号,并授权
CREATE USER 'leven'@'localhost' IDENTIFIED BY 'Leven';#创建用户
GRANT REPLICATION SLAVE ON *.* TO 'leven'@'localhost';#授权
flush privileges;
主库操作部分
查询主数据master状态
配置从库my.cnf
//主要是serverd-id需要区别于从库
image.png
重启数据库
//可能存在读取自定义my.cnf错误,可自行百度
systemctl restart mysqld
登录数据库,执行同步sql设置语句

mysql -u root -p

CHANGE MASTER TO
MASTER_HOST='192.168.1.30',
MASTER_USER='test',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=5971;
启动slave同步进程
start slave(停止slave进程:stop slave)
查看从库slave状态
show slave status\G;

//主要如下红圈内值为YES 基本就是成功了
image.png
互为主从,基本就是将上面再操作一遍

keepalived安装

安装keepalived
//由于debian环境,直接安装
apt-get install keepalived
配置keepalived
192.168.1.30
//由于安装完网上说得路径没有keepalived.conf,需要自行创建
cd /etc/keepalived

touch keepalived.conf
//注意事项 需要创建mysql.sh用于监视mysql服务 网卡信息各个服务器不同,可以通过ip addr查看

vrrp_script check_mysql_status {                                #定义vrrp脚本,检测mysql主从状态
script "/etc/keepalived/mysql.sh"                         #脚本名称
 
interval 10                                                                   #脚本检测执行间隔时间 10秒
}

vrrp_instance VI_30 {
 state MASTER        
 interface eth0                  #网卡
 virtual_router_id 211      #主备相同,在同一个局域网中不是一对的keepalived router_id不能相同,否则报错
 priority 100          #优先级,backup设置90
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.0.211
 }
 track_script {
    check_mysql_status #触发检查
 }
}

virtual_server 192.168.1.30 3306 {
 delay_loop 2
 lb_algo rr              #LVS算法,用不到,我们就关闭了
 lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
 persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
 protocol TCP
 real_server 192.168.1.30 3306 {  #检测本地mysql,backup也要写检测本地mysql
 weight 3
}
192.168.0.202
vrrp_script check_mysql_status {                                #定义vrrp脚本,检测mysql主从状态
script "/etc/keepalived/mysql.sh"                         #脚本名称
 
interval 10                                                                   #脚本检测执行间隔时间 10秒
}

vrrp_instance VI_202 {
 state BACKUP          #两台都设置BACKUP
 interface eth0
 virtual_router_id 211      #主备相同
 priority 90          #优先级,backup设置90
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.0.211
 }
 track_script {
    check_mysql_status #触发检查
 }
}
编写mysql.sh 用于监控mysql服务挂了直接结束keepalived实现vip漂移
#!/bin/bash
mysqlstr=mysql
host=192.168.1.30
port=3306
user=root
password=123456
mysql_status=1

$mysqlstr -h $host -P $port -u $user -p$password -e "show status;" > /dev/null
if [ $? -eq 0 ] ;then
    echo "mysql_status=1"
    exit 0
else
    /etc/init.d/keepalived stop
fi
启动keepalived服务,查看启动日志
systemctl start keepalived

日志位置为/var/log/syslog或者/var/log/message(具体看系统类型)

如下图基本就是启动OK 红圈内错误网上说是BUG不影响,蓝色圈基本成功了
image.png
查看VIP漂移
ip addr
查看是否存在vip漂移即可
测试
systemctl stop mysqld

关闭master上得mysqld服务

在backup服务器查看ip addr 是否有VIP即可
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容