乐清市城乡规划建设局网站无极任务平台网站进入

张小明 2025/12/30 10:17:06
乐清市城乡规划建设局网站,无极任务平台网站进入,自己建网站需要服务器么,保山做网站建设本文详解MySQL主从复制原理与配置#xff0c;以及读写分离的实现方案#xff0c;从单机到高可用架构。前言 单机MySQL的问题#xff1a; 单点故障读写压力集中无法水平扩展 主从复制是MySQL高可用的基础#xff1a; 数据冗余#xff0c;提高可用性读写分离#xff0c;提升…本文详解MySQL主从复制原理与配置以及读写分离的实现方案从单机到高可用架构。前言单机MySQL的问题单点故障读写压力集中无法水平扩展主从复制是MySQL高可用的基础数据冗余提高可用性读写分离提升性能实时备份降低风险今天来详解MySQL主从复制的实战配置。一、主从复制原理1.1 复制流程┌─────────────────────────────────────────────────────────┐ │ Master │ │ ┌─────────┐ ┌─────────────┐ │ │ │ 数据变更 │ → │ Binlog │ │ │ └─────────┘ └──────┬──────┘ │ └─────────────────────────┼────────────────────────────────┘ │ ① 传输binlog ↓ ┌─────────────────────────────────────────────────────────┐ │ Slave │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ IO Thread │ → │ Relay Log │ → │ SQL Thread │ │ │ │ 接收binlog │ │ 中继日志 │ │ 回放执行 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘1.2 复制模式模式说明优缺点异步复制主库不等从库确认性能好可能丢数据半同步至少一个从库确认折中方案组复制(MGR)Paxos协议强一致复杂二、环境准备2.1 Docker Compose部署# docker-compose.ymlversion:3.8services:mysql-master:image:mysql:8.0container_name:mysql-masterenvironment:MYSQL_ROOT_PASSWORD:root123ports:-3306:3306volumes:-./master/conf:/etc/mysql/conf.d-./master/data:/var/lib/mysql-./master/logs:/var/log/mysqlcommand:--server-id1--log-binmysql-bin--binlog-formatROWmysql-slave:image:mysql:8.0container_name:mysql-slaveenvironment:MYSQL_ROOT_PASSWORD:root123ports:-3307:3306volumes:-./slave/conf:/etc/mysql/conf.d-./slave/data:/var/lib/mysql-./slave/logs:/var/log/mysqlcommand:--server-id2--log-binmysql-bin--binlog-formatROW--read-only1depends_on:-mysql-master2.2 配置文件Master配置# master/conf/my.cnf [mysqld] server-id 1 log-bin mysql-bin binlog-format ROW sync-binlog 1 # 需要同步的数据库不配则同步所有 # binlog-do-db mydb # 忽略的数据库 binlog-ignore-db mysql binlog-ignore-db information_schema binlog-ignore-db performance_schema binlog-ignore-db sys # GTID模式推荐 gtid_mode ON enforce_gtid_consistency ONSlave配置# slave/conf/my.cnf [mysqld] server-id 2 log-bin mysql-bin binlog-format ROW relay-log relay-bin read-only 1 # GTID模式 gtid_mode ON enforce_gtid_consistency ON # 跳过某些错误谨慎使用 # slave-skip-errors 10622.3 启动服务# 创建目录mkdir-p master/{conf,data,logs}slave/{conf,data,logs}# 启动docker compose up -d# 查看状态dockerps三、配置主从复制3.1 在Master创建复制用户-- 连接Mastermysql-h127.0.0.1-P3306-uroot-proot123-- 创建复制用户CREATEUSERrepl%IDENTIFIEDBYrepl123;GRANTREPLICATIONSLAVE,REPLICATIONCLIENTON*.*TOrepl%;FLUSHPRIVILEGES;-- 查看Master状态SHOWMASTERSTATUS;------------------------------------------------------------|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|------------------------------------------------------------|mysql-bin.000003|857||mysql,...|------------------------------------------------------------3.2 配置Slave-- 连接Slavemysql-h127.0.0.1-P3307-uroot-proot123-- 方式1传统位点复制CHANGE MASTERTOMASTER_HOSTmysql-master,MASTER_PORT3306,MASTER_USERrepl,MASTER_PASSWORDrepl123,MASTER_LOG_FILEmysql-bin.000003,MASTER_LOG_POS857;-- 方式2GTID复制推荐CHANGE MASTERTOMASTER_HOSTmysql-master,MASTER_PORT3306,MASTER_USERrepl,MASTER_PASSWORDrepl123,MASTER_AUTO_POSITION1;-- 启动复制STARTSLAVE;-- 查看复制状态SHOWSLAVESTATUS\G3.3 验证复制-- 关键字段Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master:0-- Master写入数据CREATEDATABASEtestdb;USEtestdb;CREATETABLEusers(idINTPRIMARYKEY,nameVARCHAR(50));INSERTINTOusersVALUES(1,test);-- Slave查询验证USEtestdb;SELECT*FROMusers;----------|id|name|----------|1|test|----------四、读写分离4.1 方案对比方案优点缺点代码层面简单无额外组件代码侵入中间件透明功能丰富增加组件MySQL Router官方支持功能有限4.2 代码层实现Spring Boot// 数据源配置ConfigurationpublicclassDataSourceConfig{BeanConfigurationProperties(spring.datasource.master)publicDataSourcemasterDataSource(){returnDataSourceBuilder.create().build();}BeanConfigurationProperties(spring.datasource.slave)publicDataSourceslaveDataSource(){returnDataSourceBuilder.create().build();}BeanpublicDataSourceroutingDataSource(Qualifier(masterDataSource)DataSourcemaster,Qualifier(slaveDataSource)DataSourceslave){MapObject,ObjecttargetDataSourcesnewHashMap();targetDataSources.put(master,master);targetDataSources.put(slave,slave);RoutingDataSourceroutingnewRoutingDataSource();routing.setTargetDataSources(targetDataSources);routing.setDefaultTargetDataSource(master);returnrouting;}}// 动态数据源publicclassRoutingDataSourceextendsAbstractRoutingDataSource{OverrideprotectedObjectdetermineCurrentLookupKey(){returnDataSourceContextHolder.getDataSource();}}// 数据源上下文publicclassDataSourceContextHolder{privatestaticfinalThreadLocalStringCONTEXTnewThreadLocal();publicstaticvoidsetMaster(){CONTEXT.set(master);}publicstaticvoidsetSlave(){CONTEXT.set(slave);}publicstaticStringgetDataSource(){returnCONTEXT.get();}publicstaticvoidclear(){CONTEXT.remove();}}// AOP切面AspectComponentpublicclassDataSourceAspect{Before(annotation(readOnly))publicvoidsetReadDataSource(ReadOnlyreadOnly){DataSourceContextHolder.setSlave();}Before(annotation(org.springframework.transaction.annotation.Transactional))publicvoidsetWriteDataSource(){DataSourceContextHolder.setMaster();}After(execution(* com.example.service.*.*(..)))publicvoidclear(){DataSourceContextHolder.clear();}}4.3 中间件方案ShardingSphere# application.ymlspring:shardingsphere:datasource:names:master,slavemaster:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql://192.168.1.1:3306/mydbusername:rootpassword:root123slave:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql://192.168.1.2:3306/mydbusername:rootpassword:root123rules:readwrite-splitting:data-sources:readwrite_ds:static-strategy:write-data-source-name:masterread-data-source-names:slaveload-balancer-name:round_robinload-balancers:round_robin:type:ROUND_ROBIN五、高可用架构5.1 MHA架构┌─────────────────────────────────────────────────────┐ │ MHA Manager │ │ (监控故障转移) │ └─────────────────────────────────────────────────────┘ ↓ ↓ ↓ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Master │ │ Slave1 │ │ Slave2 │ │ (可写) │ │ (候选Master) │ │ (只读) │ └──────────────┘ └──────────────┘ └──────────────┘5.2 MGR组复制-- 所有节点配置[mysqld]server_id1gtid_modeONenforce_gtid_consistencyONbinlog_checksumNONE# 组复制配置plugin_load_addgroup_replication.sogroup_replication_group_nameaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeegroup_replication_start_on_bootOFFgroup_replication_local_address192.168.1.1:33061group_replication_group_seeds192.168.1.1:33061,192.168.1.2:33061,192.168.1.3:33061group_replication_bootstrap_groupOFF六、跨机房部署6.1 场景挑战需求 - 主库在总部机房 - 从库在分部机房异地灾备 - 两个机房网络不通 传统方案 - 专线成本高 - 公网暴露MySQL端口风险大6.2 组网方案使用组网软件如星空组网打通网络┌─────────────────────────────────────────────────────────┐ │ 组网虚拟局域网 │ │ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ 总部机房 │ │ 分部机房 │ │ │ │ │ │ │ │ │ │ Master │ │ Slave │ │ │ │ 10.10.0.1:3306 │ ←同步─│ 10.10.0.2:3306 │ │ │ │ │ │ │ │ │ └──────────────────┘ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘Slave配置-- 使用组网IP连接MasterCHANGE MASTERTOMASTER_HOST10.10.0.1,-- 组网IPMASTER_PORT3306,MASTER_USERrepl,MASTER_PASSWORDrepl123,MASTER_AUTO_POSITION1;STARTSLAVE;优势不需要公网暴露3306端口加密传输安全可靠配置简单运维人员可通过组网远程管理6.3 远程运维# 通过组网IP远程连接mysql -h10.10.0.1 -P3306-uroot -p# 远程备份mysqldump -h10.10.0.1 -uroot -p mydbbackup.sql# 远程监控mysqlsh --uri root10.10.0.1:3306 --js七、监控与运维7.1 监控指标-- 复制延迟SHOWSLAVESTATUS\G-- Seconds_Behind_Master-- 线程状态SHOWPROCESSLIST;-- 复制错误SHOWSLAVESTATUS\G-- Last_Error, Last_IO_Error, Last_SQL_Error7.2 监控脚本#!/bin/bash# check_replication.shMYSQL_CMDmysql -h 127.0.0.1 -P 3307 -urepl -prepl123IO_RUNNING$($MYSQL_CMD -eSHOW SLAVE STATUS\G|grepSlave_IO_Running|awk{print$2})SQL_RUNNING$($MYSQL_CMD -eSHOW SLAVE STATUS\G|grepSlave_SQL_Running|awk{print$2})DELAY$($MYSQL_CMD -eSHOW SLAVE STATUS\G|grepSeconds_Behind_Master|awk{print$2})echoIO Thread:$IO_RUNNINGechoSQL Thread:$SQL_RUNNINGechoDelay:${DELAY}sif[$IO_RUNNING!Yes]||[$SQL_RUNNING!Yes];thenechoALERT: Replication is broken!# 发送告警fiif[$DELAY-gt60];thenechoALERT: Replication delay 60sfi7.3 常见问题处理复制中断-- 查看错误SHOWSLAVESTATUS\G-- 跳过错误谨慎STOP SLAVE;SETGLOBALSQL_SLAVE_SKIP_COUNTER1;STARTSLAVE;-- 或使用GTID跳过SETGTID_NEXTxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:N;BEGIN;COMMIT;SETGTID_NEXTAUTOMATIC;STARTSLAVE;主从切换-- 原Slave提升为MasterSTOP SLAVE;RESET SLAVEALL;SETGLOBALread_only0;-- 原Master降为SlaveCHANGE MASTERTO...;SETGLOBALread_only1;STARTSLAVE;八、性能优化8.1 并行复制# MySQL 5.7 slave_parallel_type LOGICAL_CLOCK slave_parallel_workers 4 slave_preserve_commit_order 18.2 半同步复制-- MasterINSTALL PLUGIN rpl_semi_sync_masterSONAMEsemisync_master.so;SETGLOBALrpl_semi_sync_master_enabled1;SETGLOBALrpl_semi_sync_master_timeout10000;-- SlaveINSTALL PLUGIN rpl_semi_sync_slaveSONAMEsemisync_slave.so;SETGLOBALrpl_semi_sync_slave_enabled1;STOP SLAVE;STARTSLAVE;8.3 参数优化# binlog优化 binlog_cache_size 4M max_binlog_size 500M expire_logs_days 7 # 复制优化 slave_net_timeout 60 sync_relay_log 10000 relay_log_recovery 1九、总结MySQL主从复制要点基础配置server-id唯一开启binlogGTID模式推荐使用简化管理读写分离中间件方案更优雅高可用MHA/MGR实现自动故障转移跨机房组网打通后正常同步监控告警复制状态和延迟生产环境清单☑ 主从复制配置完成 ☑ 复制用户权限最小化 ☑ 监控脚本部署 ☑ 备份策略制定 ☑ 故障切换演练参考资料MySQL官方复制文档https://dev.mysql.com/doc/refman/8.0/en/replication.htmlMySQL高可用https://dev.mysql.com/doc/mysql-ha-scalability/en/建议生产环境务必使用GTID模式配置半同步复制定期进行主从切换演练。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设销售年终总结河南手机网站建设价格明细表

LangFlow使用全攻略:从入门到精通的可视化AI工作流构建 在当今大语言模型(LLM)技术飞速发展的背景下,构建智能问答系统、自动化代理或数据处理管道已不再是仅限于资深算法工程师的专属领域。然而,传统基于LangChain的手…

张小明 2025/12/29 11:57:53 网站建设

定州三公司网站知春路网站建设公司

PDF补丁丁终极指南:从小白到高手的快速进阶手册 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitcode.…

张小明 2025/12/23 5:22:10 网站建设

比较出名的网站建设公司seo网络排名优化技巧

导语:12 月 5 日,2025 CCF 程序员大会《如何成长为超级个体》分论坛圆满落幕!论坛聚焦 “从工具使用者到价值主导者” 核心议题,朱少民、何万青、揭光发、陶建辉、王洋五位行业大咖齐聚,深度拆解超级个体进阶秘籍。 当…

张小明 2025/12/26 11:59:02 网站建设

apache网站开启gzip公司名称大全20000个

企业 SBC 环境试点与 Beta 测试全解析 在企业 SBC(基于服务器的计算)环境设计中,概念验证试点计划是至关重要的一环,它也是企业全面推广的第一步,主要用于对使用终端服务的应用程序性能进行基础测试。 试点计划的实施步骤 非生产系统试点 :首先建立一个非生产系统,确…

张小明 2025/12/23 5:20:05 网站建设

微信订阅号关键网站wordpress默认小工具

用户反馈某个查询返回了奇怪的结果,但你却无法复现问题。你试图在代码里加入大量 print 语句,想要理解到底哪个环节出了问题——是提示词写得不好?向量检索没找对内容?还是 LLM 本身的幻觉? 非确定性输出让传统的单元测…

张小明 2025/12/23 5:19:03 网站建设

怎样做支付网站90设计网兼职

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速构建一个最小可行Unitask应用原型,要求:1.极简界面(只有一个任务输入框和倒计时) 2.基础计时功能 3.完成提示音 4.任务历史记录 5.导出分享功能。使用纯…

张小明 2025/12/28 13:38:34 网站建设