• Mysql主从同步


    以192.168.99.109(主)和192.168.99.110(从)两机测试

    一,主服务器

      ① 设置主服务器防火墙

        以win10为列:

          设置->网络和Internet->windows防火墙->高级设置->入站规则&出站规则(分别新建)->新建规则

                  ->端口->TCP & 特定本地端口 3306->允许链接->名称mysqlport->完成

      ②配置my.inimy.conf --- 既mysql配置文件

    ;实时同步配置
    log-bin=C:/mysql/loges
    ;本机id(通常以本机ip尾数命名,所有主从不能存在相同) server
    -id=109 ;需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可(此次以test数据库为例) binlog-do-db = test ;以下参数虽然不知道是什么,但是参考了很多资料有填写的 ;这个参数一定要加上,否则不会给更新的记录些到二进制文件 里 log-slave-updates=1 ;每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去 innodb_flush_log_at_trx_commit=1 ;跳过错误,继续执行复制操作(可选) slave-skip-errors=1 ;主服务器最重要的设置是sync_binlog,使每次提交事务时把二进制日志内容同步到磁盘,即使服务器崩溃也会 sync_binlog= 1 binlog_checksum=crc32 ;混合模式复制 binlog_format=MIXED ;binlog过期清理时间 expire_logs_days=7 ;binlog每个日志文件大小 max_binlog_size=20M ;禁止域名解析,根据日志错误决定是否打开此项,本人报错因此打开了 ;skip-name-resolve

      ③ 重启sql server

      ④ mysql命令行

        1.创建slave等级用户( grant replication slave ,replication client on *.* to '用户名'@'slave从ip,%为通配符表示任意' identified by "密码"; )

          mysql> grant replication slave ,replication client on *.* to 'rep'@'192.168.99.%' identified by "111";

        2. 清空日志索引文件

            mysql>  reset slave;

        1. 锁表,锁定数据库为只读,确保数据一致性

            mysql>flush tables with read lock;

        2. 查看主机状态

            mysql> show master status;

            记录下file字段,和position字段(我的值为:file->loges.000004   pos->154)

        4.前去配置从服务器

        5.最后开锁

            mysql> unlock tables;

    二,从服务器

      ①按照之前一样设置防火墙

      ②配置配置my.ini或my.conf 

    server-id=110
    log-bin="C:/mysql/loges"
    sync_binlog=1
    replicate-do-db=test
    replicate-wild-do-table=test.%
    
    slave-skip-errors=all
    slave-net-timeout=60
    ;混合模式复制
    binlog_format=MIXED
    ;binlog过期清理时间
    xpire_logs_days=7
    ;binlog每个日志文件大小
    max_binlog_size=20M
    
    ;skip-name-resolve

      ③重启sql server

      ④ mysql命令行

        mysql> reset slave;

        mysql> stop slave;

        以下分别为:主机ip,用户,密码,之前查询的master status->file & position

        mysql> CHANGE MASTER TO

          ->MASTER_HOST='192.168.99.109',

          ->MASTER_USER='rep',

          ->MASTER_PASSWORD='111',

          ->MASTER_LOG_FILE='loges.000004',

          ->MASTER_LOG_POS=154;

        mysql>start slave;

        mysql> show slave status;

            打印slave状态

          其中Slave_IO_Runing和Slave_SQL_Runing状态均为YES则开启同步成功

                * Slave_IO_Runing:connecting 可能情况主从服务器ping不通,可能是change master to参数有误(其他未遇到过)

    三 ,如果不能同步,则分别查看主从服务器sql日志,进行排错

  • 相关阅读:
    LeetCode第[66]题(Java):Plus One
    LeetCode第[62]题(Java):Unique Paths 及扩展
    localhost不能访问127.0.0.1可以访问的原因以及解决办法
    LeetCode第[56]题(Java):Merge Intervals
    LeetCode第[55]题(Java):Jump Game
    LeetCode第[54]题(Java):Spiral Matrix
    LeetCode第[53]题(Java):Maximum Subarray
    LeetCode第[50]题(Java):Pow(x, n)
    LeetCode第[49]题(Java):Group Anagrams
    Keras 资源
  • 原文地址:https://www.cnblogs.com/wannian/p/10058699.html
Copyright © 2020-2023  润新知