2015年4月8日主从不同步故障解决(字符集导致)
????1、現狀 :服務器A 從庫;????
????????????? 服務器B 主庫;
????????????? 關系:主從同步
????2、現添加一臺服務器C為主庫,同步服務器A---》同步服務器B
操作1、停止 /etc/init.d/xa-anaxxx-tomcat? stop?? 主從同步分析停止 ;
????2、停止 /etc/init.d/xa-colxxx-tomcat? stop?? 數據插入主庫停止;
??? 3、MQ查看正常;
????4、停止服務器B 同步 stop slave ;
????5、確認server-id 值是唯一;
????6、在服務器C創建A同步賬號;
?????? #注意:創建的賬號為字母+數字;
????7、在服務器A 上change master to .....
????8、在服務器A SHOW SLAVE STATUS\G
?????? Last_IO_Errno: 1045 Last_IO_Error: error connecting to master
???????? 排查:檢查端口、網絡是否暢通,(iptables)
???????????? ? 檢查賬號、密碼是否正確,(空格檢查)
?????????????? 檢查pos點是否正確;
????? 9、上述確認無誤后,檢查服務器(從庫)C 錯誤日志
???????? 提示:? 未禁用DNS解析
?????????? 導致: ? 遠程訪問慢
?????????? 解決: ?在[mysqld] 添加:skip-name-resolve?
????????????????#不再進行反解析(ip不反解成域名),這樣可以加快數據庫的反應時間
???????? 報錯:? ignored in --skip-name-resolve mode.”Warning? (未處理)
????????? 優化方法:http://bbs.51cto.com/thread-1062614-1-1.html?
???? 10、再次change master to? 報錯無法同步;
???? 11、在服務器C重新創建賬號(字母+數字)且授權all 權限 10.2.24.%網段同步;
???? 12、在服務器A 嘗試用服務器C創建的賬號登陸,且無法登陸;
???? 13、檢查字符集: show variables? like "%char%";
???????????? slave1
????| character_set_client???? | utf8???????????????????????????? |
????| character_set_connection | utf8???????????????????????????? |
????| character_set_database?? | latin1?????????????????????????? |
????| character_set_filesystem | binary?????????????????????????? |
????| character_set_results??? | utf8???????????????????????????? |
????| character_set_server???? | latin1?????????????????????????? |
????| character_set_system???? | utf8???????????????????????????? |
????| character_sets_dir?????? | /usr/local/mysql/share/charsets/ |
????????????master
????| character_set_client???? | latin1??????????????????????????????????? |客戶端字符集
????| character_set_connection | latin1??????????????????????????????????? |鏈接數據庫字符集
????| character_set_database?? | utf8????????????????????????????????????? |數據庫服務器中字符集使用
????| character_set_filesystem | binary??????????????????????????????????? |
????| character_set_results??? | latin1??????????????????????????????????? |數據庫給客戶端返回時使用的字符集設定
????| character_set_server???? | utf8????????????????????????????????????? |服務器安裝時指定的字符集設定
????| character_set_system???? | utf8????????????????????????????????????? |數據庫系統使用的字符集設定
????| character_sets_dir?????? | /application/mysql-5.5.19/share/charsets/ |
?????? 原因分析:由于數據庫字符集不一致導致,導致創建的賬號在遠程登陸的時候無法識別;
?????? 服務器A配置文件修改: #一般使用utf8
????????[client]
????????default-character-set=utf8
????????[mysqld]
????????character-set-server=utf8
????????init_connect='SET NAMES utf8'
??????
???? 14、刪除原有用于同步賬號,刷新權限后,查看賬號沒有刪除;
???????? use mysql ; select * from user\G;
???????? ????????????????? Host: 10.2.24.xx
????????????????? User: sxxx
?????????????? ??? Password: *D26AD47137B28F4998C27561AA397B1ED3FBF0B1
?????????? ????????Select_priv: N
?????????????????? Insert_priv: N
?????????? ????????Update_priv: N
?????????? ????????Delete_priv: N
?????????? ????????Create_priv: N
????????? #賬號創建時權限為all ,此處查看沒有任何權限
????????? #在user 表中刪除創建的賬號,(賬號、網段名稱盡量復制黏貼系統查看的)
???? 15、重新創建賬號 kong ,授權all
???????? #賬號為全字母,且為小寫
???? 16、在服務器A? 登陸成功
???? 17、 使用新創建的賬號(kong) change master to 同步成功
????18、導入數據測試字符集是否正常
????19、如果對已有的表無法進行操作(字符集導致),刪除表結構重新創建。
??????? #可以到相對應的數據文件中刪除相對應的表名
????20、重新建庫、建表、導入數據測試、同步........
經驗提示:mysql數據庫中表名區分大小寫
?? 修改: [mysqld]? #注意重啟
?????????lower_case_table_names=1?
???????? #lower_case_table_names=1(1是不區分大小寫,0是區分)
???????
大小寫區分提示:http://www.linuxidc.com/Linux/2007-12/9831.htm?
轉載于:https://blog.51cto.com/linuxboys/1630120
總結
以上是生活随笔為你收集整理的2015年4月8日主从不同步故障解决(字符集导致)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LoadRunner的Socket脚本关
- 下一篇: PHP ServerPush (推送)