从同步的流程或原理:
1)master会将变动记录到二进制日志里面;
2)master有一个I/O线程将二进制日志发送到sl*e;
3) sl*e有一个I/O线程把master发送的二进制写入到relay日志里面;
4)sl*e有一个SQL线程,按照relay日志处理sl*e的数据。
创建两个文件夹 :
mkdir /home/mysql/data/ touch /home/mysql/conf.d touch /home/mysql/my.cnf mkdir /home/mysql2/data/ touch /home/mysql/conf.d touch /home/mysql/my.cnf
修改配置文件:
主库的配置文件,server-id和开启binlog日志
[mysqld] user=mysql character-set-server=utf8 default_authentication_plugin=mysql_native_password secure_file_priv=/var/lib/mysql expire_logs_days=7 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections=1000 server-id=100 log-bin=mysql-bin [client] default-character-set=utf8 [mysql] default-character-set=utf8
从库的配置:
多了下面两行
Mootion
Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。
232
查看详情
log-bin=mysql-sl*e-bin # 指定日志relay_log=edu-mysql-relay-bin 指定中继日志
[mysqld] user=mysql character-set-server=utf8 default_authentication_plugin=mysql_native_password secure_file_priv=/var/lib/mysql expire_logs_days=7 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections=1000 server-id=101 log-bin=mysql-sl*e-bin relay_log=edu-mysql-relay-bin [client] default-character-set=utf8 [mysql] default-character-set=utf8
拉起两个mysql容器:
#启动主库容器(挂载外部目录,端口映射成33307,密码设置为123456) docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 33307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 #启动从库容器(挂载外部目录,端口映射成33306,密码设置为123456) docker run -di -v /home/mysql2/data/:/var/lib/mysql -v /home/mysql2/conf.d:/etc/mysql/conf.d -v /home/mysql2/my.cnf:/etc/mysql/my.cnf -p 33306:3306 --name mysql-sl*e -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
创建test用户,并授权
#在主库创建用户并授权 ##创建test用户 create user 'test'@'%' identified by '123'; ##授权用户 grant all privileges on *.* to 'test'@'%' ; ###刷新权限 flush privileges; #查看主服务器状态(显示如下图) show master status; # 可以看到日志文件的名字,和现在处在哪个位置
连接从库,配置连接主库
使用命令 "show sl*e status\G" 可以查看 master_log_file 是否相同
#连接从库 mysql -h 172.16.209.100 -P 33306 -u root -p123456 #配置详解 /* change master to master_host='MySQL主服务器IP地址', master_user='之前在MySQL主服务器上面创建的用户名', master_password='之前创建的密码', master_log_file='MySQL主服务器状态中的二进制文件名', master_log_pos='MySQL主服务器状态中的position值'; */ # 输入命令如下 change master to master_host='101.133.225.166',master_port=33307,master_user='test',master_password='123',master_log_file='mysql-bin.000003',master_log_pos=0; # 启用从库 start sl*e; # 查看从库状态(如下图) show sl*e status\G; ####这两个是yes表示配成功 #### Sl*e_IO_Running: Yes Sl*e_SQL_Running: Yes
测试:
#在主库上创建数据库test1 create database test1; use test1; #创建表 create table tom (id int not null,name varchar(100)not null ,age tinyint); #插入数据 insert tom (id,name,age) values(1,'xxx',20),(2,'yyy',7),(3,'zzz',23);
#1 在setting中配置
DATABASES = {
# 主库
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lqz1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '101.133.225.166',
'PORT': 33307,
},
# 从库
'db1': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'lqz1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '101.133.225.166',
'PORT': 33306,
},
}####手动来做
# 向default库写,主库
res=models.Book.objects.using('default').create(name='金瓶梅',price=33.4)
# 去从库查
res=models.Book.objects.using('db1').all().first()
print(res.name)在根目录下创建一个db_router.py
class Router1:
def db_for_read(self, model, **hints):
return 'db1'
def db_for_write(self, model, **hints):
return 'default'在setting中注册
# 注册一下 # 4 以后只要是写操作,就会用default,只要是读操作自动去db1 DATABASE_ROUTERS = ['db_router.Router1',]
class Router1:
def db_for_read(self, model, **hints):
if model._meta.model_name == 'book':
return 'db1'
else:
return 'default'
def db_for_write(self, model, **hints):
return 'default'# django默认是default python manage.py migrate app01 --database=default
以上就是mysql主从基于docker和django怎么实现读写分离的详细内容,更多请关注其它相关文章!
# 运行状态
# 金坛工厂网站建设
# 广安营销企业网站推广
# 电影网站推广图片
# 跨境推广营销方案范文
# 品牌营销推广哪家好做呢
# 漳河seo搜索推广推荐
# 手帐产品文案网站推广
# 互联网网站推广哪儿好学
# 成立网络营销推广部门的目的
# 百度关键词点击排名优化
# 端口映射
# Docker
# 分级管理
# 是一个
# 如下图
# 配置文件
# 设置为
# 有一个
# 如何设置
# 镜像
# django
# MySQL
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
银信通自动开通原因揭秘
《小宇宙》标记不友善评论方法
哈尔滨城市通昵称修改方法
荣耀Magic6 Pro拍照成像偏暗_荣耀Magic6 Pro夜景优化
谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接
《偃武》甘宁技能详解
解决Go encoding/json 将JSON大数字解析为浮点数的问题
yandex网页版直接登录 yandex官方入口平台访问方法
外卖小程序对接第三方配送
WooCommerce购物车:强制显示所有交叉销售商品教程
macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整
大熊猫抓取竹子的“大拇指”其实是什么?蚂蚁庄园课堂今天答案最新11月30日
研招网官方网站招生平台入口_中国研究生招生信息网官网登录
LINUX怎么查看显卡信息_LINUX查看GPU状态
J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明
《异星探险家》古怪的物品作用介绍
Golang如何操作指针参数_Go pointer参数传递规则
大众点评了却看不到是怎么回事
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
《绿竹漫游》关闭消息通知方法
动漫之家观看全集库 动漫之家免费资源网地址
c++如何实现一个简单的RPC框架_c++远程过程调用原理与实践
使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel
J*aScript:从子元素中批量移除特定CSS类
VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略
汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口
PHP安全加载非公开目录图片与动态内容类型处理指南
123网页端官方登录页 123邮箱网页版即时通讯服务
使用AI在VS Code中将代码从一种语言翻译成另一种
如何在CSS中使用伪类选择器_hover实现悬停效果
顺丰快递在线查询系统 顺丰快递官方查单入口
德邦物流在线查询系统 德邦快递货物运输追踪
电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】
《咸鱼之王》新版孙坚技能解析
搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能
哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南
纯CSS实现自适应宽度与响应式布局的水平按钮组
在VS Code中利用AI辅助进行代码迁移
Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】
包子漫画在线观看入口 包子漫画网正版全集链接
猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程
CSS如何在页面中引入重置样式_使用Normalize.css或Reset.css统一浏览器默认样式
PHP utf8_encode 字符编码转换陷阱与解决方案
Excel如何快速找到并断开外部数据源链接_Excel外部数据源断开方法
《杖剑传说》食谱大全
Win10怎么设置快速启动 Win10开启快速启动设置方法
苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】
Lar*el 中高效执行多列更新:单次查询实现
家里的小飞虫总是不断,用什么方法可以彻底根除?
服装短视频如何起号推广?服装短视频起号推广有什么要求?
2023-06-01
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。