网站建设费能抵扣吗,php网站数据库修改,wordpress minty,自适应网站会影响推广系统#xff1a;Macbook M1 镜像版本#xff1a;mysql:5.7 如果是要查 slave连接不上 master的问题#xff0c;可以直接跳到文章末尾踩坑处
准备工作
拉取镜像
docker pull mysql:5.7本地数据卷挂载 因为mysql不挂载的话#xff0c;重启丢失数据#xff0c;所以在本地创… 系统Macbook M1 镜像版本mysql:5.7 如果是要查 slave连接不上 master的问题可以直接跳到文章末尾踩坑处
准备工作
拉取镜像
docker pull mysql:5.7本地数据卷挂载 因为mysql不挂载的话重启丢失数据所以在本地创建三个空的文件夹conf、data、log即可 部署mysql_master主
运行master容器 不加 --platform linux/amd64会导致出现 The requested images platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested的提示 容器虽然可以通过Docker Desktop手动启动但是总觉得这样不对然后谷歌问题之后看到这个篇文章https://stackoverflow.com/questions/72152446/warning-the-requested-images-platform-linux-amd64-does-not-match-the-detecte后说加了这个就可以不报错 docker run --platform linux/amd64 -p 3309:3306 --name mysql_master \-v /Users/miaomk/docker/volume/mysql/cluster/_master/log:/var/log/mysql \-v //Users/miaomk/docker/volume/mysql/cluster/_master/data:/var/lib/mysql \-v /Users/miaomk/docker/volume/mysql/cluster/_master/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORDmaster123 \-d mysql:5.7查看容器是否启动成功
docker ps测试数据库连接 配置mysql_master挂载位置的my.cnf
[mysqld]
#要唯一
server_id100
#开启bin log
log-binmaster-mysql.bin
binlog_formatmixed
expire_logs_days7
#跳过主健重复
slave_skip_errors1062重启mysql_master容器
docker restart mysql_masterdocker ps6.进行mysql_master容器创建slave用户并赋予对应的权限便于复制
#进入容器
docker exec -it mysql_master /bin/bash
#进入mysql
mysql -u root -p
# 5.7 可以创建用户和授权都一起处理但是8.0以上得分开写
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO Slave1% identified by Slave123456;测试Slave1用户是否可以使用
SELECTUSER,HOST,account_locked,password_expired
FROMmysql.USER;部署mysql_salve从
运行slave容器并查看状态
docker run --platform linux/amd64 -p 3310:3306 --name mysql_slave \-v /Users/miaomk/docker/volume/mysql/cluster/_slave/log:/var/log/mysql \-v //Users/miaomk/docker/volume/mysql/cluster/_slave/data:/var/lib/mysql \-v /Users/miaomk/docker/volume/mysql/cluster/_slave/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORDroot \-d mysql:5.7配置mysql_salve挂载位置的my.cnf
[mysqld]server_id102log-binmaster-mysql-slave.bin
binlog_cache_size1M
binlog_formatmixed
expire_logs_days7
#跳过主健重复
slave_skip_errors1062
relay_logmaster-mysql-relay-bin
#将复制事件写进自己的二进制日志
log_slave_updates1
#replica 设置为只读(具有super权限的用户除外)
read_only1重启mysql_slave容器并进入mysql_master容器内部查看对应内容 docker restart mysql_slavedocker ps#进入mysql_master容器内查询master内容
docker exec -it mysql_master /bin/bashmysql -uroot -pshow master status;File和 Position都是我们后面要在mysql_slave容器中需要用到的
查询本机的ip
ifconfig进入mysql_slave容器内开启slave
docker exec -it mysql_slave /bin/bashmysql -uroot -p#设置master信息
CHANGE MASTER TO master_host 192.168.124.3,master_user Slave1,master_password Slave123456,master_port 3309,master_log_file mysql-master.000001,master_log_pos 618,master_connect_retry 30;#查询slave状态
show slave status \G#开启slave
start slave;#开启slave后查看状态
show slave status \G命令说明:
master_hostMaster 的地址看别人的文章里这里说的都是指的容器的独立 ip, 可以通过 docker inspect --format‘{{.NetworkSettings.IPAddress}}’ 容器名称 | 容器 id 查询容器的 ip但是我自己实验下来发现如果用这个host的话mysql_slave里的slave连不上master看到一篇文章发现用的本机IP实验后发现对我可行大家可以参考一下
master_portMaster 的端口号指的是容器的端口号
master_user用于数据同步的用户
master_password用于同步的用户的密码
master_log_file指定 Slave 从哪个日志文件开始复制数据即上文中提到的 File 字段的值
master_log_pos从哪个 Position 开始读即上文中提到的 Position 字段的值
master_connect_retry如果连接失败重试的时间间隔单位是秒默认是 60 秒 这样就代表上述的slave能连上master了 测试在主库mysql_master中建库建表插入数据再去从库中查看验证主从同步
最后slave无法连接上master的踩坑分享
1. File和 Position设置不对需要重新去mysql_master里面 show master status;查看
2. error connect to master 网络不通 检查 ip, 端口可能跟我一样是需要本机的ip而不是容器的ip或者127.0.0.1或者localhsot 密码不对 检查是否创建用于同步的用户和用户密码是否正确
文章参考https://blog.csdn.net/csdnfanguyinheng/article/details/123239722