• 传统复制


    复制环境配置宝典:
    全新环境配置Replication:表示主从数据库服务均为全新,这种场景下的配置方案最为简单和灵活
    现有环境配置Replication:表示主数据库服务已有数据,这种情景下的配置就需要考虑多种因素
    为现有环境配置Replication复制,可以细分为:
    创建一台Slave:当前已有Master节点,需要配置Slave节点,以创建Replication复制环境
    增加一台Slave:当前已有M-S复制环境,需要再增加Slave节点,以增强系统的整体负载能力
    在具体配置Slave节点时,可以细分为:
    脱机方式创建:操作过程中,MySQL服务可以停机
    联机方式创建:操作过程中,MySQL服务不能中断运行
    1、Master端启用二进制日志,指定唯一的server_id
    2、Slave端配置唯一的server_id
    3、创建复制专用账户
    (system@localhost) [(none)]> grant replication slave on *.* to 'rep1'@'ip' identified by 'rep1';
    4、记录Master端日志信息并创建镜像
    需要确定当前Master数据库服务是否仍处与读写状态
    获取当前Master数据库的日志文件名和位置
    创建一份完整的数据备份,备份创建过程中,Master不能再有写操作,或者要有相应措施确保,从获取到Master日志信息,到数据备份完成,这期间的操作不会在Slave端被重复应用
    mysql>flush tables with read lock;
    mysql>show master status;
    然后通过复制数据文件,用mysqldump命令、xtrabackup命令,创建一份数据库完整备份
    mysql>unlock tables;
    5、配置Slave端的连接
    (system@localhost) [(none)]> change master to master_host='192.168.1.201', master_port=3306, master_user='rep1', master_password='rep1', master_log_file='mysql-bin.000007', master_log_pos=120;
    不管是mysqldump还是xtrabackup,均有专用的配置Slave节点连接Master节点的参数,一定要注意,以免重复执行造成不必要的错误

    常用复制环境管理命令:
    1、检查Slave节点的各个状态
    Slave>show slave status;
    重要指标
    Slave_IO_State:显示Slave当前的状态
    Slave_IO_Running:I/O线程是否在运行
    Slave_SQL_Running:SQL线程是否在运行
    Last_IO_Error/Last_SQL_Error:是否有错误信息
    Seconds_Behind_Master:显示当前Slave节点与Master节点的同步延迟,计算公式是:io_thread.timestamp-sql_thread.timestamp
    SHOW PROCESSLIST辅助了解复制状态的作用
    Master_Log_File/Read_Master_Log_Pos:显示当前读取的Master节点二进制日志文件和文件位置
    Relay_Master_Log_File/Exec_Master_Log_Pos:显示当前Slave节点正在应用的日志文件位置
    Relay_Log_File/Relay_Log_Pos:显示当前Slave节点正在处理的中继日志文件和位置
    Master>show processlist;
    Master>show slave hosts;
    Slave>show processlist;
    通过Master/Slave中连接信息表明,每一组Master、Slave都有三个线程(Master节点一个,Slave节点两个),各司其职并且相互配合,共同维护复制环境中数据的同步。
    2、启停Slave线程
    Slave>start slave;
    Slave>stop slave;
    Slave>start slave sql_thread;
    Slave>start slave io_thread;
    Slave服务由两个线程组成:
    IO_THREAD:负责读取Master端的二进制日志,并写入到本地的中继日志(relay-log)中
    SQL_THREAD:负责从本地中继日志读取事件并执行

    中继日志文件和状态文件:
    二进制日志文件用于保存节点自身产生的事件,中继日志文件中则是保存接收自其他节点的事件(也是二进制格式),中继日志文件默认保存在data目录下。Slave节点有两个线程,其中IO_THREAD线程用于接收和保存二进制日志,SQL_THREAD线程用于应用这些日志。中继日志文件的管理可以完全交由Slaves节点的SQL_THREAD线程来维护。除了中继日志文件外,复制环境中的Slave节点还会创建两个复制环境的状态文件,即master.info和relay-log.info,默认保存在data目录下,master.info保存复制环境中连接Master节点的配置信息,replay-log.info保存处理进度及中继日志文件的位置。IO_THREAD负责更新master.info文件,SQL_THREAD负责更新relay-log.info文件。
    在5.6版本后,可以选择将master.info信息保存在mysql.slave_master_info表对象
    在5.6版本后,可以选择将relay-log.info信息保存在mysql.slave_relay_log_info表对象中

  • 相关阅读:
    python操作MySQL数据库(转)
    python3.3.2中的关键字(转)
    HashMap的键值需要注意什么?
    为什么基本类型不能做为HashMap的键值?
    怎么确保一个集合不能被修改?
    Iterator和 ListIterator有什么区别?
    Iterator怎么使用?有什么特点?
    迭代器Iterator是什么?
    哪些集合类是线程安全的?
    Queue的element()和peek()方法有什么区别?
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11313842.html
Copyright © 2020-2023  润新知