• 【MySQL案例】error.log的Warning:If a crash happens thisconfiguration does not guarantee that the relay lo(转)


    标签:

    1.1.1. If a crash happens thisconfiguration does not guarantee that the relay log info will be consistent

    【环境的叙述性说明】

    msyql5.6.14

    【报错信息】

    mysql的slave启动时,error.log中出现Warning警告:

    [Warning] Slave SQL: If a crash happensthis configuration does not guarantee that the relay log info will beconsistent, Error_code: 0

    这条Warning信息对Mysql和MySQL复制功能没有不论什么影响。

    【报错原因】

             MySQL5.6版本号開始支持把master.info和relay-log.info的内容写入到mysql库的表中。

                       master.info--> mysql.slave_master_info

                       relay-log.info--> mysql. slave_relay_log_info

             同一时候在MySQL5.6版本号中,添加了 Slave crash-safe replication功能,为了保证mysql的replication可以crash-safe。slave_master_info和slave_relay_log_info表必须使用事务型的存储引擎(InnoDB),不要尝试去手动改动这两张表的内容。

    同一时候,Slave还要开启relay_log_recovery功能。

    【解决方法】

             设置master_info_repository和relay_log_info_repository的值为TABLE。同一时候开启relay_log_recovery功能。

             改动/etc/my.cnf配置文件,加入下面3项:

                       master-info-repository=table     # 能够使用set global 动态改动

                       relay-log-info-repository=table   # 能够使用setglobal 动态改动

                       relay-log-recovery=1           # 仅仅读參数,必须改动my.cnf重新启动mysql

             然后重新启动mysql实例。

    【參考资料】

    l  master.info和relay-log.info日志

             在复制的Slave节点上会创建两个日志,各自是master.infor和relay-log.info,位于datadir文件夹中。在MySQL5.6和兴许的版本号中,能够通过设置master-info-file和relay-log-info-file參数来指定写入到mysql的表中或者写入文件。

             这两个文件里包括一些类似showslave status输出的信息,当slave启动的时候会读取master.info和relay-log.info文件来确定从master读取binary log和读取relay log的信息。

             Slave的I/O线程负责更新维护master.info文件,

    master.info

    mysql.slave_master_info

    SHOW SLAVE STATUS Column

    Description

    1

    Number_of_lines

    [None]

    Number of lines in the file

    2

    Master_log_name

    Master_Log_File

    The name of the master binary log currently being read from the master

    3

    Master_log_pos

    Read_Master_Log_Pos

    The current position within the master binary log that have been read from the master

    4

    Host

    Master_Host

    The host name of the master

    5

    User

    Master_User

    The user name used to connect to the master

    6

    User_password

    Password (not shown by SHOW SLAVE STATUS)

    The password used to connect to the master

    7

    Port

    Master_Port

    The network port used to connect to the master

    8

    Connect_retry

    Connect_Retry

    The period (in seconds) that the slave will wait before trying to reconnect to the master

    9

    Enabled_ssl

    Master_SSL_Allowed

    Indicates whether the server supports SSL connections

    10

    Ssl_ca

    Master_SSL_CA_File

    The file used for the Certificate Authority (CA) certificate

    11

    Ssl_capath

    Master_SSL_CA_Path

    The path to the Certificate Authority (CA) certificates

    12

    Ssl_cert

    Master_SSL_Cert

    The name of the SSL certificate file

    13

    Ssl_cipher

    Master_SSL_Cipher

    The list of possible ciphers used in the handshake for the SSL connection

    14

    Ssl_key

    Master_SSL_Key

    The name of the SSL key file

    15

    Ssl_verify_server_cert

    Master_SSL_Verify_Server_Cert

    Whether to verify the server certificate

    16

    Heartbeat

    [None]

    Interval between replication heartbeats, in seconds

    17

    Bind

    Master_Bind

    Which of the slave‘s network interfaces should be used for connecting to the master

    18

    Ignored_server_ids

    Replicate_Ignore_Server_Ids

    The number of server IDs to be ignored, followed by the actual server IDs

    19

    Uuid

    Master_UUID

    The master‘s unique ID

    20

    Retry_count

    Master_Retry_Count

    Maximum number of reconnection attempts permitted Added in MySQL 5.6.1)

             Slave的SQL线程负责维护relay-log.info文件,在MySQL5.6中relay-log.info包括文件里的记录数和复制延迟的秒数。

    relaylog.info

    slave_relay_log_info

    SHOW SLAVE STATUS

    Description

    1

    Number_of_lines

    [None]

    Number of lines in the file or rows in the table

    2

    Relay_log_name

    Relay_Log_File

    The name of the current relay log file

    3

    Relay_log_pos

    Relay_Log_Pos

    The current position within the relay log file; events up to this position have been executed on the slave database

    4

    Master_log_name

    Relay_Master_Log_File

    The name of the master binary log file from which the events in the relay log file were read

    5

    Master_log_pos

    Exec_Master_Log_Pos

    The equivalent position within the master‘s binary log file of events that have already been executed

    6

    Sql_delay

    SQL_Delay

    The number of seconds that the slave must lag the master

    设置master_info_repository和relay_log_info_repository參数:

    SQL> stop slave;

    SQL> set global master_info_repository=table;

    SQL> set global relay_log_info_repository=table;

    SQL> show variables like ‘%repository‘;

    +--------------------------------------+---------+

    | Variable_name           | Value |

    +--------------------------------------+---------+

    | master_info_repository    | TABLE |

    | relay_log_info_repository  | TABLE |

    +--------------------------------------+----------+

    查看向Master读取日志的情况:

    SQL> select * from slave_master_info;

    查看Slave的Relay日志应用情况:

    SQL> select * from slave_relay_log_info;

    注意: 
             master.info和relay-log.info内的数据会有一定的延迟,取决于mysql把slave信息刷到硬盘的时间,假设要获得slave的实时信息,能够查询slave_master_info和slave_relay_log_info表,或者运行show slave status查看。

    l  master-info-repository

        master-info-repository={ FILE | TABLE },默认值是FILE。这个參数用于设置Slave节点上把master的信息写入到物理文件里还是写入到mysql. slave_master_info表中。

        假设设置为FILE。也是mysql的默认设置,Slave会在datadir/master.info文件里记录master的信息,从MySQL5.6版本号開始,建议使用TABLE模式。

    l  relay-log-info-reposity

             relay-log-info-reposity=file|table。默认值是FILE。这个參数用于设置slave节点上把relay-log.info的信息写入到datadir/relay-log.info文件或者mysql. slave_relay_log_info表。

        假设设置为FILE,也是mysql的默认设置,Slave会在datadir/master.info文件里记录master的信息,从MySQL5.6版本号開始,建议使用TABLE模式。

    l  relay-log-recovery

             relay-log-recover=0|1,默认值是0不开启。该參数用于设置是否开启relay log的自己主动恢复功能。

    当开启relay_log_recovery功能,slave数据库在启动的时候,会忽略未被运行的relay log。它会又一次连接master获取relay log来进行恢复。

             当slave发生宕机的时候。建议开启该功能,能够有效避免slave运行了relay log里面的讹误记录。

             假设开启relay_log_recovery功能,我们有相同的时间到relay_log_info_reposity至TABLE状态。

  • 相关阅读:
    很久以前写的一个功能测试用例
    中外白领和无领的一天
    Five bugs in five minutes...
    Oracle SQL 性能优化技巧
    10款常用Java测试工具[转载]
    AJAX、AJAX实例及AJAX源代码(asp)
    各大银行的暗示[笑话]
    Tomcat集群与负载均衡(转载)
    简述CMMI2级的7个PA
    全面介绍单元测试 -转贴
  • 原文地址:https://www.cnblogs.com/vijayfly/p/5227877.html
Copyright © 2020-2023  润新知