您好,登錄后才能下訂單哦!
小編給大家分享一下init_command導致mysql 5.6主從連接失敗怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
mysql 5.6 從庫主機安排了計劃性重啟, 重啟主機后, 問題來了。
實例 無法連接master 了。
報錯如下:
[code]
2018-09-17 12:21:50 28554 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='192.168.8.42', master_port= 3307, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='192.168.8.42', master_port= 3307, master_log_file='', master_log_pos= 4, master_bind=''.2018-09-17 12:21:58 28554
[Warning] Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended.
Please consider using the USER and PASSWORD connection options for START SLAVE;
see the 'START SLAVE Syntax' in the MySQL Manual for more information.2018-09-17 12:21:58 28554
[Note] Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log './relay-bin.000001' position: 42018-09-17 12:21:58 28554
[Note] Slave I/O thread: connected to master 'repl@192.168.8.42:3307',replication started in log 'FIRST' at position 42018-09-17 12:21:58 28554
[Warning] "SELECT UNIX_TIMESTAMP()" failed on master, do not trust column Seconds_Behind_Master of SHOW SLAVE STATUS. Error: Aborted connection 12505106 to db: 'unconnected' user: 'repl' host: '192.168.8.43' (init_connect command failed) (1184)2018-09-17 12:21:58 28554 [ERROR] Slave I/O: The slave I/O thread stops because a fatal error is encountered when it tries to SET @master_heartbeat_period on master. Error: , Error_code: 15932018-09-17 12:21:58 28554
[Note] Slave I/O thread exiting, read up to log 'FIRST', position 4
[/code]
咋回事呢, 同事重置了slave 還是報錯。
因為啟用了gtid , 兩邊對照了gtid 的各個參數都是一致的。 也排除了gtid 的故障。
因為重啟之前都是OK 的, 也不存數據問題。 納悶了。
看日志就上上面這樣了。
一時沒明白過來。 去主庫上看看 。
問題找到了。
#init_connect='set names gbk;insert into db_monitor.accesslog(thread_id,log_time,localname,matchname) values(connection_id(),now(),user(),current_user());commit;'
主庫上的init_command 參數 加了一條sql 語句。
對應到了日志里的 init_command 的報錯。
看看權限
[code]
mysql.sock@(none)> use mysql
Database changed
mysql.sock@mysql> select * from tables_priv ;
+------+------------+--------------+------------+----------------+---------------------+------------+-------------+
| Host | Db | User | Table_name | Grantor | Timestamp | Table_priv | Column_priv |
+------+------------+--------------+------------+----------------+---------------------+------------+-------------+
| % | db_monitor | user_app | accesslog | root@localhost | 0000-00-00 00:00:00 | Insert | |
+------+------------+--------------+------------+----------------+---------------------+------------+-------------+
1 row in set (0.02 sec)
mysql.sock@mysql>
[/code]
把init_command 注釋掉后, 一切都ok 了。
原來之前因為某個事件 , 增加了一點審計功能, 就用init_command 實現了。
原來是忘記給repl 授權了。
導致 repl 再次登錄的時候, 無權操作這個insert 語句報錯。退出了。無法連接master .
以上是“init_command導致mysql 5.6主從連接失敗怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。