mysql读写分离 存储过程_MySQL读写分离 · wang-y/Technical-Information Wiki · GitHub

MySQL读写分离

1.主(master)从(slave)服务器上安装mysql;

2.配置步骤

主服务器master 配置:

mysql 配置文件添加:(windows: my.ini;linux:my.cnf)

server-id=129#唯一标示位,通常是设置服务器IP的末尾号

log-bin=master-bin#SLAVE会基于此LOG-BIN来做REPLICATION

log-bin-index=master-bin.index #指定索引文件,此文件指示当前使用了哪个日志文件

binlog-do-db=springjpa#只记录指定库的更新到BINLOG,多库以逗号分隔,或者追加binlog-do-db;

在Master MySQL上创建一个用户‘repl’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。

create user repl; #创建用户

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'mysql'; #开放SLAVE权限给REPL,且允许的192.168.0.1~255 以此用户连接,密码设置为MYSQL。

配置完成后重启mysql服务

运行 > show master status\G;

查看master运行状态;记录File名称,及pos值;

将master服务器 中指定的数据库数据备份。

从服务器slave 配置

将master服务器中备份的数据库还原至从服务器数据库。

mysql 配置文件中添加 (windows: my.ini;linux:my.cnf)

server_id = 75#唯一标示位,通常是设置服务器IP的末尾号

replicate-do-db=springjpa#只替换指定数据库,多库以逗号分隔,或追加replicate-do-db,顺序**必须**与MASTER中的binlog-do-db严格对应;

relay-log=slave-relay-bin#服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件

relay-log-index=slave-relay-bin.index#本地文件的索引,此文件指示当前使用了哪个日志文件

重启mysql服务

重启后执行以下语句:

CHANGE MASTER TO

MASTER_HOST='172.16.232.129',#MASTER服务器IP

MASTER_PORT=3306, #MASTER服务器端口

MASTER_USER='reply_user',#MASTER服务器开放的用户

MASTER_PASSWORD='root',#MASTER服务器开放的用户密码

MASTER_LOG_FILE='master-bin.000003', #MASTER服务器产生的日志

MASTER_LOG_POS=154; #POS位置

运行成功后执行

> start slave;#启动SLAVE

> show slave status\G;#查看状态

> stop slave;#停止SLAVE

3.读写分离方案优化

你需要事务支持吗?

你需要全文索引吗?

你经常使用什么样的查询模式?

思考上面这些问题可以让你找到合适的方向,但那并不是绝对的。如果你需要事务处理,那么InnoDB 可能是比较好的方式。如果你需要全文索引,那么通常来说 MyISAM是好的选择,因为这是系统内建的。

事务支持,是一个影响你选择什么样存储引擎的重要因素,事务支持趋向于选择InnoDB方式,因为其支持事务处理和故障恢复。另外InnoDB可以利用事务日志进行数据恢复,这会比MyISAM快很多。而MyISAM可能会需要几个小时甚至几天来干这些事,InnoDB 只需要几分钟。

当然操作数据库表的习惯可能也会是一个对性能影响很大的因素。比如: COUNT() 在 MyISAM 表中会非常快,而在InnoDB 表下可能会很痛苦。另外MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。MyISAM还提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。在读多写少的业务,如果不介意MyISAM的崩溃恢复问题,选用MyISAM引擎是合适的。

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。

InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。

读写分离必然会分库,一个负责写入数据的数据库,一个负责读取数据的数据库,此时我们可以将负责写入的数据库采用InnoDB作为表引擎,以便控制事务;在负责读取的数据使用MyISAM作为表引擎,以提升检索和读取数据速度。

在主库中创建表A,引擎选择Innodb;

删除从库中自动创建的表A;

在从库中创建表A,引擎选择MyISAM;

附.已有数据库配置主从同步的准备工作

在在MASTER中执行 > FLUSH TABLES WITH READ LOCK; #锁定数据库表,权限设置为只读;

执行cmd命令或者shell命令 >mysqldump -uuser -ppassword --databases db1 [db2 db3 ...] -->parth/mysql.sql; #备份指定数据库;

在从库中创建数据库,进入数据库后,执行导入MASTER备份 > source path/mysql.sql; #在从库中导入主库数据;

配置主从同步,启动slave;

在MASTER中执行 > UNLOCK TABLES; #解除数据库表锁定,恢复读写权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值