iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >使用Django怎么实现MySQL读写分离
  • 316
分享到

使用Django怎么实现MySQL读写分离

2024-04-02 19:04:59 316人浏览 安东尼
摘要

本篇文章为大家展示了使用Django怎么实现Mysql读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主从同步介绍和优点在多台数据服务器中,分为主服务器和从服

本篇文章为大家展示了使用Django怎么实现Mysql读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。


主从同步介绍和优点

在多台数据服务器中,分为主服务器和从服务器。一台主服务器对应多台从服务器。
主服务器只负责写入数据,从服务器只负责同步主服务器的数据,并让外部程序读取数据。
主服务器写入数据后,即刻将写入数据的命令发送给从服务器,从而使得主从数据同步。
应用程序可以随机读取某一台从服务器的数据,这样就可以分摊读取数据的压力。
当从服务器不能工作时,整个系统将不受影响;当主服务器不能工作时,可以方便地从从服务器选举一台来当主服务器
使用主从同步的优点:
提高读写性能
因为主从同步之后,数据写入和读取是在不同的服务器上进行的,而且可以通过增加从服务器来提高数据库的读取性能。
提高数据安全
因为数据已复制到从服务器,可以在从服务器上备份而不破坏主服务器相应数据。
主从同步机制
注意:mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。Docker安装运行Mysql从机
项目中我们搭建一主一从的主从同步。主服务器:ubuntu操作系统中的MySQL。从服务器:Docker容器中的MySQL获取MySQL镜像# 主从同步尽量保证多台MySQL的版本相同或相近
 sudo docker image pull mysql:5.7.22 # 5.7.22版本 
 sudo docker load -i 文件路径/mysql_docker_5722.tar

指定MySQL从机配置文件在使用Docker安装运行MySQL从机之前,需要准备好从机的配置文件。
为了快速准备从机的配置文件,我们直接把主机的配置文件拷贝到从机中。
# 创建MySQL从机配置文件夹
mkdir mysql_slave
# 创建装数据库数据文件夹
mkdir datacp -r /etc/mysql/mysql.conf.d ./

修改MySQL从机配置文件编辑 ~/mysql_slave/mysql.conf.d/mysqld.cnf文件。
由于主从机都在同一个电脑中,所以我们选择使用不同的端口号区分主从机,从机端口号是8306。
# 从机端口号
port = 8306
# 关闭日志
general_log = 0
# 从机唯一编号
server-id = 2

Docker安装运行MySQL从机创建 root 用户的密码为 mysql sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWord=mysql -d --network=host -v /home/python/mysql_slave/data:/var/lib/mysql -v /home/Python/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d mysql:5.7.22

测试从机是否创建成功mysql -uroot -pmysql -h 127.0.0.1 --port=8306

主从同步实现
配置主机(ubuntu中MySQL)配置文件如有修改,需要重启主机。sudo service mysql restart
# 开启日志
general_log_file = /var/log/mysql/mysql.log
general_log = 1
# 主机唯一编号
server-id = 1
# 二进制日志文件
log_bin = /var/log/mysql/mysql-bin.log

从机备份主机原有数据# 在做主从同步时,如果从机需要主机上原有数据,就要先复制一份到从机
# 1. 收集主机原有数据
mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql# 2. 从机复制主机原有数据
mysql -uroot -pmysql -h227.0.0.1 --port=8306 < ~/master_db.sql

主从同步实现# 登录到主机
$ mysql –uroot –pmysql
# 创建从机账号
$ GRANT REPLICATioN SLAVE ON *.* TO 'slave'@'%' identified by 'slave';
# 刷新权限
$ FLUSH PRIVILEGES;
# 展示ubuntu中MySQL主机的二进制日志信息
$ SHOW MASTER STATUS;
# 可以看到master_log_file和master_log_pos=Position

# 登录到从机
$ mysql -uroot -pmysql -h 127.0.0.1 --port=8306
# 从机连接到主机
$ change master to master_host='127.0.0.1', master_user='slave', master_password='slave',master_log_file=XXX, master_log_pos=XXX;
# 开启从机服务
$ start slave;
# 展示从机服务状态
$ show slave status \G

DjanGo实现MySQL读写分离
增加slave数据库的配置
DATABASES = {
    'default': { # 写(主机)
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'HOST': 'XXXX', # 数据库主机
        'PORT': 3306, # 数据库端口
        'USER': 'XX', # 数据库用户名
        'PASSWORD': 'XXX', # 数据库用户密码
        'NAME': 'XXX' # 数据库名字
    },
    'slave': { # 读(从机)
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'XXXX',
        'PORT': 8306,
        'USER': 'XXX',
        'PASSWORD': 'XXX',
        'NAME': 'XXX'
    }
}

创建和配置数据库读写路由
创建数据库读写路由# 在meiduo_mall.utils.db_router.py中实现读写路由

class MasterSlaveDBRouter(object):
    """数据库读写路由"""    def db_for_read(self, model, **hints):
        """读"""
        return "slave"    def db_for_write(self, model, **hints):
        """写"""
        return "default"    def allow_relation(self, obj1, obj2, **hints):
        """是否运行关联操作"""
        return True

配置数据库读写路由# 配置数据库读写分离路由
DATABASE_ROUTERS = ['meiduo_mall.utils.db_router.MasterSlaveDBRouter']

冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最安全的方法。简单说法就是:离线(没有新的数据来)复制一份保存,有事就直接用这备份来恢复。
冷备份的优点:
是非常快速的备份方法(只需拷贝文件)
容易归档(简单拷贝即可)
容易恢复到某个时间点上(只需将文件再拷贝回去)
能与归档方法相结合,作数据库“最新状态”的恢复。
低度维护,高度安全。
冷备份的缺点:
单独使用时,只能提供到“某一时间点上”的恢复。
在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
不能按表或按用户恢复。
值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的 。而且在恢复后一定要把数据库文件的属组和属主改为mysql。热备份
热备份是在数据库运行的情况下,备份数据库操作的sql语句,当数据库发生问题时,可以重新执行一遍备份的sql语句。简单说就是:在线的保存对数据库操作的sql语句,有事就再跑一遍这些sql语句。# 在做主从同步时,如果从机需要主机上原有数据,就要先复制一份到从机
# 1. 收集主机原有数据
mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql# 2. 从机复制主机原有数据(在配置文件所在目录下,数据会写入data文件中)
mysql -uroot -pmysql -h227.0.0.1 --port=8306 < ~/master_db.sql
热备份的优点:
可在表空间或数据文件级备份,备份时间短。
备份时数据库仍可使用。
可达到秒级恢复(恢复到某一时间点上)。
可对几乎所有数据库实体作恢复。
恢复是快速的,在大多数情况下在数据库仍工作时恢复。
热备份的缺点:
不能出错,否则后果严重。
若热备份不成功,所得结果不可用于时间点的恢复。
因难于维护,所以要特别仔细小心,不允许“以失败而告终”

上述内容就是使用Django怎么实现MySQL读写分离,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: 使用Django怎么实现MySQL读写分离

本文链接: https://www.lsjlt.com/news/56140.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Django怎么实现MySQL读写分离
    本篇文章为大家展示了使用Django怎么实现MySQL读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主从同步介绍和优点在多台数据服务器中,分为主服务器和从服...
    99+
    2024-04-02
  • 使用Mycat怎么实现MySQL读写分离
    今天就跟大家聊聊有关使用Mycat怎么实现MySQL读写分离,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。搭建环境操作系统:CentOS-6.5-x...
    99+
    2024-04-02
  • 怎么实现mysql读写分离
    这篇文章主要介绍“怎么实现mysql读写分离”,在日常操作中,相信很多人在怎么实现mysql读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现mysql读写分离”...
    99+
    2024-04-02
  • Django搭建MySQL主从实现读写分离
    目录一、MySQL主从搭建操作步骤二、Django实现读写分离自动指定一、MySQL主从搭建 主从配置原理: 主库写日志到 BinLog 从库开个 IO 线程读取...
    99+
    2024-04-02
  • MySQL Router实现MySQL的读写分离
    MySQL Router实现MySQL的读写分离 https://www.cnblogs.com/f-ck-need-u/p/9276639.html https://www.cnblogs.com...
    99+
    2024-04-02
  • 浅析php+mysql怎么实现读写分离
    MySQL作为目前最流行的数据库之一,在应用中大量被使用。在高并发和数据量较大的情况下,由于MySQL的读写并发性能不足,为了提高MySQL的并发性能,读写分离成为了必要的方案。读写分离的原理是将读操作和写操作分别放在不同的MySQL实例上...
    99+
    2023-05-14
    读写分离 php mysql
  • SpringBoot怎么实现读写分离
    这篇文章主要讲解了“SpringBoot怎么实现读写分离”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么实现读写分离”吧!前言根据公司业务需求,项目需要读写分离,所以记...
    99+
    2023-06-30
  • redis读写分离怎么实现
    Redis读写分离可以通过以下几种方式实现:1. 主从复制(Master-Slave):将一个Redis实例作为主节点(Master...
    99+
    2023-09-06
    redis
  • SpringBoot项目中怎么实现MySQL读写分离
    这篇文章主要介绍了SpringBoot项目中怎么实现MySQL读写分离的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot项目中怎么实现MySQL读写分离文章都会有所收获,下面我们一起来看看吧。1...
    99+
    2023-07-02
  • php中怎么实现Mysql读写分离操作
    php中怎么实现Mysql读写分离操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。连接案例:<php require...
    99+
    2024-04-02
  • 安装mysql-proxy实现mysql读写分离
    一. 环境描述操作系统版本:centos 7.2主服务器:192.168.0.72  node2从服务器:192.168.0.73  node3调度服务器MySQL-Proxy...
    99+
    2024-04-02
  • php+mysql如何实现读写分离
    这篇“php+mysql如何实现读写分离”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php+mysql如何实现读写分离”文...
    99+
    2023-07-05
  • MySQL中如何实现读写分离
    MySQL中如何实现读写分离,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一,创建Master数据库的配置文件vi master...
    99+
    2024-04-02
  • mybatis中怎么实现读写分离
    本篇文章为大家展示了mybatis中怎么实现读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、spring aop实现首先application-test.yml增加如下数据源的配置spri...
    99+
    2023-06-20
  • MyCat中怎么实现读写分离
    这期内容当中小编将会给大家带来有关MyCat中怎么实现读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、mycat实现读写分离这里没有用到mysql03主机,读写...
    99+
    2024-04-02
  • MyCat怎么实现MySQL一主两从读写分离
    这篇文章主要介绍“MyCat怎么实现MySQL一主两从读写分离”,在日常操作中,相信很多人在MyCat怎么实现MySQL一主两从读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • Linux如何使用 MyCat 实现 MySQL 主从读写分离
    目录Linux-使用 MyCat 实现 MySQL 主从读写分离 一、MySQL 读写分离1、MySQL 读写分离的概述2、读写分离工作原理3、为什么要读写分离3、实现读写分离的方式...
    99+
    2024-04-02
  • ProxySQL中怎么利用MySQL实现数据库读写分离
    ProxySQL中怎么利用MySQL实现数据库读写分离,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ProxySQL介绍1、连接池,而且是mu...
    99+
    2024-04-02
  • MySQL 中间件Atlas 实现读写分离
    〇 Atlas架构介绍 Atlas是Qihoo360开发的一个中间件,位于Client和MySQL Server中间层,可以作为读写分离,分库分表中间件。 对于MySQL Server而言,Atlas像是...
    99+
    2024-04-02
  • mysql数据库中怎么利用mycat实现读写分离
    这期内容当中小编将会给大家带来有关mysql数据库中怎么利用mycat实现读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、部署mycat下载 [root@myc...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作