• Mysql主从---删除master.info和relya-log.info实验


    relay-log.info, master.info 这连个文件时在建立复制时产生的,现在主要说明以下问题:

    1、如果修改删除master.info文件,复制会中断么?

    不会,如果stop slave,然后start slave还是能正常启动起来,因为MySQL已经记住这里面的信息了,

    但是当你重启mysql时,在start slave,这时重启失败,会提示你change master to

    测试如下

    这里我的主从环境是级联的,结构如下

    master-->slave1-->slave2

     data-1-1机器安装两个实例,一个是master(3306端口),一个是slave2(3307端口)

     data-1-2机器安装一个实例,3306端口,作为slave1

    结构图如下

    两台机器的环境

    #data-1-1机器
    [root@data-1-1 ~]# ifconfig eth0 | grep "inet addr"
              inet addr:10.0.1.81  Bcast:10.0.1.255  Mask:255.255.255.0
    [root@data-1-1 ~]# uname -mrm
    2.6.32-504.el6.x86_64 x86_64
    [root@data-1-1 ~]# cat /etc/redhat-release 
    CentOS release 6.6 (Final)
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "select version();"
    +------------+
    | version()  |
    +------------+
    | 5.5.32-log |
    +------------+
    [root@data-1-1 ~]# 
    #mysql路径
    #master
    #/data/3306/
    #slave2路径
    #/data/3307/
    
    #data-1-2机器
    [root@data-1-2 ~]# ifconfig eth0 | grep "inet addr"
              inet addr:10.0.1.82  Bcast:10.0.1.255  Mask:255.255.255.0
    [root@data-1-2 ~]# uname -rm
    2.6.32-504.el6.x86_64 x86_64
    [root@data-1-2 ~]# cat /etc/redhat-release 
    CentOS release 6.6 (Final)
    #mysql路径 
    [root@data-1-2 ~]# ll /application/mysql/
    

    删除slave2的master.info

    [root@data-1-1 ~]# mv /data/3307/data/master.info master.info.bak 
    [root@data-1-1 ~]# cat master.info.bak 
    18
    mysql-bin.000004
    2448
    10.0.1.82
    rep
    oldboy123
    3306
    60
    0
    
    
    
    
    
    0
    1800.000
    
    0
    [root@data-1-1 ~]# 
    

    不重启slave2的mysq服务,主从不受影响,停止slave和启动slave后也主从是不受影响的

    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3306/mysql.sock  -e   "create database d18;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show databases;"
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | d18                |
    | dd5                |
    | mysql              |
    | performance_schema |
    | t1                 |
    | test               |
    +--------------------+
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "stop slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "start slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3306/mysql.sock  -e   "create database d19;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show databases;"
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | d18                |
    | d19                |
    | dd5                |
    | mysql              |
    | performance_schema |
    | t1                 |
    | test               |
    +--------------------+
    [root@data-1-1 ~]# 
    

    重启slave2的mysql服务,再观察主从,出现报错提示change matser  to

    [root@data-1-1 ~]# /data/3307/mysql stop
    Stoping MySQL...
    [root@data-1-1 ~]# /data/3307/mysql start
    Starting MySQL...
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show slave statusG;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "start slave;"
    ERROR 1200 (HY000) at line 1: The server is not configured as slave; fix in config file or with CHANGE MASTER TO
    

    在slave1上取位置点,也就是说再slave2的master上取位置点

    先让日志滚动一下

    下面的操作为了取位置点

    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3306/mysql.sock  -e   "create database d20;"
    [root@data-1-1 ~]# 
    

    slave1上取位置点

    [root@data-1-2 ~]# mysqlbinlog /application/mysql/data/mysql-bin.000004 >bin4.log
    [root@data-1-2 ~]# tail -15 bin4.log 
    # at 2529
    #170118 17:31:51 server id 1  end_log_pos 2610 	Query	thread_id=185	exec_time=18	error_code=0
    SET TIMESTAMP=1484731911/*!*/;
    create database d19
    /*!*/;
    # at 2610
    #170118 17:54:31 server id 1  end_log_pos 2691 	Query	thread_id=186	exec_time=17	error_code=0
    SET TIMESTAMP=1484733271/*!*/;
    create database d20
    /*!*/;
    DELIMITER ;
    # End of log file
    ROLLBACK /* added by mysqlbinlog */;
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
    [root@data-1-2 ~]# 
    

    salve2重新做主从

    CHANGE  MASTER TO
    MASTER_HOST='10.0.1.82',
    MASTER_PORT=3306,
    MASTER_USER='rep',
    MASTER_PASSWORD='oldboy123',
    MASTER_LOG_FILE='mysql-bin.000004',
    MASTER_LOG_POS=2610;
    

    执行如下

    [root@data-1-1 ~]# mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "CHANGE  MASTER TO MASTER_HOST='10.0.1.82',MASTER_PORT=3306,MASTER_USER='rep',MASTER_PASSWORD='oldboy123',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=2610;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "start slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show slave statusG;"
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.0.1.82
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 2691
                   Relay_Log_File: relay-bin.000002
                    Relay_Log_Pos: 334
            Relay_Master_Log_File: mysql-bin.000004
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 2691
                  Relay_Log_Space: 484
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 12
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3306/mysql.sock  -e   "create database d21;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show databases;"
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | d18                |
    | d19                |
    | d20                |
    | d21                |
    | dd5                |
    | mysql              |
    | performance_schema |
    | t1                 |
    | test               |
    +--------------------+
    [root@data-1-1 ~]# 
    

    2、master.info是在什么时候写入的呢?

    change master to ..

    经过我的测试,它的位置信息会变化的。

    [root@data-1-1 ~]# cat /data/3307/data/master.info 
    18
    mysql-bin.000004
    2772
    10.0.1.82
    rep
    oldboy123
    3306
    60
    0
    
    
    
    
    
    0
    1800.000
    
    0
    [root@data-1-1 ~]# 
    

    3.关于relay-log.info

    删除relay-log.info之后,stop slave和start  slave,主从依然正常

    [root@data-1-1 ~]# mv /data/3307/relay-log.info relya-log.info.bak
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3306/mysql.sock  -e   "create database d22;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show databases;" | grep d22
    d22
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show databases;" 
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | d18                |
    | d19                |
    | d20                |
    | d21                |
    | d22                |
    | dd5                |
    | mysql              |
    | performance_schema |
    | t1                 |
    | test               |
    +--------------------+
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "stop slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "start slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3306/mysql.sock  -e   "create database d23;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show databases;" 
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | d18                |
    | d19                |
    | d20                |
    | d21                |
    | d22                |
    | d23                |
    | dd5                |
    | mysql              |
    | performance_schema |
    | t1                 |
    | test               |
    +--------------------+
    [root@data-1-1 ~]# 
    

    重启mysql服务后,主从同步报错

    [root@data-1-1 ~]# /data/3307/mysql stop
    Stoping MySQL...
    [root@data-1-1 ~]# lsof -i:3307
    [root@data-1-1 ~]# /data/3307/mysql start
    Starting MySQL...
    [root@data-1-1 ~]# lsof -i:3307
    [root@data-1-1 ~]# lsof -i:3307
    COMMAND   PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    mysqld  94497 mysql   12u  IPv4 1003041      0t0  TCP *:opsession-prxy (LISTEN)
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show slave statusG;"
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.0.1.82
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 2934
                   Relay_Log_File: relay-bin.000002
                    Relay_Log_Pos: 253
            Relay_Master_Log_File: mysql-bin.000004
                 Slave_IO_Running: Yes
                Slave_SQL_Running: No
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 1007
                       Last_Error: Error 'Can't create database 'd20'; database exists' on query. Default database: 'd20'. Query: 'create database d20'
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 2610
                  Relay_Log_Space: 1295
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: NULL
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 1007
                   Last_SQL_Error: Error 'Can't create database 'd20'; database exists' on query. Default database: 'd20'. Query: 'create database d20'
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 12
    [root@data-1-1 ~]# 
    

    处理如下,跳过错误即可

    stop slave; 
    set global sql_slave_skip_counter=1; (1是指跳过一个错误)
    slave start;  

    处理如下

    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "stop slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "set global sql_slave_skip_counter=1;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "start slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show slave statusG;"
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.0.1.82
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 2934
                   Relay_Log_File: relay-bin.000002
                    Relay_Log_Pos: 334
            Relay_Master_Log_File: mysql-bin.000004
                 Slave_IO_Running: Yes
                Slave_SQL_Running: No
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 1007
                       Last_Error: Error 'Can't create database 'd21'; database exists' on query. Default database: 'd21'. Query: 'create database d21'
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 2691
                  Relay_Log_Space: 1591
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: NULL
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 1007
                   Last_SQL_Error: Error 'Can't create database 'd21'; database exists' on query. Default database: 'd21'. Query: 'create database d21'
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 12
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "stop slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "set global sql_slave_skip_counter=3;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "start slave;"
    [root@data-1-1 ~]#  mysql -uroot -poldboy123  -S  /data/3307/mysql.sock  -e   "show slave statusG;"
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.0.1.82
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 2934
                   Relay_Log_File: relay-bin.000007
                    Relay_Log_Pos: 253
            Relay_Master_Log_File: mysql-bin.000004
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 2934
                  Relay_Log_Space: 549
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 12
    [root@data-1-1 ~]# 
    

     

  • 相关阅读:
    文件下载的几种方式
    获取文件的后缀名(转为数组) 字符串和变量的拼接 HTML中字符串和变量的拼接
    小程序之选择拍照或者本地相册
    实时显示时间
    uni-app事件冒泡 如何解决事件冒泡 推荐tap事件
    Codeforces Global Round 7 C. Permutation Partitions(组合数学)
    Codeforces Global Round 7 B. Maximums(逻辑)
    Codeforces Global Round 7 A. Bad Ugly Numbers(数学)
    Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)
    Codeforces Round #622 (Div. 2) B. Different Rules(数学)
  • 原文地址:https://www.cnblogs.com/nmap/p/6295755.html
Copyright © 2020-2023  润新知