百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[建站交流] 服务器如何做到主从分离 [复制链接]
查看:136 | 回复:0

184

主题

242

帖子

3

积分

落伍者(一心一意)

Rank: 1

贡献
458
鲜花
0
注册时间
2019-9-27

落伍手机绑定

发表于 2019-9-29 09:30:50 | |阅读模式 来自 中国浙江杭州
1 复制概述  Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。  请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。  1.1 mysql支持的复制类型:  (1):基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。  一旦发现没法精确复制时,会自动选着基于行的复制。  (2):基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持  (3):混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。  1.2 .复制解决的问题  MySQL复制技术有以下一些特点:  (1)数据分布(Datadistribution )  (2)负载平衡(loadbalancing)  (3)备份(Backups)  (4)高可用性和容错行Highavailability and failover  1.3复制如何工作  整体上来说,复制有3个步骤:  (1) master将改变记录到二进制日志(binary

log)中(这些记录叫做二进制日志事件,binary log events);  (2) slave将master的binary log

events拷贝到它的中继日志(relay log);  (3) slave重做中继日志中的事件,将改变反映它自己的数据。  下图描述了复制的过程:  高性能Mysql主从架构的复制原理及配置详解  该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。  下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O 线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。  SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。  此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。  2 .复制配置  有两台MySQL数据库服务器Master和slave,Master为主服务器,slave为从服务器,初始状态时,Master和slave中的数据信息相同,当Master中的数据发生变化时,slave也跟着发生相应的变化,使得master和slave的数据信息同步,达到备份的目的。  要点:  负责在主、从服务器传输各种修改动作的媒介是主服务器的二进制变更日志,这个日志记载着需要传输给从服务器的各种修改动作。因此,主服务器必须激活二进制日志功能。从服务器必须具备足以让它连接主服务器并请求主服务器把二进制变更日志传输给它的权限。  在进行mysql主从备份时,最好确保主从服务器的版本兼容。从服务器至少与主服务器版本相同或更高。  主机(master)配置:  1.修改mysql配置文件my.cnf  在[mysqld]标签下添加以下几行  [plain] view plaincopy  log-bin #开启二进制日志  server-id=id #主服务器id号  binlog-do-db=db_nameA #指定对db_nameA记录二进制日志  binlog-ignore-db=db_namB #指定不对db_namB记录二进制日志  注意:log-bin,server-id是配置文件中必须添加的内容。此时主服务器默认对所有数据库进行备份。如果需要特殊指明只对某个数据库进行备份或不备份,则可以加入binlog-do-db和binlog-ignore-db选项。有关(log-bin的详细说明见附录1)在测试主机上,我们实际添加入如下内容:  [plain] view plaincopy  log-bin server-id=1 binlog-do-db=test  2.为从服务器添加mysql账户并配置权限  在主服务器上,必须为从服务器创建一个用来连接主服务器的用户,并设置replication slave权限。所用具体命令如下:  [sql] view plaincopy  grant replication slave  on *.* to '帐号' @ '从服务器IP' identified by '密码';  在测试机上,我们实际执行:  [sql] view plaincopy  grant replication slave  on *.* to 'replication'@'%' identified by 'sosotest';  这时在mysql库的user表中使用  [sql] view plaincopy  select * from user where user = 'replication'\G;  可以看到Repl_slave_priv项对就的值为Y。3.导出主服务器数据导出主服务器数据,以备之后将其导入从服务器,使主从服务器的初始状态保持一致。在测试机上,我们实际执行:  [sql] view plaincopy  mysqldump test > test.bak  4.记录File 及Position 项的值重启mysql,使用show

master status\G;查看主服务器状态,记录File 及Position 项的值,以便之后对从服务器进行配置。  在测试机上,我们实际执行时看到的结果如下:  ***************************1. row ***************************  File:simba-bin.000008  Position: 79  Binlog_Do_DB: test  Binlog_Ignore_DB:  1 row in set (0.00 sec)  其中File为imba-bin.000008;Position为79。  至此主服务器配置完毕  从机(slave)配置:  1.修改mysql配置文件(linux)my.cnf(windows)my.ini  在[mysqld]标签下添加以下面一行:  [plain] view plaincopy  server-id=id #从机id  实际中,我们添加:  [plain] view plaincopy  server-id=2 2.导入主机数据库在测试机上,我们实际执行:mysql test < test.bak3.重启mysql数据库并设置相关参数  [sql] view plaincopy  change master to  master_host = '10.1.146.133',  master_user = 'replication',  master_password = 'sosotest',  master_log_file = 'darkstar-bin.000008',  master_log_pos = 79;  start slave; 4.检查数据库查看相关参数使用show slave status \G;查看相关参数是否正确。在实际执行时,我们在从机上看到的结果如下(只摘取了部分输出):*************************** 1. row

***************************Slave_IO_State: Waiting for master to send

eventMaster_Host: 10.1.146.133Master_User: replicationMaster_Port:

3306Connect_Retry: 60Master_Log_File: darkstar-bin.000006Read_Master_Log_Pos:

79Relay_Log_File: simba-relay-bin.000003Relay_Log_Pos: 171Relay_Master_Log_File:

darkstar-bin.000006Slave_IO_Running: YesSlave_SQL_Running: Yes……对部分参数的解释:Slave_IO_State:

Waiting for master to send event Slave_IO_Running: YesSlave_SQL_Running: Yes以上参数说听slave正常运行,正等待主服务器发来的消息。此时若用netstate命令可以看到从机与主机间已经建立了一条边接。特别需要注意的两个参数是:Master_Log_File和Read_Master_Log_Pos。Master_Log_File代表主机上用于主备同步的日志文件名,Read_Master_Log_Pos代表上一次成功同步到的日志文件中的位置。如果这两项与先前在主服务器上看到的File及Position的值不相符,则无法正确进行同步。  三.主从备份的实现细节  mysql使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上)。当发出start slave时,从服务器创建一个I/O线程,以连

杭州速联信息科技有限公司是国内领先的IDC综合服务提供商,专业提供互联网机柜大带宽、服务器租用托管、网络安全,网络防御,DS清洗等IDC增值服务,己取得工信部颁发的增值电信业务经营许可证(IDC/ISP),为中国互联网信息中心会员单位,浙江省互联网协会会员单位。公司与中国电信、联通、移动三大顶级运营商合作,在浙江省、江苏省、福州省的多个城市运营IDC数据中心总接入带宽高达4TB,网络安全防护能力超过2TB,拥有BGP、 多线接入等精品网络,公司坚持以客户至上,提供优质的产品质量和7*24小时不同断的售后服务,为各类型客户提供全面的IDC服务解决方案。

免费测试3天!!!

www

点su删掉lian点com

业务联系:速联小姚,QQ:七一二六六六九五六 微信:130.23.67.86.80

业务联系:速联小姚,QQ:71.26.6.69.56
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-6-2 11:28 , Processed in 0.128668 second(s), 36 queries , Gzip On.

返回顶部