docker部署mysql主从复制
一、拉取mysql镜像
docker pull mysql/mysql-cluster
docker tag mysql/mysql-cluster mysql-cluster
二、创建目录和配置文件
1、创建目录
# 创建master主节点目录 mkdir /home/mysql/cluster/master cd /home/mysql/cluster/master mkdir conf data files log # 创建slave1从节点目录 mkdir /home/mysql/cluster/slave1 cd /home/mysql/cluster/slave1 mkdir conf data files log # 创建slave2从节点目录 mkdir /home/mysql/cluster/slave2 cd /home/mysql/cluster/slave2 mkdir conf data files log # 创建slave3从节点目录 mkdir /home/mysql/cluster/slave3 cd /home/mysql/cluster/slave3 mkdir conf data files log
2、创建master主配置文件
[mysqld] # 主服务器唯一ID server-id=0 # 开启二进制日志 log-bin=mysql-bin # 设置忽略的数据库 # binlog-ignore-db=mysql # 设置日志使用内存大小 binlog_cache_size=1M # 设置日志格式 binlog_format=statement character-set-server=utf8mb4 collation-server=utf8mb4_general_ci default-time_zone = '+8:00' log_timestamps=SYSTEM default-authentication-plugin=mysql_native_password
3、创建slave从配置文件
[mysqld] # 从服务器唯一ID server-id=1 # 指定不需要同步的数据库名称 #binlog-ignore-db=mysql # 开启二进制日志功能,以备slave作为其他数据库实例的master时使用 log-bin=mall-mysql-slave1-bin # 设置二进制日志使用内存大小(事务) binlog_cache_size=1M # 设置日志格式 binlog_format=statement # relay_log 配置中继日志 relay_log=mall-mysql-relay-bin # log_slave_updates 表示 slave 将复制时间写进自己的二进制日志 log_slave_updates=1 ## slave设置为只读 (具有super权限的用户除外) read_only=1 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci default-time_zone = '+8:00' log_timestamps=SYSTEM default-authentication-plugin=mysql_native_password
三、创建docker容器
1、创建主机容器
docker run -d \ -p 3307:3306 \ -v /home/mysql/cluster/master/conf:/etc/mysql/conf.d \ -v /home/mysql/cluster/master/data:/var/lib/mysql \
-v /home/mysql/cluster/master/log:/var/log/mysql \
-v /home/mysql/cluster/master/files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ --network mynet \ --name mysql-master \ mysql
2、启动主机
start master;
3、创建从机容器
docker run -d \ -p 3308:3306 \ -v /home/mysql/cluster/slave1/conf:/etc/mysql/conf.d \ -v /home/mysql/cluster/slave1/data:/var/lib/mysql \ -v /home/mysql/cluster/slave1/log:/var/log/mysql \ -v /home/mysql/cluster/slave1/files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ --network mynet \ --name mysql-slave1 \ mysql
四、从机关联到主机
1、进入主机查看主机mysql的同步文件
show master status
2、进入从机关联主机
CHANGE MASTER TO MASTER_HOST='192.168.100.20', MASTER_USER='root', MASTER_PASSWORD='root', MASTER_PORT=3307, MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=156;
3、启动从机
start slave;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)