mysql数据库同步另一个数据库

MySql 码拜 7年前 (2017-05-08) 3067次浏览
假设两个数据库分别为 A  B
当数据库A的数据有变动时马上将数据同步到B. 但是当B数据有变动时不影响A
解决方案

20

可以通过同步复制自动实现。

引用

第6章:MySQL中的复制
目录
6.1. 复制介绍6.2. 复制实施概述6.3. 复制实施细节6.3.1. 复制主线程状态6.3.2. 复制从I/O线程状态6.3.3. 复制从SQL线程状态6.3.4. 复制传递和状态文件6.4. 怎么样设置复制6.5. 不同MySQL版本之间的复制兼容性6.6. 升级复制设置6.6.1. 将复制升级到5.0版6.7. 复制特性和已知问题6.8. 复制启动选项6.9. 复制FAQ 6.10. 复制故障诊断与排除6.11. 通报复制缺陷6.12. 多服务器复制中的Auto-Increment
本章描述了MySQL提供的各种复制特性。引入了复制概念,显示怎么样设置复制服务器和服务以指导相应的复制选项。还提供了FAQ(以及答案) 列表,以及解决复制问题的排错建议。
关于复制相关的SQL语句的语法描述,参见13.6节,“复制语句”。
我们建议你经常访问我们的网址http://www.mysql.com,并检查对本章的修改。复制在不断地得到改进,我们用最新的信息定期更新本手册。
6.1. 复制介绍
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。(这与同步复制可以进行对比,同步复制是MySQL簇的一个特征—参见第17章:MySQL簇)。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。
假如你想要设置链式复制服务器,从服务器本身也可以充当主服务器。
请注意当你进行复制时,全部对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。
单向复制有利于健壮性、速度和系统管理:
·         主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。
·         通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。假如非更新查询为主,该负载均衡策略很有效,但一般是更新查询。
·         使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。参见5.9.1节,“数据库备份”。
6.2. 复制实施概述

MySQL复制基于主服务器在二进制日志中跟踪全部对数据库的更改(更新、删除等等)。因此,要进行复制,必须在主服务器上启用二进制日志。参见5.11.3节,“二进制日志”。
每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新。
认识到二进制日志只是一个从启用二进制日志的固定时间点开始的记录非常重要。任何设置的从服务器需要主服务器上的在主服务器上启用二进制日志时的数据库拷贝。假如启动从服务器时,其数据库与主服务器上的启动二进制日志时的状态不相同,从服务器很可能失败。
将主服务器的数据拷贝到从服务器的一个途径是使用LOAD DATA FROM MASTER语句。请注意LOAD DATA FROM MASTER目前只在全部表使用MyISAM存储引擎的主服务器上工作。并且,该语句将获得全局读锁定,因此当表正复制到从服务器上时,不可能在主服务器上进行更新。当我们执行表的无锁热备份时,则不再需要全局读锁定。
由于这些限制,我们建议只有主服务器上的数据集相对较小,或主服务器上延迟读锁定已经被接受,才可以使用LOAD DATA FROM MASTER。而LOAD DATA FROM MASTER的实际速度随系统的不同而不同,对于执行时间,最好的规则是每1MB的数据用1秒钟。这是一个粗略的估计,但你会发现假如主服务器和从服务器的性能上等价于700MHz Pentium CPU,通过100Mbps的网络进行连接,则该估计相当准确。
从服务器设置为复制主服务器的数据后,它连接主服务器并等待更新过程。假如主服务器失败,或从服务器失去与主服务器之间的连接,从服务器保持定期尝试连接,直到它能够继续帧听更新。由–master-connect-retry选项控制重试间隔。 默认为60秒。
每个从服务器跟踪复制时间。主服务器不知道有多少个从服务器或在某一时刻有哪些被更新了。
6.3. 复制实施细节
6.3.1. 复制主线程状态6.3.2. 复制从I/O线程状态6.3.3. 复制从SQL线程状态6.3.4. 复制传递和状态文件
MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。主服务器创建一个线程将二进制日志中的内容发送到从服务器。该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql数据库同步另一个数据库
喜欢 (0)
[1034331897@qq.com]
分享 (0)