一、操作步骤
1、先自行按转Docker容器
2、安装两台mysql服务器
1、查找mysql
docker search mysql
2、安装mysql,为最新版
docker pull mysql
3、查看本地镜像
docker images
4、运行容器(安装两次就有两个mysql容器)
参数:
-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
注意修改:mysql-test的名字,和端口号为:3308:3306
docker run -itd --name mysql-test -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
5、查看是否安装成功
docker ps
3、远程连接入主库
#1、连接主库
mysql -h 192.168.1.102 -P 3308 -u root -padmin123
从机连接到主机
##创建test用户
create user 'slave'@'%' identified by 'admin123';
##授权用户(任何表库,任何ip地址登录方式)
grant all privileges on *.* to 'slave'@'%' ;
###刷新权限
flush privileges;
#查看主服务器状态(显示如下图)
show master status;
4、远程连接从库
#连接
mysql -h 192.168.1.102 -P 3310 -u root -padmin123
#创建从机账号
change master to master_host='127.0.0.1', master_user='slave', master_password='admin123',master_log_file='mysql-bin.000002', master_log_pos=650413;
开启从机服务
$ start slave;
# 展示从机服务状态
$ show slave status \G
二、配置Django
1、在settings配置主从
DATABASES = {
'default': { # 写(主机)
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': '192.168.103.158', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': 'admin123', # 数据库用户密码
'NAME': 'meiduoManage' # 数据库名字
},
'slave': { # 读(从机)
'ENGINE': 'django.db.backends.mysql',
'HOST': '192.168.103.158',
'PORT': 3310,
'USER': 'root',
'PASSWORD': 'mysql',
'NAME': 'meiduoManage'
}
}
2、创建数据库读写路由
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
3、配置数据读写路由
DATABASE_ROUTERS = ['#']