docker搭建数据库主从复制
首先需要安装docker镜像:
docker pull mysql:5.7
由于需要启动数据库才可以进入数据修改my.cnf文件,可以选择安装vi命令,也可以选择挂在
在此选择是挂载的方法进行安装:
docker run --name mastermysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=1234 -v /usr/master/data:/var/lib/mysql -v /usr/master/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7
docker run --name slavermysql -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=1234 -v /usr/slaver/data:/var/lib/mysql -v /usr/slaver/conf/my.cnf:/etc/mysql/my.cnf mysql
这样就可以创建两个mysql容器,但是需要修改my.cnf,上面创建的是文件文件夹
进入 cd /usr/master
执行 rm -rf my.cnf
再执行 vi my.cnf
加入:
[mysqld] ## 同一局域网内注意要唯一 server-id=100 ## 开启二进制日志功能,可以随便取(关键) log-bin=mysql-bin
在从数据库中也是如此操作:
在文件中加入:
[mysqld] ## 设置server_id,注意要唯一 server-id=101 ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用 log-bin=mysql-slave-bin ## relay_log配置中继日志 relay_log=edu-mysql-relay-bin
这样就可以了:
再次启动两个mysql容器:
首先进入主数据:
docker exec -it mastermysql bash mysql -u root -p 输入密码 执行: GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456'; show master status; 这里是需要记住相关内容的
还需要给两个实例设置独立的ip
执行:
docker inspect --format='{{.NetworkSettings.IPAddress}}' slavermysql
docker inspect --format='{{.NetworkSettings.IPAddress}}' mastermysql
再进入从数据库:
docker exec -it slavermysql bash mysql -u root -p 输入密码 change master to master_host='172.17.0.3',master_user='backup',master_password='123456',master_log_file='mysql-bin.0000003',master_log_pos=154,master_port=3306;
执行
start slave;
再执行
show slave status\G;
master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
查询容器的ip
master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
然后就可以看到:
再在主数据库中创建test数据库:
再进入从数据库中查看:
代表已经安装成功
笔记转移,由于在有道云的笔记转移,写的时间可能有点久,如果有错误的地方,请指正