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

张小明 2026/1/11 12:38:02
乐清市城乡规划建设局网站,无极任务平台网站进入,自己建网站需要服务器么,保山做网站建设本文详解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进行投诉反馈,一经查实,立即删除!

投资交易网站开发巴中区建设局网站

EmotiVoice语音合成日志记录规范:便于调试与审计 在当前AI驱动的语音交互场景中,用户早已不再满足于“能说话”的机器声音。从智能客服到虚拟主播,从有声读物到游戏NPC,人们期待的是富有情感、自然流畅、甚至具备个性辨识度的语音…

张小明 2026/1/7 22:32:06 网站建设

兰州北京网站建设wordpress文章重复

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个交互式BluescreenView学习应用,包含:1.分步骤模拟操作演示 2.常见蓝屏错误代码解释 3.安全模式启动指导 4.基础故障排查流程图。要求使用Electron开…

张小明 2026/1/6 7:42:26 网站建设

网站页面设计代码创意设计

三步搞定虚拟手柄:终极游戏控制器模拟解决方案 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 还在为游戏手柄兼容性问题烦恼吗?想要在PC上畅玩PS4独占游戏,却苦于控制器不匹配?今天&…

张小明 2026/1/10 13:36:45 网站建设

成熟网站开发联系电话dede网站

第一章:Open-AutoGLM 酒店入住登记辅助在现代智慧酒店系统中,自动化入住登记是提升服务效率与用户体验的关键环节。Open-AutoGLM 作为一种基于生成式语言模型的智能辅助系统,能够对接酒店管理平台,实现客人信息自动识别、登记表单…

张小明 2026/1/9 17:46:04 网站建设

网站建设作业教程展厅设计费

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

张小明 2026/1/10 21:53:35 网站建设

海淀区网站制作公司云速成美站

终极指南:5分钟掌握dnSpy BAML反编译核心技巧 【免费下载链接】dnSpy 项目地址: https://gitcode.com/gh_mirrors/dns/dnSpy WPF应用程序的界面设计通常隐藏在BAML(二进制应用程序标记语言)格式中,这种二进制文件对开发者…

张小明 2026/1/10 18:00:18 网站建设