一、問題描述
mariadb 10.1.16
centos 6.6
在恢復binlog時,報錯:
[apps@abc backup]$ time /apps/svr/mariadb10/bin/mysqlbinlog mysql-bin.000096 --start-datetime='2017-03-31 01:01:41'|/apps/svr/mariadb10/bin/mysql -u root -p --
socket=/tmp/mysql3306.sock
Enter password:
ERROR 2006 (HY000) at line 5303856: MySQL server has gone away
real 3m43.697s
user 0m21.772s
sys 0m12.850s
二、問題分析
查看相關參數如下:
MariaDB [(none)]> show global variables like '%timeout%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 10 |
| deadlock_timeout_long | 50000000 |
| deadlock_timeout_short | 10000 |
| delayed_insert_timeout | 300 |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 45 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 600 |
| net_read_timeout | 3 |
| net_write_timeout | 6 |
| slave_net_timeout | 30 |
| thread_pool_idle_timeout | 60 |
| wait_timeout | 28800 |
+-----------------------------+----------+
14 rows in set (0.00 sec)
其中lock_wait_timeout爲300秒,wait_timeout爲28800秒,參數設置不小,再查看 max_allowed_packet參數大小爲67M,大小還好。
MariaDB [(none)]> show variables like '%packet%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| max_allowed_packet | 67108864 |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.00 sec)
通過業務表查詢恢復到的時間點爲2017-03-31 15:32:51,如下:
MariaDB [md_sl]> select modify_time from gtyr order by modify_time desc limit 1,5;
+---------------------+
| modify_time |
+---------------------+
| 2017-03-31 15:32:51 |
| 2017-03-31 15:32:51 |
| 2017-03-31 15:32:51 |
| 2017-03-31 15:32:51 |
| 2017-03-31 15:32:51 |
+---------------------+
5 rows in set (0.64 sec)
而mysql-bin.000096 binlog文件最後生成時間爲15:32,時間點上剛好一致。
[apps@abc backup]$ ls -lt
total 1112044
drwxr-xr-x 8 apps apps 4096 Apr 4 18:38 xtrabackup_20170331010001
-rw-rw---- 1 apps apps 260286601 Apr 4 18:35 mysql-bin.000097
-rw-rw---- 1 apps apps 676032158 Mar 31 15:32 mysql-bin.000096
drwxr-xr-x 8 apps apps 4096 Dec 8 23:14 xtrabackup_20161207010001
-rw-rw---- 1 apps apps 202401487 Dec 8 23:11 mysql-bin.000064
這個報錯ERROR 2006 (HY000) at line 5303856: MySQL server has gone away,應該是恢復沒有明確指定一個結束位置,引起恢復未正常退出的報錯,但上面這個binlog文件實際上恢復完成。
三、問題解決
可忽略報錯,繼續做下一步操作。
[apps@abc backup]$ time /apps/svr/mariadb10/bin/mysqlbinlog mysql-bin.000097 --stop-datetime='2017-03-31 23:59:59'|/apps/svr/mariadb10/bin/mysql -u root -p --
socket=/tmp/mysql3306.sock
Enter password:
real 0m50.866s
user 0m7.726s
sys 0m3.768s
這裏恢復沒有再報錯。
查詢業務表的最新時間:
MariaDB [ss]> select modify_time from gtyr order by modify_time desc limit 1,5;
+---------------------+
| modify_time |
+---------------------+
| 2017-04-01 00:04:01 |
| 2017-04-01 00:04:01 |
| 2017-04-01 00:04:01 |
| 2017-04-01 00:01:33 |
| 2017-03-31 23:52:01 |
+---------------------+
5 rows in set (0.11 sec)