赞
踩
由于我用的是Windows10,所以我打开了Hyper-V,然后在Dcoker官网下载并安装了Docker。
docker network create --subnet=[IP]/[掩码位数] 子网名称
指令示例:
docker network create --subnet=192.168.100.0/24 homenet
route add -p [局域网ip] mask [子网掩码] [经过网关(使用Docker默认网关)]
指令示例(管理员模式下运行指令):
route add -p 192.168.100.0 mask 255.255.255.0 10.0.75.2
先启动一个mysql,查看需要持久化的文件有哪些。
docker run -itd --net homenet --ip 192.168.100.10 --name mysql000 -e MYSQL_ROOT_PASSWORD=00000000 mysql
docker exec -it mysql000 /bin/bash
# find / -name "mysql"
然后发现了以下需要映射的文件
/etc/mysql/my.cnf
/var/lib/mysql
保存一份my.cnf文件到宿主机,挂载文件时需要用到
然后删除刚才创建的Mysql,删除前顺便测试下局域网有没有用
mysql -h 192.168.100.10 -u root -p
[mysql]exit
docker stop mysql000
docker rm mysql000
其中主数据库配置文件添加:
server-id=1
log-bin=mysql-bin
从数据库配置文件依次添加:
server-id=2
log-bin=mysql-slave-bin
relay_log=mysql-relay-bin
server-id=3
log-bin=mysql-slave-bin
relay_log=mysql-relay-bin
然后创建mysql容器,命令示例(在挂载过程中需要输入Windows10密码授权本地文件操作):
docker run -itd --privileged=true --net homenet --ip 192.168.100.10 --name mysql000 -e MYSQL_ROOT_PASSWORD=00000000 -e MYSQL_USER="ovea" -e MYSQL_PASSWORD="00300100" -v /c/Users/OVEA/Documents/Docker/MySQL/MySQL000/etc/my.cnf:/etc/mysql/my.cnf -v /c/Users/OVEA/Documents/Docker/MySQL/MySQL000/varlib:/var/lib/mysql mysql
docker run -itd --privileged=true --net homenet --ip 192.168.100.11 --name mysql001 -e MYSQL_ROOT_PASSWORD=00000000 -e MYSQL_USER="ovea" -e MYSQL_PASSWORD="00300100" -v /c/Users/OVEA/Documents/Docker/MySQL/MySQL001/etc/my.cnf:/etc/mysql/my.cnf -v /c/Users/OVEA/Documents/Docker/MySQL/MySQL001/varlib:/var/lib/mysql mysql
docker run -itd --privileged=true --net homenet --ip 192.168.100.12 --name mysql002 -e MYSQL_ROOT_PASSWORD=00000000 -e MYSQL_USER="ovea" -e MYSQL_PASSWORD="00300100" -v /c/Users/OVEA/Documents/Docker/MySQL/MySQL002/etc/my.cnf:/etc/mysql/my.cnf -v /c/Users/OVEA/Documents/Docker/MySQL/MySQL002/varlib:/var/lib/mysql mysql
mysql -h 192.168.100.10 -u root -p
mysql> create user 'slave'@'%' identified by '00300100';
mysql> grant REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
mysql> show master status;
这两个字段在从数据库中是有用的,它标识了主数据库当前语句执行状态(执行日志)。
对两个从数据库都做如下处理
mysql -h 192.168.100.12 -u root -p
mysql> change master to master_host='192.168.100.11', master_user='slave', master_password='00300100', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos= 702, master_connect_retry=30;
start slave;
show slave status \G;
如果成功了的话,就是这个样子的。
在主数据库中创建一个表
然后查看从数据库是否同步
最后完全同步了,而且因为持久化设置,因此在关闭容器重新打开也不会出现数据丢失。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。