我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库⾼可⽤HA怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库⾼可⽤HA怎么实现

小编给大家分享一下MySQL数据库⾼可⽤HA怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    MySQL数据库⾼可⽤HA实现

    1、 数据库⾼可⽤分析

    ⾼可⽤的衡量标准
    数据库实现⾼可⽤的⼏种⽅式
    MySQL数据库实现⾼可⽤

    2、MySQL主从复制的容灾处理

    MySQL⽀持的复制⽅式分析
    主从场景切换⽅式
    主从结构如何实现容灾

    1. 什么是数据库⾼可⽤

    1.1. 什么是⾼可⽤集群

    N+1:N就是集群,1就是⾼可⽤,⾼可⽤的核⼼就是冗余,集群是保证服务最低使⽤标准的

    1.2. ⾼可⽤集群的衡量标准

    ⼀般是通过系统的可靠性和可维护性来衡量的
    MTTF:平均⽆故障时间,这是衡量可靠性的
    MTTR:衡量系统的可维护性的
    HA=MTTF/(MTTF+MTTR)*100%
    SLA:99.999%:表示⼀年故障时间/宕机时间不超过6分钟

    1.3. 实现⾼可⽤的三种⽅式

    主从⽅式(⾮对称)
        这种⽅式的组织形式通常都是通过两个节点和⼀个或多个服务器,其中⼀台作为主节点
    (active),另⼀台作为备份节点(standy),备份节点应该随时都在检测主节点的健康状况,当
        主节点发⽣故障,服务会⾃动切换到备份节点保障服务正常运⾏
    对称⽅式
        两个节点,都运⾏着不同的服务且相互备份,相互检测对⽅的健康,当任意⼀个节点发⽣故障,这
        个节点上的服务就会⾃动切换到另⼀节点
    多机⽅式
        包含多个节点多个服务,每个节点都要备份运⾏不同的服务,出现问题⾃动迁移

    1.4. MySQL数据的⾼可⽤实现

    1.4.1. 主从⽅式(⾮对称)

    资源:两台同版本的MySQL数据库
    主从实现的内部运⾏原理和机制
        First Step:主数据库服务器会把数据的修改记录记录进binlog⽇志,binlog⼀定要打开
        Second Step:从库的I/O进⾏读取主库的binlog内容后存⼊⾃⼰的Relay Log中继⽇志中,这
        个I/O线程会和主库建⽴⼀个普通的客户端连接,然后主库启动⼀个⼆进制转储线程,I/O线
        程通过转储线程读取binlog更新事件,同步完毕后I/O进⼊sleep,有新的更新会再唤醒
                Relay Log和Binlog的格式是⼀样的,可以⽤mysqlbinlog读取,也可show
                mysql> show relaylog events in 'relay-log.000001';
                ⽬前数据库有两种复制⽅式
                        binlog⽇志点position
                        GTID⽅式也要依赖binlog
        第三步:从服务器的SQL进程会从Relay Log中读取事件并在从库中重放
                从服务器执⾏重放操作时是可以在配置⾥声明是否写⼊服务器的binlog⽇志中

    MySQL数据库⾼可⽤HA怎么实现

    1.4.2. 配置主从服务步骤
    1.4.2.1. Binlog的⽇志点⽅式配置主从同步

    配置主从服务器参数
    在Master服务器上创建⽤于复制并授权的数据库账号
    备份Master数据库并初始化Slave服务器数据
    启动复制链路

    Master服务器配置

    chown -R mysql:mysql /usr/local/binlog/#配置⽂件server_id=163log_bin=/usr/local/binlog/mysql-bin12345

    Slave服务器配置

    server_id=196log_bin=/usr/local/binlog/mysql-binrelay_log=/usr/local/relaylog/relay-bin#当slave宕机后,如果relay log损坏了,导致⼀部分中继⽇志没有处理,则放弃所有未完成的,重新获取执⾏,保证完整性relay_log_recovery=1 #让从库数据只读,super⽤户,super_read_only=onread_only=on#从库的复制链路服务不会随数据库重启⽽重启,需要⼿动启动skip_slave_start=on#确保数据⼀致性,通过innoDB的崩溃恢复机制来保护哦master_info_repository=TABLErelay_log_info_repository=TABLE#select * from mysql.slave_master_info;#select * from mysql.slave_relay_log_info;

    主库授权

    mysql> use msyql;mysql> grant replication slave on *.* to 'syncuser'@'192.168.0.103'identified by '123456';mysql> flush privileges;set global validate_password_policy=LOW;set global validate_password_length=6;

    初始化数据

    mysqldump -uroot -p123456 --master-data=2 --single-transaction --routines --triggers --events --databases mydb > mydb.sql

    创建复制链路

    mysql>CHANGE MASTER TOMASTER_HOST='192.168.0.102',MASTER_PORT=3306,MASTER_USER='syncuser',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=8122;mysql> start slave;mysql> show slave status \G;

    从库的binlog是否写⼊?

    默认情况下是不写⼊的:因为写⼊binlog会消耗I/O,所以性能会下降,如果需要在从库上恢复数
    据就到Relay Log⾥进⾏导出处理
    直接在从库上操作更⾏语句则会写⼊binlog
    如果就是需要写⼊?在从库的my.cnf : log_slave_updates=on #开启同步并写⼊binlog
    开启同步并写⼊binlog应⽤于从到从的情况

    问题:只同步其中三个表

    #Master配置⽂件#不同步哪些数据库binlog-ignore-db=mysqlbinlog-ignore-db=testbinlog-ignore-db=information_schema#同步哪些库binlog-do-db=gamebinlog-do-db=mydb#Slave配置⽂件#复制哪些数据库replicate-do-db=mydbreplicate-do-db=game#不复制哪些数据库replicate-ignore-db=mysqlreplicate-ignore-db=test--replicate-wild-ignore-table=foo%.bar% 不复制使⽤表名称以开头foo且表名称以开头的表的更新bar

    1.4.2.1. GTID的⽅式来进⾏主从复制

    不同点主从服务器的参数有不同的地⽅#在上⾯的基础上,需要给主从服务器都加上gtid_mode=onenforce_gtid_consistency=on #开启强制GTID的⼀致性确保事务GTID下复制链路的启动mysql>CHANGE MASTER TOMASTER_HOST='192.168.0.102',MASTER_PORT=3306,MASTER_USER='syncuser',MASTER_PASSWORD='123456',MASTER_AUTO_POSITION=1;启动GTID后以下数据库操作不可⽤create table tableName.... select在⼀个事务中创建临时表在⼀个transaction中更新innoDB表和myisam表

    2. 数据主从复制⽅式的容灾处理

    2.1. MySQL⽀持的复制格式

    2.1.1. 基于语句的复制(statement)

    优点:记录少,只记录执⾏语句,易懂
        缺点:insert into table1(create_time) values(now()),这个now就不是当时的时间了

    2.1.2. 基于⾏复制(row)

    优点:⼏乎没有基于⾏复制⽆法处理的场景
        缺点:数据量太⼤了

    2.1.3. 混合类型的复制(MIXED)

    mixed格式默认采⽤statement,⽐如⽤到UUID(),ROW_COUNT()

    2.1. MySQL主从复制模式

    异步复制:MySQL默认就是异步复制,性能最好,但主从复制的数据不⼀致性概率最⼤同步复制:当客户端发过来⼀个请求后,只有当所有的从库都写到Relay Log中,才回复给前端事务完成,性能最差,但⼀致性很强半同步复制:⾄少⼀个从库完成Relay Log写⼊后就返回事务完成给前端主从上都要安装mysql> install plugin rpl_semi_sync_master soname='semisync_master.so'rpl_semi_sync_master_enabledrpl_semi_sync_master_timeout #单位是毫秒,如果主库等待从库回复超过这个时间就⾃动切换为异步

    以上是“MySQL数据库⾼可⽤HA怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    MySQL数据库⾼可⽤HA怎么实现

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    MySQL数据库⾼可⽤HA怎么实现

    小编给大家分享一下MySQL数据库⾼可⽤HA怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL数据库⾼可⽤HA实现1、 数据库⾼可⽤分析⾼可⽤的衡量
    2023-06-28

    mysql数据库怎么实现

    mysql数据库实现步骤:安装mysql服务器;创建数据库;创建用户并授予权限;连接到数据库;创建表;插入数据;查询数据;修改数据;删除数据;备份数据库。MySQL数据库实现如何实现MySQL数据库?实现MySQL数据库涉及以下步骤:
    mysql数据库怎么实现
    2024-04-22

    怎么实现数据库的可视化

    要实现数据库的可视化,可以使用数据库管理工具或者图形化界面来操作和管理数据库。以下是一些常用的方法:1. 使用数据库管理工具:常见的数据库管理工具如MySQL Workbench、Navicat、DBeaver等,它们提供了图形化的界面,可
    2023-08-31

    PHP如何实现MySQL数据库可用性

    本文小编为大家详细介绍“PHP如何实现MySQL数据库可用性”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP如何实现MySQL数据库可用性”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。监控数据库的运行状况通
    2023-07-06

    django连接数据库mysql怎么实现

    要在Django中连接MySQL数据库,首先需要安装MySQL数据库驱动程序。可以通过以下命令安装MySQL数据库驱动程序:pip install mysqlclient然后,在Django项目的settings.py文件中配置数据库连接
    django连接数据库mysql怎么实现
    2024-04-09

    mysql数据库定时备份怎么实现

    有多种方法可以实现MySQL数据库的定时备份,以下是其中一种常用的方法:使用crontab定时任务:首先创建一个备份脚本,比如backup.sh,该脚本可以使用mysqldump命令来备份数据库,如下所示:#!/bin/bashmysql
    mysql数据库定时备份怎么实现
    2024-04-12

    编程热搜

    目录