docker部署mysql主从复制

1.部署环境:

docker虚拟机,win10安装docker虚拟机,具体配置就不介绍了,参考其他文章。

Linux虚拟机与本机设置共享目录,以便挂载文件到docker容器,具体配置参考我其他文章。

2.下载mysql镜像

1.我直接输入的docker pull mysql,下载的mysql最新的镜像,貌似是8以上,具体没看。

2.在本地共享目录新建两个mysql配置文件,分别是master mysql 配置文件和slave mysql配置文件

mysql-m.cnf:

[mysqld]
log-bin = mysql-bin
server-id=1
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

mysql-s.cnf:

[mysqld]
log-bin=mysql-bin
server-id=2
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

3.启动镜像,命令:

docker run -d -e MYSQL_ROOT_PASSWORD=root123 --name mysql-m -v /mnt/mysql/my-m.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf  -p 3307:3306 mysql

docker run -d -e MYSQL_ROOT_PASSWORD=root123 --name mysql-s -v /mnt/mysql/my-s.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf  -p 3308:3306 mysql

4.进入主mysql容器,即执行命令:docker exec -it mysql-m /bin/bash

5.创建用户test.执行命令:create user 'test'@'192.168.99.100' identified by '123456';并授权,执行如下命令:

GRANT REPLICATION SLAVE ON *.* to 'test'@'%';

遇到的问题:执行授权会报错:没有权限授权。 是因为mysql8改变了授权机制,在主数据库把test的host改成%,在执行授权命令就可以了。授权的时候,为了方便后面测试,最后给test测试用户插入的权限,后面可以直接用Navicat客户端在线建表测试主从复制。

6.查看主数据库的状态: 

7.记住上面两个参数,File和position在从数据库会设置用到这两个参数。

8.进入从数据库。

9.执行命令:

执行命令:change master to master_host='192.168.99.100',master_user='test',master_password='123456',master_log_file='bin_log.000002',master_log_pos=7052,master_port=3307;

10.启动命令:start slave;

11.查看状态:show slave status \G;

上面slave_IO_Running:YES SLAVE_SQL_RUNNING:YES 表示运行成功。

12.登录主数据库和从数据库:

在主数据库建一个test数据库

看一下,在从数据库有没有同步,刷新一下:

可以看到自动同步了相同的数据库。插入一条数据看看效果:

大功告成,收工

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值