首页 > 数据库 >MySQL多主模型实战

MySQL多主模型实战

时间:2023-10-21 15:37:54浏览次数:35  
标签:实战 affected 宕机 MySQL mysql 主模型 OK manage01

MySQL AB解决了数据备份的问题,但是当A由于某些原因宕机后,WEB服务器就没有办法在往数据库写或者读写了。线上业务中断了,完了,出事故了。这该怎么办呢?

本节课主要给大家讲解如果处理因为MySQL主服务器宕机造成的业务中断问题,保障MySQL业务高可用。

一、实验拓扑图

mysql_aa拓扑图.png

二、架构原理

1、MySQL互为主备,保障多台MySQL的数据强一致性。

2、VIP漂移,任何一台宕机都不影响数据读写

3、宕机服务器修复,自动同步故障间的缺失数据

三、实验准备

  • 机器三台并设置好IP地址
  • 关闭防火墙、selinux
  • 时间同步
  • node1、node2安装mysql
  • manage01部署lamp
  • 上线业务并进行容灾测试
  • 知识储备点:MySQL AB复制

四、node1、node2互为主备

1、确认binlog开启
2、设置server-id
3、创建同步mysql用户
4、设置同步

#以node2为例
#创建用户
mysql> create user sko2 identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> grant replication slave on *.* to sko2;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

#开始同步
#同步前    主服务器生成一个新binlog开始同步,防止之前的binlog中语句无法执行
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to 
-> master_host='192.168.98.202',
-> master_user='sko',
-> master_password='98989',
-> master_log_file='binlog.000002',
-> master_log_pos=xxx;
Query OK, 0 rows affected, 3 warnings (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

五、manage01-lamp

# 部署lamp业务环境
[root@manage01 ~]# yum -y install httpd php php-mysql
[root@manage01 ~]# systemctl start httpd
[root@manage01 ~]# systemctl start php-fpm
[root@manage01 ~]# vim /var/www/html/phpinfo.php

#测试
<?php phpinfo(); ?>

六、配置MySQL高可用

1、模拟故障,将配有VIP的mysql宕机,手动回收VIP并配给另外一个运行的mysql服务器,查看业务是否正常。

2、恢复宕机mysql,查看宕机过程中的产生的数据是否能够从另外一个运行的mysql中恢复回来。

参考nginx高可用部署
https://www.zutuanxue.com/home/4/58_388

七、上线业务测试

a、拷贝站点

[root@manage01 ~]# cp -r 测试站点html/* /var/www/html/

b、安装站点
打开浏览器输入 http://IP/install.php

c、根据站点提示输入数据并查询,查询数据库数据同步情况

d、停止主mysql继续测试业务,确保正常工作

e、启动宕机mysql,确保停机期间的数据同步

标签:实战,affected,宕机,MySQL,mysql,主模型,OK,manage01
From: https://www.cnblogs.com/yihr/p/17779027.html

相关文章

  • MySQL子查询
    在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块曾为父查询或......
  • MySQL约束
    约束是按照约定(特定)条件限制,管束等意思。约束的作用是添加、删除。在数据库中对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。一、约束概述1.1、什么是约束约束用于限制加入表的......
  • 逻辑卷实战案例-逻辑卷应用
    案例需求:创建一个2.5G大小的逻辑卷案例思路:物理的设备将物理设备做成物理卷创建卷组并将物理卷加入其中创建逻辑卷格式化逻辑卷挂载使用案例实现步骤:1.物理设备[root@zutuanxue~]#lsblk/dev/sdbNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsdb8:160......
  • mysqldump之where用法
    文档课题:mysqldump之where用法.数据库:MySQL5.7.21应用场景:实际生产中,需要运用mysqldump导出指定条件的数据,并且以insert语句的形式呈现,如下为相关测试.1、数据库信息mysql>select*fromstaffs;+----+------+-----+---------+---------------------+|id|name|age|p......
  • 1130 - Host 'xxx' is not allowed to connect to this MySQL server
    安装mysql-5.7.32数据库时,使用Navicat工具连接数据库时,出现Host'xxx'isnotallowedtoconnecttothisMySQLserver,详情如下: 两种解决方案,任选一个即可:1、修改mysql数据库用户表数据 执行如下SQL命令:usemysql;updateusersethost='%'whereuser......
  • MySQL学习(7)连接的原理
    什么是连接连接就是把各个表中的记录都取出来进行依次匹配。若无过滤条件,连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,这样的结果集称为笛卡尔积。测试数据:CREATETABLEt1(m1INT,n1char(1));CREATETABLEt2(m2INT,n2char(1));......
  • 如何保障MySQL和Redis的数据一致性?
    先抛一下结论:在满足实时性的条件下,不存在两者完全保存一致的方案,只有最终一致性方案。根据网上的众多解决方案,总结出6种,直接看目录:  不好的方案 1、先写MySQL,再写Redis   如图所示: 这是一副时序图,描述请求的先后调用顺序; ......
  • MySQL CASE()用法
    MySQL中的CASE表达式用于根据条件进行条件判断和返回多个可能的值。它允许在查询中执行简单的逻辑判断,并根据不同的条件返回不同的值或执行不同的操作。CASE表达式有两种形式:简单CASE和搜索CASE。简单CASE形式:CASEexpressionWHENvalue1THENresult1WHE......
  • MySQL IF()用法
    MySQL中的IF函数用于根据条件返回两个值中的一个。它可以应用于复杂查询和更新语句中,以便根据条件动态生成值。IF函数的语法如下:IF(condition,value_if_true,value_if_false)其中,condition是一个布尔表达式或一个返回布尔值的函数,value_if_true是条件为TRUE时返回......
  • Mysql FIND_IN_SET()用法
    MySQL中的FIND_IN_SET函数用于在逗号分隔的字符串列表中查找指定字符串的位置。它接受两个参数:要查找的字符串和逗号分隔的字符串列表。语法如下:FIND_IN_SET(string,string_list)其中,string是要查找的字符串,string_list是逗号分隔的字符串列表。返回值为待查找字符串......