mysql主從同步出現錯誤解決一例:本文出自老男孩linux營運實戰培訓內部教案內容整理總結
FAQ:問題1:mysqldump: Got error: 1556: You can't use locks with log tables.
在老男孩帶學生做主從同步實踐時,發現學生實踐操作時遇到如下問題無法解決,於是,老男孩把解決的過程總結如下:
[root@Oldboy ~]# mysqldump -uroot -p'oldboy' -S /data/3306/mysql.sock -A -B >a.sql
mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES
解決過程:
同樣的操作,其他10幾個學生都是OK的,只有這個學生有問題,在詢問後,並查看了相關配置過程後,聯絡到往期也有學生髮生過類似問題,於是,發現了原因。
[root@Oldboy ~]# which mysqldump
/usr/bin/mysqldump
發現原因,mysql的安裝路徑為/application/mysql,查看mysqldump的路徑應該是/application/mysql/bin才對,但是現在的路徑是rpm包安裝的mysql命令路徑了,至此原因找到。
[root@oldboy ~]# tail -1 /etc/profile
export PATH=$PATH:/application/mysql/bin
在/etc/profile檔案中,mysql的命令所在路徑,該學生放到了結尾,因此,當執行mysqldump命令時,優先找到了rpm包內建的/usr/bin/mysqldump命令,從而導致了錯誤。
我們把把mysql的命令路徑放到PATH變數的最前面:
[root@oldboy ~]# tail -1 /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@Oldboy ~]# . /etc/profile
[root@Oldboy ~]# echo $PATH
/application/mysql/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/usr/local/mysql/bin:/application/mysql5.1.65/bin:/application/apache/bin
[root@Oldboy ~]# which mysqldump
/application/mysql/bin/mysqldump
此時在匯出資料庫:
[root@Oldboy ~]#mysqldump -uroot -p'oldboy' -S /data/3306/mysql.sock -A -B >a.sql
可以正常匯出了。
下面該同學搜尋的,其他網友的同樣報錯的另外一個問題的文章:
mysqldump You can’t use locks with log tables 11-01-13 11:05:02
http://blog.chinaunix.net/uid-21757535-id-86425.html
分類: Mysql/postgreSQL
最近在做Database Backup的時候,遇到這樣的一個錯誤:
mysqldump: Got error: 1556: You can't use locks with log tables. when using LOCK TABLES
我是把一些mysqldump語句放在一個批量命令檔案傳說中的.sh檔案)中執行的,而當我把這些
mysqldump語句分離開來一個一個執行的時候,我發現是沒有任何錯誤的,於是在網路上找了一些資料:
發現是mysql預設資料庫裡的logs表,不能被加鎖(lock tables)引起的。
於是我測試了一下,把關於mysql這個預設資料庫相關的語句清空後,整個檔案即可正常運行。
還有一個解決方案:
便是在mysql這個資料庫相關的那句mysqldump加上 --lock-tables=0 這個參數,不鎖表備份,也是可行的。
本文出自 “老男孩linux營運” 部落格,請務必保留此出處http://oldboy.blog.51cto.com/2561410/1122867