windows docker 创建mysql主从 容器创建mysql主从

您所在的位置:网站首页 docker容器日志位置 windows docker 创建mysql主从 容器创建mysql主从

windows docker 创建mysql主从 容器创建mysql主从

2023-06-08 10:00| 来源: 网络整理| 查看: 265

1. docker命令新建mysql-master,只是简单测试,没有设置映射,只是验证主从连接,需要可自行添加

docker run --restart=always --name mysql-master --privileged=true -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

2. 进入master容器命令,复制配置文件

#1. 进入容器 docker exec -it mysql-master /bin/bash #2. 查看mysql在哪里,复制出来,改好在复制进去 ls cd /etc ls

 3. 由容器内复制到宿主机命令:

docker cp mysql-master:/etc/my.cnf D:/docker-data

4. 使用notepad++ 配置下mysql-master 的my.cnf配置文件

#binlog文件名 log-bin=mysql-bin #忽略库 binlog-ignore-db=mysql #同步库,不要先创建 binlog-do-db=syncdb #binlog格式 binlog_format=STATEMENT #需要备份的数据库名 ,需要另起一行添加,用,分割不能识别多个库 binlog-do-db=test #例 binlog-do-db=test2 #若涉及及同步函数或者存储过程需要配置,否则主备会产生异常不能同步 log_bin_trust_function_creators=TRUE # binlog日志保留的天数,清除超过10天的日志 # 防止日志文件过大,导致磁盘空间不足 expire-logs-days=10

5. windows 进入在配置文件的文件夹下,输入下面的复制命令,将原始配置文件覆盖。切记,先cd 到windows的配置文件夹下再输入命令:

docker cp my.cnf mysql-master:/etc/ #复制进入后,进入容器 docker exec -it mysql-master /bin/bash # cd /etc # 查看是否覆盖成功 cat my.cnf # 成功退出 exit # 重启mysql-master docker restart mysql-master

 6. 在master中创建用户并授权

    创建一个“slave”的用户(密码:root)用来同步     先进入master内部

docker exec -it mysql-master bash #登录mysql mysql -uroot -proot #创建用户 create user 'slave'@'%' identified by 'root'; #授权 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; #mysql8需要执行额外的操作 alter user 'slave'@'%' identified with mysql_native_password by 'root'; flush privileges;

以上命令,我使用navicat 控制台输入的,一样的效果,也可以登录mysql 执行

 查看状态: 成功如下  position记得查看数字,下面命令配置会用到

#show master status; mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 1142 | syncdb | mysql | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)

master配置完毕,现在设置mysql-slave

1. 创建slave服务 并设置端口为3307

docker run --restart=always --name mysql-slave --privileged=true -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0

2. 同理配置my.cnf,改好配置后,复制进容器,覆盖容器的配置文件 并重启

[mysqld] server_id=102 #中继日志名 relay_log=mysql-relay

3.重启slave

docker restart mysql-slave

4. 另外还需要验证服务之间的网络连接是否畅通,进入mysql-slave容器

# 登陆 docker exec -it mysql-slave bash #1. 连接mysql mysql -uroot -p123456 -h 172.17.0.2

 连接成功示例, 如果不成功则检查网络是否配置错误,docker网络配置,服务器防火墙配置,阿里控制台端口配置等 再仔细检查:

 5. 继续配置mysql-slave ,navicat 登陆mysql-slave输入配置命令:

# 这个也需要看看是否需要修改 比如master_log_pos=1142 ,master_password=root密码 change master to master_host='172.17.0.2',master_user='slave',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=1142;

6.启动slave, 在mysql-slave输入命令:

#mysql下 start slave;

7. 查看状态:

#mysql下 show slave status;

8. 测试是否成功,在master新建数据库syncdb 并建表,

从库也看到了数据

 

错误:

 

如果出现同库不能同步情况,可以试试重置,并开启:

reset slave; start slave;

这个没用过,重置主从连接:

stop slave; reset master;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3