千家信息网

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

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下MySQL数据库⾼可⽤HA怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL数据库⾼可⽤H
千家信息网最后更新 2026年11月03日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⽇志中

    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怎么实现"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

    数据 服务 数据库 主从 节点 服务器 同步 配置 备份 就是 处理 不同 事务 故障 时间 线程 链路 集群 切换 更新 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 伟宏互联网科技 广东猪兼强互联网科技有限公司 互联网和科技技术 朗新科技与工业互联网 腾讯阿里互联网科技 科技与互联网发展 融势互联网科技 互联网巨头投资的硬核科技 重庆威客帮互联网科技 现代互联网科技股 成都铂石互联网科技做什么的 开一家科技互联网公司需要多少钱 深圳育鹏互联网科技有限公司招聘 银川新华互联网科技学校联系电话 小米互联网科技园入驻 信承诺互联网科技有限公司 平安好医生打造互联网科技医疗 北京瑞云互联网科技有限公司 科技美学互联网 艺术 北京路客互联网科技有限公司 关于新基建和互联网科技 互联网科技有限公司 翻译 重庆科技学院互联网 常德市电业局互联网科技部 互联网媒体平台算高科技产业 互联网科技研发水平 佛山市拉法互联网科技有限公司 广州梦谷互联网科技有限公司领导 中国科技和美国互联网
    0