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