我有一个MySQL的主从设置.如果我对从数据库做任何更改..。
发布于 2013-06-13 08:29:38
请在下面找到答案。
在高可用性的体系结构视图上“是”。只要你有大师和稳重,你就不会有问题。
期间,是否会从主服务器覆盖这些更改?
Depends upon your changes. create table test (id int, name varchar(20));
insert into test values (12,'Mannoj');
-------------------------
|id | name |
-------------------------
|12 | Mannoj |
-------------------------在从中也可以看到相同的数据和结构。
现在在奴隶上做一个更新,如
update table test set name='Villain' where id=12;此时,大师正试图像这样更新。
update table test set id=14 where name='Mannoj';现在奴隶的同步中断了。你的SQL_SLAVE_THREAD停了。
或者任何其他冲突的语句试图附加它将被打破,上面是一个更好的例子。
但是,如果您得到的更新,如下面的主人,您的奴隶数据是一致的主人。
update table test set name='Hero' where id=12;为此,您需要非常肯定您的应用程序体系结构,最好与应用程序团队进行双重检查。也许你也可以检查他们的代码。
是的,你可以克服这一点,前提是你应该达到以下几点。
STOP SLAVE SQL_THREAD; Insight ->,但是IO_SLAVE_THREAD不断将其空间添加到RELAY_LOG上,而不是需要应用的空间。只有当SQL线程执行中继日志时,才会清除此中继日志,直到在中继日志和Master的二进制日志上启用自动清除为止。这样,您就可以从主站点到从站点获得所发生的事务的信息。START SLAVE SQL_THREAD;,当然,它会在Last_Error: and Seconds_Behind_Master: NULL下抛出错误SET GLOBAL sql_slave_skip_counter = 1和START SLAVE SQL_THREAD; ->,直到得到Seconds_Behind_Master: 0为止。发布于 2013-06-13 08:12:40
( 1)它会以任何方式破坏同步吗?
答:是的,当从中继日志和服务器上的更新读取从服务器的数据时,它会破坏您的复制过程。例如:如果已将一行添加到从属程序中,并且母版中没有该行,则“插入.”查询将失败,这可能导致复制进程停止。
(2)在下一个复制事件期间,是否会从主服务器覆盖更改,我是否可以使上述( 2)选项发生?
答:没有。但是有一种选择可以使用pt表同步工具
此工具更改数据,因此为了最大程度的安全起见,您应该在使用数据之前备份数据。当将作为复制从服务器的服务器与-复制或同步到主方法同步时,它总是对复制主服务器进行更改,而不是直接对复制从服务器进行更改。一般来说,这是唯一安全的方法,使副本与它的主人同步;
注意:设置奴隶是个好主意,因为朗读_仅限这个变量可能有助于防止在奴隶上发生一些不安全的写入,但前提是用户没有被不必要地授予超级特权。
发布于 2013-06-12 01:55:31
除非您使用的是MySQL集群,否则复制完全是单向操作。您不应该对从副本进行更改。
至于如果你这样做会发生什么,很难说,我从来没有愚蠢到尝试:-)
我怀疑当你违反合同时,它会做任何软件做的事情--不管它喜欢什么。
我的建议是,甚至不要去想这种行动在你脑海中的最微小的可能性(从道格拉斯亚当斯HHGTTG中得到的解释)。
https://dba.stackexchange.com/questions/44431
复制相似问题