• mysql8.0 搭建主从同步(附带部分错误记录)


    一、安装mysql8.0

    1.分别在主机(master)和从机(slave)安装mysql8.0.21(我这里是在docker容器中安装)

     https://www.cnblogs.com/xiaokangk/p/13474184.html

    二、主机(master)创建数据同步用户master01

      1、进入mysql容器   

        docker ps 

        docker exec -it mysql8 bash

      2、登录mysql

        mysql -uroot -p

      3、创建master01,密码123456

        CREATE USER 'master01'@'%' IDENTIFIED BY '123456';

        alter user 'master01'@'%' identified with mysql_native_password BY '123456';

      4、授予master01 `REPLICATION SLAVE`权限和`REPLICATION CLIENT`权限,用于在`主` `从` 数据库之间同步数据

        GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

        注:授权全部权限 (GRANT ALL PRIVILEGES  ON *.* TO 'master01'@'%';)

      5、刷新,使其操作生效

        FLUSH PRIVILEGES;

    三、关联master和slave

      1、master服务器中查看master状态(我这里是直接navicat连接后执行的sql语句)

        show master status;

      

       注:FIle,Position是等会slave中会用到的配置,在slave配置未完成前,最好不要操作master数据库,否则这两个值会发生变化

      2、在slave服务器中的配置(我这里还是直接用navicat连接后执行的sql语句)

    • master_host :master服务器地址
    • master_port :端口号
    • master_user :用于数据同步的用户(之前在master中创建授权的用户)
    • master_password :用于同步用户的密码
    • master_log_file :指定slave从哪个日志文件开始复制数据,即之前提到的File字段值
    • master_log_pos :从哪个Position开始读,即之前master中的Position字段值,0则是从头开始完整的拷贝master库
    • master_connect_retry :连接失败时重试的时间间隔,默认是60秒

      change master to master_host='10.103.99.85',master_port=13306, master_user='master01', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos= 5430904;

      start slave; (开始slave)
           show slave status;(查看状态,当Slave_IO_Running 和Slave_SQL_Running都为yes的时候,配置完成)

         

      其它语句:stop slave; RESET slave;

    四、配置中遇见Slave_IO_Running和Slave_SQL_Running不为yes的错误

      ① Slave_IO_Running为connecting

       这个错误主要是在创建容器的时候挂载目录的时候没有把主机的my.cnf与容器中mysql中的my.cnf做映射,导致我在主机中配置的my.cnf里的service_id没起作用,导致service_id一致

        注:查看service_id的语句为show variables like 'server_id';

       ②Slave_SQL_Running为NO

       这个错误时再同步的时候报错:

        Could not execute Update_rows event on table sewage_ga.qms_device_run_log; Can't find record in 'qms_device_run_log', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log     binlog.000042, end_log_pos 1889, Error_code: MY-001032

        目前解决的方法是在从库中my.cnf中配置跳过1032的错误(slave-skip-errors = 1032),至于为啥报错,现在还没去寻找,后续会补上

    原文:https://zhengqing.blog.csdn.net/article/details/104679425

  • 相关阅读:
    php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
    Linux 文件系统IO性能优化【转】
    MOOC Linux内核之旅小结【转】
    python实战===教你用微信每天给女朋友说晚安【转】
    wxpy: 用 Python 玩微信【转】
    AMBA总线协议AHB、APB、AXI对比分析【转】
    高手进阶,终极内存技术指南——完整/进阶版 II (转)【转】
    ARMCC和GCC编译ARM代码的软浮点和硬浮点问题 【转】
    程序员必知之浮点数运算原理详解【转】
    Hash算法【转】
  • 原文地址:https://www.cnblogs.com/xiaokangk/p/14338223.html
Copyright © 2020-2023  润新知