首先你要安装docker 并且pull一个MySQL,docker这里不做多说
注意mysql版本一定要够 我这里也用是5.7
#docker pull mysql:5.7 拉一个5.7的镜像
docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123345 -d mysql:5,7
docker跑容器 这里容器3339端口映射主机3306端口(容器端口这大家随意哈)--name起个容器名 (你喜欢master也一样)
注意:-e后面是设置初始化密码的 如果不打 你无法使用Navicate工具远程链接数据库;
从数据库同理 docker run -p 3340:3306 --name myslave -e MYSQL_ROOT_PASSWORD=123345 -d mysql:5,7
成功后docker ps -a看一下所有容器(不带-a是查看这个在运行的容器);
然后用navicate进行连接 成功后:
建议用xshell ,本人宝塔终端敲卡的差点当场去世
docker exec -it 5b4f9e344d91 /bin/bash;
进入容器内 5b4f9e344d91是容器ID 不要搞错
如图进入后找到my.cnf文件修改配置,但是由于是docker安装的 这里还需要安装一下vim;
直接装vim还会爆错 ,必须先更新一下;
apt-get update;更新
apt-get install vim;搞vim下来然后vim修改my.cnf文件(友情提示coder菜鸡 1.vim 文件名 2.i 3光标处输入4 敲esc按键后 :wq报存);
修改配置后 service mysql restart;重启mysql 但是重启会导致当前的docker容器停止,因为容器只有特么的mysql 停了就全听了这里好奇的可以自己去搜docker的运行机制;
再次运行容器 docker start mymysql ; 这里mymysql是我的容器名你喜欢容器ID也一样
mysql -u root -p 进入收据库终端 运行下面创建用户
create user 'slave'@'%' identified by '123456';
grant replication slave,replication client on *.* to 'slave'@'%';
这里有可能回报错 因为mysql已经有slave用户了;
================================分界线=====================================
这里同理去配置从数据库myslave的my.cnf文件
docker inspect --format='{{.NetworkSettings.IPAddress}}' mymysql
查看当前容器的ip地址,mymysql 注意是容器的 mysqlslave同理
进入查看主数据库mysql终端
输入show master status;
请记住这里 file的文件和位置下面要用到
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=50;
【
这里的坑说两句:
master_port:master端口号也是容器的端口
master_user:数据同步的用户
master_password:同步的用户的密码
master_log_file:指定 slave 从哪个日志文件开始复制数据,红框中 File 字段的值
master_log_pos: Position 字段的值
master_connect_retry:链接失败的重连时间,单位是秒,默认是60秒
这里千万不要有空行
】
然后在我们的从数据库mysql终端执行
start slave;开启主从模式
show slave status \G;查看状态
标红出都是YES就成功了
【这里有俩坑 如果两个参数都不是yes 查看 提示 Last_IO_Error: Got fatal error 1236 from master 如果后面提示 binlog 那八成是找不到主数据库的备份文件了
1.从数据库先stop slave;停止主从
2.去主数据库flush logs 更新日志,再show master status 查看file与postion
3.从数据 重新配置CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=577;
再重新start slave;开启主从;
4.从数据库show slave status\G;会有奇迹
在主数据库创建表同数据库就也会出现
】
这都解决不了问题 请自裁吧