docker安装mysql主从
启动主库:
1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
启动从库:
2.docker run --name slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
--name 为容器指定名称,这里是master
-p 将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口
-e 设置环境变量,这里是指定root账号的密码为root
-d 后台运行容器,并返回容器ID
docker 会自动去拉取对应版本的镜像
3.docker ps -a
查看容器是否正常运行
4.连接master 执行以下sq 授权复制权限的账号:
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave'; SHOW GRANTS FOR 'slave'@'%';
执行结果:
修改数据库配置文件(一下操作看懂之后 也可以直接去容器操作)
5.mkdir /usr/local/mysql/master
6.mkdir /usr/local/mysql/slave
7.docker cp master:/etc/mysql/my.cnf /usr/local/mysql/master/my.cnf
8.docker cp slave:/etc/mysql/my.cnf /usr/local/mysql/slave/my.cnf
9.vi /usr/local/mysql/master/my.cnf
添加以下两行配置项:
#开启二进制日志,设置server-id,server-id值唯一
log-bin=mysql-bin
server-id=1
10.vi /usr/local/mysql/slave/my.cnf
添加以下两行配置项:
#开启二进制日志,设置server-id,server-id值唯一
log-bin=mysql-bin
server-id=2
11.docker cp /usr/local/mysql/master/my.cnf master:/etc/mysql/my.cnf
12.docker cp /usr/local/mysql/slave/my.cnf slave:/etc/mysql/my.cnf
重启两个容器: docker restart master
docker restart slave
13.连接slave 执行一下语句设置主从复制:
change master to master_host='宿主机ip',master_port=3306,master_user='slave',master_password='slave'; start slave; show slave status;
如果Slave_IO_State:Connecting to master 那说明配置有问题 可能是master的host 账号 密码配置错了 检查一下就重新设置一下
重新设置需先停掉从库运行:stop slave;
测试同步:在master 新建库 新建表 然后去slave刷新一下看 是否同步成功
好了 基本的mysql主从环境已经搭建完成,接下来就可以在业务上搞读写分离了 哈哈