热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(7)数据库读写分离:主从同步实现方法设置详解

一、db设置主写,从读,可部署多个提高“读”速度。写后从库也更新   1)m

一、db设置

,可部署多个提高“读”速度。写后从库也更新

    1)master记录数据库操作日志Binary log

    2)服务器开启i/o线程将二进制日志记录的操作同步到relay log(存服务器缓存中

    3)sql线程将relay log日志记录操作在从服务器执行

步骤:1)master上,配置开启Binary log(mysqld里配)重启,check    2)配置从,同主   最后关联上

(7)数据库读写分离,主从同步实现方法(设置&代码)

主从数据库设置的具体步骤

两个db服务器master、slave

1.打开mysql数据库配置文件

vim /etc/my.cnf

2.master上配置开启Binary log,主要是在[mysqld]下面添加:

    server-id=1

    log-bin=master-bin

    log-bin-index=master-bin.index  

重启mysql服务service mysql restart      

(7)数据库读写分离,主从同步实现方法(设置&代码)

3.检查配置效果,进入主数据库并执行

mysql> SHOW MASTER STATUS;

File名:master-bin.000001 从库配置会用:

(7)数据库读写分离,主从同步实现方法(设置&代码)

4.配置从服务器的 my.cnf

在[mysqld]节点下面添加:server-id 和主库不同

server-id=2

relay-log-index=slave-relay-bin.index

relay-log=slave-relay-bin

配完重启库 : service mysql restart

(7)数据库读写分离,主从同步实现方法(设置&代码)

5.配置关联

(1)建立主从同步库用户,切到主数据库执行:

(7)数据库读写分离,主从同步实现方法(设置&代码)

创建数据库用户repl,密码是mysql, 和主服务器连接时,赋予REPLICATION SLAVE权限, *.* 表面这个权限是针对主库所有表,其中xxx就是从服务器的ip地址。 

(2)进入从数据库后执行:mysql> change master to master_host=’主xxx.xxx.xxx.xx‘,master_port=3306,master_user=’repl’,master_password=’mysql’,master_log_file=’master-bin.000001′,master_log_pos=0;

xxx是主服务器ip,同时配置端口,repl代表访问主数据库的用户

(3)执行start slave启动配置:mysql> start slave;

停止主从同步的命令为:mysql>stopslave;

查看状态命令,G表示换行查看  mysql> show slave statusG;

(7)数据库读写分离,主从同步实现方法(设置&代码)

简单测试:

创建新库:mysql>create database testsplit;

从数据库查看数据库:mysql> show databases;

数据库也有testsplit这张表了,主数据库插入,从数据库也可以查到。 实现主从同步

二、代码层面

多个数据源,一般用一个数据库用户远程操作数据库(避免直接使用root用户),主从都创建一个用户mysqluser赋增删改查权限

mysql> GRANT select,insert,update,delete ON *.* TO ‘mysqluser‘@’%’ IDENTIFIED BY ‘mysql password’ WITH  GRANT OPTION;

mysqluser用户操作数据库:

1.编写jdbc.propreties

指定了两个数据库地址,xxx分别是主从数据库ip地址,端口都默认3306

(7)数据库读写分离,主从同步实现方法(设置&代码)

2.配置数据源    

读取配置文件jdbc.properties,定义基于c3p0连接池父类“抽象”数据源

配置master、slave,继承abstractDataSource,配置数据库连接具体属性,配置动态数据源,决定用哪个具体数据源,关键是DataSourceSelector,接下来我们会实现这个bean

设置数据源懒加载,保证数据源加载的时候其他依赖bean已加载好

spring-dao.xml配置:

(7)数据库读写分离,主从同步实现方法(设置&代码)
(7)数据库读写分离,主从同步实现方法(设置&代码)
(7)数据库读写分离,主从同步实现方法(设置&代码)

整个流程:

1.启动后,依赖bean加载完成后,数据源通过LazyConnectionDataSourceProxy加载,引用dataSourceSelector加载数据源

2.DataSourceSelector选择数据源,默认数据源master

3.执行时,DateSourceSelectInterceptor拦截器拦截请求,分析sql决定用哪个数据源,“读操作”使用slave源,“写操作”使用master源。

https://blog.csdn.net/starlh35/article/details/78735510


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
author-avatar
严志文在吉安_3fu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有