美文网首页
mysql主从复制

mysql主从复制

作者: 油多坏不了菜 | 来源:发表于2019-01-03 11:05 被阅读0次

    原理

    主从复制的具体原理可以参考其他理论博客

    具体步骤

    • 主库和从库初同步(复制)
      对于线上的mysql服务器主从配置,可以用xtrabackup复制一个初始版本(并记录当前版本包含的最后一条数据位置pos, 以后插入的数据的pos都比当前pos大),然后在从库完全拷贝这么一个初始版本(datadir目录为空);而对于未上线的mysql配置,可以直接用mysqldump一个初始版本进行同步即可。
    • 主库新建可用于复制的用户
      grant REPLICATION SLAVE ON *.* to repl@'192.10.13.111' identified by 'iambeautiful'
    • 主库配置文件参考
    [mysql]
    default-character-set=utf8 
    [mysqld]
    port = 3306 
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    log-bin=binlog  ##开启log-bin
    binlog_format=mixed ##日志格式
    skip_name_resolve=ON
    innodb_file_per_table=ON
    character_set_server=utf8
    server-id=1   ##server id
    binlog-do-db=jhzf_prod_db ##复制的库
    binlog-ignore-db=mysql ##不复制的库
    
    • 从库配置
    [mysqld]
    user=zfwg
    #replication about
    server_id=2
    datadir=/usr/local/mysql/data
    binlog-ignore-db=mysql
    log-bin=binlog
    binlog_format=mixed
    skip_name_resolve=ON
    innodb_file_per_table=ON
    replicate-do-db=jhzf_prod_db
    replicate-ignore-db=mysql
    slave-skip-errors=1007,1008,1053,1062,1213,1158,1159
    relay-log=relay-bin              ##中继日志
    relay-log-index=relay-bin.index
    relay-log-info-file=relay-log.info
    [mysql]
    auto-rehash
    default-character-set=utf8
    
    • 设置从库复制主库
    change master to   
    master_host='192.10.13.112',
    master_user='repl',
    master_password='iambeautiful',
    master_log_file='binlog.000002',  
    ##logfile与log_pos的获取,可在主库上 show master status(未使用库);
    ##或者通过xtrabackup 复制的话,为xtrabackup备份文件里的log_file与log_pos.
    master_log_pos=795; 
    
    • 从库开启复制
      start slave;
    • 查看复制是否成功
    show slave status\G; 
    ## 
     Slave_IO_State: Waiting for master to send event
     Master_Host: 192.10.13.112
     Master_User: repl
     Master_Port: 3306
     Connect_Retry: 60
     Master_Log_File: binlog.000002
     Read_Master_Log_Pos: 1116   ##已经复制到的log_pos
     Relay_Log_File: relay-bin.000002
     Relay_Log_Pos: 638
     Relay_Master_Log_File: binlog.000002
     Slave_IO_Running: Yes  ## IO和SQL都为YES时代表正常,如果不正常,可以查看mysql错误日志,进行定位。
     Slave_SQL_Running: Yes
     Replicate_Do_DB: jhzf_prod_db
     Replicate_Ignore_DB: mysql
    

    tips

    • 主库 3306端口防火墙策略。
    • 通过数据库错误日志,进行问题定位。

    相关文章

      网友评论

          本文标题:mysql主从复制

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