美文网首页
MySQL主从复制

MySQL主从复制

作者: 王哈哈就很棒 | 来源:发表于2020-05-23 19:04 被阅读0次

    原理,待更新

    配置

    查看是否开启二进制日志

    show variables like '%log_bin%';
    

    主服务器master配置
    vim /etc/my.cnf

    server-id 要保证唯一,不能重复, 一般我们写服务器ip的最后一段

    log-bin=master-bin
    binlog_format=mixed
    server-id=1
    

    master其他可选配置

    
    binlog-do-db      二进制日志记录的数据库(多数据库用逗号,隔开)
    binlog-ignore-db 二进制日志中忽略数据库(多数据库用逗号,隔开)
    binlog-do-db=YYY 需要同步的数据库,不在内的不同步。(不添加这行表示同步所有数据库)
    
    binlog-ignore-db = mysql  这是不记录binlog,来达到从库不同步mysql库,以确保各自权限
    binlog-ignore-db = performance_schema
    binlog-ignore-db = information_schema
    

    从服务器slave配置
    vim /etc/my.cnf

    log-bin=slave-bin
    binlog_format=mixed
    server-id=2
    

    slave端其他可选配置

    replicate-do-db    设定需要复制的数据库(多数据库使用逗号,隔开)
    replicate-ignore-db 设定需要忽略的复制数据库 (多数据库使用逗号,隔开)
    replicate-do-table  设定需要复制的表
    replicate-ignore-table 设定需要忽略的复制表 
    replicate-wild-do-table 同replication-do-table功能一样,但是可以通配符
    replicate-wild-ignore-table 同replication-ignore-table功能一样,但是可以加通配符
    

    主服务器创建一个用户给从服务器用来共享主服务器的日志文件

    grant replication slave on *.* to 'slave'@'%' identified by 'Aa.bb9988';
    

    查看主服务器master的二进制文件名称以及当前的位置

    show master status;
    

    从服务器执行如下语句

    change master to 
    master_host='192.168.101.40', 
    master_user='slave',
    master_password='Aa.bb9988', 
    master_port=3306, 
    master_log_file='master-bin.000001', 
    master_log_pos=438;
    

    开启, 关闭,查看slave状态

    start slave;
    stop slave;
    show slave status \G
    

    其他 SQL语句

    grant all privileges on *.* to 'root'@'%' identified by 'Aa.bb9988';
    

    原理

    1. 主:binlog线程——记录下所有改变了[数据库](http://lib.csdn.net/base/mysql "MySQL知识库")数据的语句,放进master上的binlog中;
    
    2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;
    
    3. 从:sql执行线程——执行relay log中的语句;
    
    

    相关文章

      网友评论

          本文标题:MySQL主从复制

          本文链接:https://www.haomeiwen.com/subject/nwmlahtx.html