MySQL5.7的复制(一补充)

来源:互联网 发布:德国公开赛 知乎 编辑:程序博客网 时间:2024/05/22 04:10

1、上次刚写完文章,发现自己手欠了一下,在备份机上slave开启的情况下,删除了一张表!结果怎样启动slave,Slave_SQL_Running总是No。
分析问题出现的原因:
当建立了主从复制以后MySQL数据库的从库中不能做cud操作也就是增删改的操作其中包括数据库、表、触发器、函数、过程等等所有的内容。
解决思路:
当出现这个问题的时候,我查询了一下主机数据库中的master的状态,发现是这样的

mysql> show master status\G;*************************** 1. row **************************             File: mysql-bin.000002         Position: 4553     Binlog_Do_DB: Binlog_Ignore_DB:Executed_Gtid_Set:1 row in set (0.00 sec)ERROR:No query specified

而原来的master的file是mysql-bin.000001,position是451。因此可以推断是slave的信息与master的已经不匹配了,所以需要从新配置slave。
先将slave停掉

mysql>stop slave;mysql>change master to master_host='192.168.1.1',    ->master_user='dba',    ->master_password='root',    ->master_log_file='mysql-bin.000002',    ->master_log_pos=4553;

2、由于主从主机的分离,所以在主机的一些DBMS工具中建表,建库时一定注意,虽然MySQL本身不区分大小写但是数据库名,表名等如果用大写的会出现这样一个问题:
在Navicat上建一个Vacant表,并增添数据,到从库上去查询,结果发现没有同步。于是查询日志发现错误说:无法找到vacant表,实际上已经有一张Vacant表了只是大小写不一致。
于是到Windows平台上做实验,发现不区分大小写表名,而到linux下却区分。
因为在不同平台的大小写敏感度是不一样的,所以得出一个结论MySQL的复制中最好统一用小写字母。

总结一下:
(1)主从复制的数据库上不能在从机备份库slave开启的情况下进行增删改的操作。如果在slave关闭的情况下进行了修改,必须在开启slave之前手动同步主从数据。
(2)linux平台区分名字(库名、表名等)的大小写,而windows平台不区分,因此建议统一用小写命名。

原创粉丝点击