7. mysql主从复制及django中使用

本文介绍了如何在Docker环境下配置MySQL主从复制,包括创建和配置master、slave,以及如何搭建一主带三从的环境。在Django项目中,通过设置DATABASE_ROUTERS和自定义路由类实现读写分离,确保写操作在主库,读操作在从库。同时,提供了MySQL配置文件和数据备份的相关命令。
摘要由CSDN通过智能技术生成

MySQL主从复制

下面是基于于Docker配置MySQL主从复制。我们事先准备好MySQL的配置文件以及保存MySQL数据和运行日志的目录,然后通过Docker的数据目录挂载来指定容器的配置、数据和日志文件的位置。

root
└── mysql
    ├── master
    │   ├── conf
    |	└── data
    └── slave-1
    |	├── conf
    |	└── data
    └── slave-2
    |	├── conf
    |	└── data
    └── slave-3
    	├── conf
    	└── data
  1. MySQL的配置文件(master和slave的配置文件需要不同的server-id)
    [mysqld]
    pid-file=/var/run/mysqld/mysqld.pid    #进程号保存文件
    socket=/var/run/mysqld/mysqld.sock		
    datadir=/var/lib/mysql			 	   #数据文件	
    log-error=/var/log/mysql/error.log	   #错误日志文件
    server-id=1							   #主机从机server-id不能一样
    log-bin=/var/log/mysql/mysql-bin.log   #二进制日志文件,记录了数据改变的操作
    expire_logs_days=30					   #日志过期时间	
    max_binlog_size=256M				   #二进制日志文件最大大小
    symbolic-links=0
    # slow_query_log=ON					   #开启慢查询
    # slow_query_log_file=/var/log/mysql/slow.log  #慢查询日志
    # long_query_time=1					   #超过 1秒为慢查询
    
  2. 创建和配置master
    docker run -d -p 3306:3306 --name mysql-master \
    -v /data/docker/mysql/master/conf:/etc/mysql/mysql.conf.d \
    -v /data/docker/mysql/master/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=y123456! mysql:5.7
    
    docker exec -it mysql-master /bin/bash
    
    mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.7.23-log MySQL Community Server (GPL)
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> grant replication slave on *.* to 'slave'@'%' identified by 'iamslave';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+-----------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值