zoukankan      html  css  js  c++  java
  • mysql8.0 主从复制安装及配置

    原理:主库的所有变更操作(写入更新)都会视为事件,写入二进制日志文件中。从库通过读取主库的二进制日志文件,并在从库中执行这些事件,达到主从同步。

    准备两台服务器,分别在两台服务器进行以下配置:

    cd /etc/my.cnf.d
    vim mysql-server.conf

    主数据库配置核心部分

    #设置同步的binary log二进制日志文件名前缀,默认为binlog
    log-bin=mysql-bin
    #服务器唯一id,默认为1  主数据库和从数据库的server-id不能重复
    server-id=1      
    
    #需要复制的数据库
    binlog-do-db=test
    #过滤,也就是指定哪个数据库不用同步
    binlog-ignore-db=mysql
    #为每个session分配的内存,在事务过程中用来存储二进制日志的缓存
    binlog_cache_size=1M
    #主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一)
    binlog_format=row
    #设置二进制日志自动删除/过期的天数,避免占用磁盘空间。默认值为0,表示不自动删除。
    expire_logs_days=7
    #跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
    #如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
    slave_skip_errors=1062
    
    

    重启数据库

    service mysqld restart

    执行mysql语句

    create user 'root'@'%' identified by '123456';
    grant replication slave on *.* to 'root'@'%';
    flush privileges;
    show master status G
    *__将File及Position复制下来,从库配置会用到上面的信息__*
    

    cd /etc/my.cnf.d
    vim mysql-server.conf

    从库数据库配置核心部分

    # 设置同步的binary log二进制日志文件名前缀,默认是binlog
    log-bin=mysql-bin
    # 服务器唯一ID  主数据库和从数据库的server-id不能重复
    server-id=2
    
    ###可选配置
    # 需要主从复制的数据库 
    replicate-do-db=test
    # 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步) 
    binlog-ignore-db=mysql
    # 为每个session分配的内存,在事务过程中用来存储二进制日志的缓存 
    binlog_cache_size=1M
    # 主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一) 
    binlog_format=row
    # 设置二进制日志自动删除/过期的天数,避免占用磁盘空间。默认值为0,表示不自动删除。 
    expire_logs_days=7
    # 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。 
    # 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致 
    slave_skip_errors=1062
    # relay_log配置中继日志,默认采用 主机名-relay-bin 的方式保存日志文件 
    relay_log=replicas-mysql-relay-bin
    # log_slave_updates表示slave将复制事件写进自己的二进制日志
    log_slave_updates=1
    # 防止改变数据(只读操作,除了特殊的线程)
    read_only=1
    
    

    重启数据库

    service mysqld restart

    执行mysql语句

    mysql:

    change master to MASTER_HOST='192.168.0.23',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='tw369.com',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=156;
    flush privileges;
    start slave;/stop slave;
    show slave status G

    确认结果

    如果 Slave_IO_Running=YES、Slave_SQL_Running=Yes、Slave_IO_State=Waiting for master to send event 则表示成功

    常见问题处理

    show slave status G

    检查Last_Error的信息,在Master检索日志

    mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.000001 | grep -A '10' 55154294

    手工干预处理后,忽略掉错误的一致性问题,重新开启同步

    stop slave;set global sql_slave_skip_counter=1;start slave;show slave statusG;

    如反复出现,类似于常见BUG,则忽略掉相关的错误

    vim /etc/my.cnf

    slave-skip-errors = 1032,xxxx,xxxx ....

    重启服务

  • 相关阅读:
    带修改离线主席树 + 树状数组 ZOJ
    树上主席树 + LCA SPOJ
    基础静态主席树 POJ
    数列分块入门1-9 LibreOJ
    Some about me
    [Java]Thinking in Java 练习2.12
    [Java]Thinking in Java 练习2.10
    [Java]Java中的自动包装
    [Java]Thinking in Java 练习2.2
    [杂记]CodeBlocks下载、安装及设置
  • 原文地址:https://www.cnblogs.com/littlewrong/p/14662904.html
Copyright © 2011-2022 走看看