Mysql-基于docker安装主从集群

文章详细介绍了如何在Docker环境下配置MySQL的主从同步,包括设置主服务的binlog参数,通过mysqldump导出数据,然后在从服务上配置复制。重点强调了主从集群的搭建步骤,如设置replicationslave账号,获取主服务的binlog信息,以及启动和监控从服务的状态。
摘要由CSDN通过智能技术生成
  • 说明

    • 从服务同步主服务的数据只有binlog中的数据。如果配置了expire_logs_days设置了binlog删除时间的话。需要先使用mysqldump命令和mysql导入sql文件命令手动完成数据同步后再执行start slave命令组建主从集群。
  • 安装主服务

    • 准备环境
    mkdir -p /home/mysql/{data,logs,conf} && vi /home/mysql/conf/my.cnf
    
    [mysqld]
    datadir = /var/lib/mysql
    port=3306
    server-id = 1
    max_connections=1000
    character-set-server = utf8mb4
    collation-server = utf8mb4_general_ci
    init_connect='SET NAMES utf8mb4'
    lower_case_table_names = 1
    key_buffer_size=16M
    max_allowed_packet=8M
    #[必须]启用二进制日志
    log-bin=mysql-bin
    relay-log=mysql-relay-bin
    # 自动递增主键首次偏移量
    auto-increment-offset=1
    # 自动递增主键每次增加值,默认是1
    auto-increment-increment=2
    # binlog的格式:STATEMENT,ROW,MIXED;STATEMENT基于sql,ROW基于数据行,MIXED前面2者混合,选择最优
    binlog_format=mixed
    # 自动过期清理binlog。默认0天,即不自动清理,这里修改成10天
    expire_logs_days=10
    
    • 启动mysql
    docker run -d \
      -p 3306:3306 \
      --name=mysql-master \
      -v /home/mysql/conf:/etc/mysql/conf.d \
      -v /home/mysql/logs:/logs \
      -v /home/mysql/data:/var/lib/mysql \
      -e MYSQL_ROOT_PASSWORD=123456 \
      mysql:5.7
    
    • 进入容器并进入mysql服务
    docker exec -it mysql-master /bin/bash
    
    mysql -uroot -p
    
    • 设置从服务账号密码
    GRANT REPLICATION SLAVE ON *.* to 'slave01'@'%' identified by 'Root@123456';
    
    • 查询主服务信息
    show master status;
    
  • 安装从服务

    • 切换到从服务器
    • 准备环境
    mkdir -p /home/mysql/{data,logs,conf} && vi /home/mysql/conf/my.cnf
    
    [mysqld]
    datadir = /var/lib/mysql
    port=3306
    server-id = 2
    max_connections=1000
    character-set-server = utf8mb4
    collation-server = utf8mb4_general_ci
    init_connect='SET NAMES utf8mb4'
    lower_case_table_names = 1
    key_buffer_size=16M
    max_allowed_packet=8M
    # 忽略mysql、information_schema库下对表的操作
    replicate-wild-ignore-table=mysql.%
    replicate-wild-ignore-table=information_schema.%
    # 默认的情况下mysql级联复制是关闭的;
    log-slave-updates=on
    # 复制过程中,有任何错误,直接跳过
    slave-skip-errors=all
    
    • 启动命令
    docker run -d \
      -p 3306:3306 \
      --name=mysql-slave \
      -v /home/mysql/conf:/etc/mysql/conf.d \
      -v /home/mysql/logs:/logs \
      -v /home/mysql/data:/var/lib/mysql \
      -e MYSQL_ROOT_PASSWORD=123456 \
      mysql:5.7
    
    • 进入容器并进入mysql服务
    docker exec -it mysql-slave /bin/bash
    
    mysql -uroot -p
    
    • 设置master服务信息
      • 注意修改master_log_file为master的binlog日志文件,master_log_pos为日志位置,上文中查询主状态的信息中有,建议使用。
      • 下文文中有一个错误,master_log_file最后有一个空格,删除后正常。
    change master to master_host='192.168.127.140',master_port=3306,master_user='slave01',master_password='Root@123456',master_log_file='mysql-bin.000003 ',master_log_pos=440;
    
    start slave;
    

    关闭主从复制的命令是stop slave;

    • 查看slave状态
    show slave status\G;
    

    响应中如下内容表示连接成功。

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    
  • 验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田秋浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值