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 status\G;"
[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 status\G;"
*************************** 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 status\G;"
*************************** 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 status\G;"
*************************** 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 status\G;"
*************************** 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 ~]# 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM