千家信息网

MySQL主从复制怎样实现高可用

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,MySQL主从复制怎样实现高可用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. MySQL主从复制实现高可用1.1. 数据库永远是系
千家信息网最后更新 2024年09月22日MySQL主从复制怎样实现高可用

MySQL主从复制怎样实现高可用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1. MySQL主从复制实现高可用

1.1. 数据库永远是系统最脆弱的环节

  • 80%都是查询

  • 缓存来保护数据库:Redis、ElasticSearch

  • 数据库系统要有一定的容灾能力

  • 数据状态化明显

1.2. 数据库的HA实现的方式

1.2.1. 高可以计算方式

  • MTTF:平均无故障时间

  • MTTR:平均维护时间

  • HA=MTTF/(MTTF+MTTR)* 100% (这就是常说的99.95%)

1.2.2. 数据库高可用的三种方式

  • 主从(非对称)

    master-slave,热数据备份,从库一般是用来实时备份,从机可以快速切换为主库,读写分离(数据的一致性),从库一般设置为只读

    前端应用走缓存,后端应用Report走从库查

  • 对称方式

    两个节点,互为主从,双主模式(两个数据库的主键如果是自动生成需要初始设置成不一样的)

    A-1001,1003,1005,B-1002,1004,1006

    双主下数据同步一定要实时

  • 多机方式

    • MHA

    • MMM

    • MyCat(可以实现双主机热切)

1.2.3. 主从实现的逻辑

  • 资源:两台数据库

  • Master会将修改记录进binlog

  • Slave从主库binlog读取数据写入relaylog

    • relaylog和binlog的格式一样,可以用mysqlbinlog读取relaylog

    • mysql> show relaylog events in 'relay-bin.000001';

    • binlog的postition方式

    • GTID方式:MySQL版本>=5.7

1.3. 配置主从复制

  • Master服务器配置

# 慢查询开关slow_query_log=ONslow_query_log_file=/usr/local/slowlog/slow.logslow_launch_time=4long_query_time=3# chown -R mysql:mysql /usr/local/slowlog/

binlog设置

server_id=213log_bin=/usr/local/binlog/mysql-bin  # 只需要给名字前缀binlog_format=rowexpire_logs_days=3max_binlog_size=200m
  • Slave服务器配置

# 慢查询开关slow_query_log=ONslow_query_log_file=/usr/local/slowlog/slow.logslow_launch_time=4long_query_time=3# chown -R mysql:mysql /usr/local/slowlog/

从库的主从设置

server_id=214relay_log=/usr/local/relaylog/relay-binrelay_log_recovery=1 #确保完整性read_only=on #从服务器只读skip_slave_start=on #slave重启后不会自己启动复制链路,需要手动启动,建议手动启动,好处是检查无误后启动master_info_repository=TABLE # 将主从服务的信息保存进表relay_log_info_repository=TABLE # 将主从服务的信息保存进表
  • 主从指明不同步的数据库

# Master# 不同步数据库binlog-ignore-db=mysqlbinlog-ignore-db=information_schema# 只同步某一些数据库binlog-do-db=icoding_admin# Slave# 复制哪些数据库replicate-do-db=icoding_adminreplicate-do-db=game# 不复制哪些数据库replicate-ignore-db=mysqlreplicate-ignore-db=information_schema
  • 先Master上建立授权账号

# Master授权给slavemysql> use mysql;mysql> grant replication slave on *.* to 'synuser'@'192.168.0.214' identified by '123456';mysql> flush privileges;
  • 初始化Slave数据

# Master和Slave的数据库版本要一致,Master<=Slavemysqldump -uroot -p123456 -h227.0.0.1 --flush-logs --master-data=2 --routines --triggers --events --single-transaction --databases icoding_admin > mydb.sql#CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=154; 就用导出的日志pos
  • 启动复制链路

# 在slave上执行mysql> change master to master_host='192.168.0.213',master_port=3306,master_user='synuser',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=154;
  • 注意事项

主从复制的时候主从数据库的UUID不能一样,如果是镜像方式,启动前将UUID文件删除,会重新创建cd /var/lib/mysqlcat auto.cnf  # 将他删除server-uuid=890980d9-b072-11ea-8ab8-00163e03668d
  • 启动主从复制

# show slave status \G 可以查看主从复制的状态和日志错误# 启动slavemysql> start slave;# 停止slavemysql> stop slave;

作业1:搭建一个双主的结构

  • 使用GTID方式进行复制链路

# 默认GTID是不开启的# 如果开启以下操作不可用# create table ..... select * from xxx; 不可用# 在一个事务里不能创建和删除表# 在一个事务里更新innodb引擎和myisam不可用
  • 无意中删除了一个数据,可以做延时从库

# 从库做备份就无法做到数据的及时恢复# 让我的从库做到延时同步mysql> stop slave;mysql> change master to master_delay=10; # 延时10秒mysql> start slave;mysql> show slave status \G;

master(实时slave,延时slave)

看完上述内容,你们掌握MySQL主从复制怎样实现高可用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

数据 主从 数据库 方式 同步 服务 备份 实时 服务器 链路 查询 配置 一致 对称 两个 事务 信息 内容 手动 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 游戏服务器地址怎么填 建邺区常规软件开发售后服务 淮师大网络安全 珠海电脑软件开发定制费用 软件开发外包接单公司合作 青海湖天气预报软件开发 芝罘区商城软件开发推荐 信息化建设和网络安全 荣耀关闭网络安全 数据库类的论文题目 天龙八部少年游服务器哪个门派好 捷普服务器群组防护系统简介 同花顺软件开发工作环境 软件开发是怎么样的 数据库访问的技术有哪些 软件开发保密资质的作用 数据库读取html代码 互联网之光博览会天玑科技 网络安全必备技能之家庭篇 济南智能软件开发代码 数据库工具箱官网 邯郸政务软件开发多少钱 计算机网络技术职业探索 移动互联网时代个人网络安全 恐惧与饥饿选哪个服务器 开展网络安全保密工作教育 网络安全法有关青少年的条款 有关网络安全的报告 网络安全的威胁如何防范简答 虹口区电子软件开发包括什么
0