在docker上mysql主从复制的搭建

该文详细介绍了如何在Docker环境下设置MySQL的主从复制。首先,创建主服务器容器实例,配置my.cnf文件,然后创建数据同步用户。接着,建立从服务器容器实例,同样配置my.cnf文件,并在从库中设定主从复制参数。最后,测试主从同步功能,确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker mysql主从复制的搭建
    1.新建主服务器容器实例3307
    
    docker run -d -p 3307:3306  --privileged=true \
    -v /mydata/mysql-master/log:/var/log/mysql \
    -v /mydata/mysql-master/data:/var/lib/mysql \
    -v /mydata/mysql-master/conf:/etc/mysql/conf.d    \
    -e MYSQL_ROOT_PASSWORD=root \
     --name mysql-master mysql:5.7
    
    2.进入/mydata/mysql-master/conf目录下新建my.cnf 
    
    [mysqld]
    server_id=101
    binlog-ignore-db=mysql
    log-bin=mall-mysql-bin
    binlog_cache_size=1M
    binlog_format=mixed
    expire_logs_days=7
    slave_skip_errors=1062
    
    3.修改完配置后重启master实例
    
    docker restart mysql-master
    
    4.进入mysql-masetr容器
    docker  exec -it mysql-master /bin/bash 
    mysql -uroot -p123456
    
    5.master容器实例内创建数据同步用户
    create user 'slave'@'%' identified by '123456';
    grant replication slave,replication client on *.* to 'slave'@'%';
    
    
    6.新建从服务器容器实例3308
    docker run -d -p 3308:3306 --name mysql-slave \
    -v /mydata/mysql-slave/log:/var/log/mysql \
    -v /mydata/mysql-slave/data:/var/lib/mysql \
    -v /mydata/mysql-slave/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=123456  \
    mysql:5.7
    
    7.进入/mydata/mysql-slave/conf目录下新建my.cnf
    vim my.cnf
    [mysqld]
    ## 设置server_id,同一局域网中需要唯一
    server_id=102
    ## 指定不需要同步的数据库名称
    binlog-ignore-db=mysql  
    ## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
    log-bin=mall-mysql-slave1-bin  
    ## 设置二进制日志使用内存大小(事务)
    binlog_cache_size=1M  
    ## 设置使用的二进制日志格式(mixed,statement,row)
    binlog_format=mixed  
    ## 二进制日志过期清理时间。默认值为0,表示不自动清理。
    expire_logs_days=7  
    ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
    ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
    slave_skip_errors=1062  
    ## relay_log配置中继日志
    relay_log=mall-mysql-relay-bin  
    ## log_slave_updates表示slave将复制事件写进自己的二进制日志
    log_slave_updates=1  
    ## slave设置为只读(具有super权限的用户除外)
    read_only=1
    
    [mysqld]
server_id=102
binlog-ignore-db=mysql  
log-bin=mall-mysql-slave1-bin  
binlog_cache_size=1M  
slave_skip_errors=1062  
relay_log=mall-mysql-relay-bin  
log_slave_updates=1      
read_only=1
expire_logs_days=7
binlog_format=mixed
    
    8.修改完配置后重启slave实例
    docker restart mysql-slave 
    
    
    9.在主数据库中查看主从同步状态
    show master status;
    mall-mysql-bin.000001 |      617 |
    
    10.进入mysql-slave容器
    docker exec -it mysql-slave /bin/bash
    
    11.在从数据库中配置主从复制
    change master to master_host='192.168.118.10',
    master_user='slave', 
    master_password='123456',
    master_port=3307, 
    master_log_file='mall-mysql-bin.000001',
    master_log_pos=617, 
    master_connect_retry=30;
    
    12.在从数据库中查看主从同步状态
    show slave status\G;
    
    13.在从数据库中开启主从同步
    start slave;
    
    14.查看从数据库状态发现已经同步
    show slave status\G;
    
    15.主从复制测试
        15.1 主机新建表-使用库-新建表-插入数据
        create database db01;
        use db01;
        create table t1(id int,name varchar(20));
        insert into t1 values(1,'zzhang');
        select * from t1;
            
        15.2 从机使用库-查看记录
        use db01;
        select * from t1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值