05.`Ubuntu18.04`下实现`mysql`主从复制

1. 环境准备
  1. 创建docker-compose.yml

    • vim docker-compose.yml
    version: "3"
    services:
      mysql-master:
        image: mysql:5.7.31
        restart: always
        hostname: mysql-master
        container_name: mysql-master
        ports:
          - 3317:3306
        environment:
          MYSQL_ROOT_PASSWORD: root
          TZ: Asia/Shanghai
        volumes:
          - ./mysql/mster/data:/var/lib/mysql
          - ./mysql/master/mysql/log:/var/log/mysql
        command:
          --server_id=100
          --log-bin=mysql-master-bin
          --sync_binlog=1
          --binlog-ignore-db=mysql
          --binlog_format=mixed
          --expire_logs_days=7
          --default-authentication-plugin=mysql_native_password
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
        links:
          - mysql-slave-read
      mysql-slave-read:
        image: mysql:5.7.31
        restart: always
        hostname: mysql-slave-read
        container_name: mysql-slave-read
        ports:
          - 3318:3306
        environment:
          MYSQL_ROOT_PASSWORD: root
          TZ: Asia/Shanghai
        volumes:
          - ./mysql/slave/data:/var/lib/mysql
          - ./mysql/slave/log:/var/log/mysql
        command:
          --server_id=200
          --read_only=1
          --binlog-ignore-db=mysql
          --default-authentication-plugin=mysql_native_password
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
    
    • server_id一般设置为IP,在一个局域网内要唯一

这几个mysql的名称尽量一致

这几个名称尽量一致

  1. 运行docker-compose.yml
    • docker-compose up -d

    • docker ps -a

      运行并查看容器

2. 在Navicat中配置主从复制
  1. 在主数据库master中操作

    1. 创建一个用于同步的用户,赋予REPLICATION SLAVE 的权限

      • grant replication slave on *.* to 'slave'@'%' identified by 'slave';
        • 'slave'@'%'任意地址的名为slave的用户
        • identified by 'slave'密码为slave

      创建一个用户

    2. 锁住master数据库,防止写入数据

      • flush tables with read lock;

      锁住master数据库

    3. 查看master状态,记录 File 和 Positon 的值

      • show master status;

      查看master状态

  2. 配置slave从数据库

    1. 先停止主从复制

      • stop slave;

      停止主从复制

    2. 注册主从复制相关信息

      CHANGE MASTER TO
          MASTER_HOST='mysql-master',
      	MASTER_USER='slave',
          MASTER_PASSWORD='slave',
          MASTER_LOG_FILE='mysql-master-bin.000003',
          MASTER_LOG_POS=430;
      
      • MASTER_HOST的值是环境准备时docker-compose.yml主数据库的名字mysql-master
        主数据库的名字

      • MASTER_LOG_FILE的值就是查看master状态的File

      • MASTER_LOG_POS的值就是查看master状态的Positon

      注册主从复制相关信息

    3. 开启主从复制

      • start slave;

      开启主从复制

    4. 查看slave状态,是否设置主从复制成功

      • show slave status

      查看slave状态

  3. 解锁master主数据库

  • unlock tables;

    解锁master数据库

  1. master端测试是否成功

    • create database test character set utf8
    • 刷新两个连接

    测试主从复制

    • drop database test
    • 刷新两个连接

    测试主从复制

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值