没有合适的资源?快使用搜索试试~ 我知道了~
04-MySQL复制replication1
需积分: 0 0 下载量 96 浏览量
2022-08-03
14:23:02
上传
评论
收藏 2.41MB PDF 举报
温馨提示
试读
40页
1. 在主库上把数据更改记录到二进制日志(Binary Log)中(这写记录被称为二进制日志事件) 2. 备库将主库的日志复制到自己的中继日志(Relay Lo
资源详情
资源评论
资源推荐
复制ABreplication
复制ABreplication
复制概述
复制解决的问题
复制的原理
项目实战1:mariadbserver5.5单主从架构
项目实战2:mysqlserver5.7基于GTID的单主从架构
复制中的延迟问题_重演延迟
项目实战3:mysqlserver5.7基于GTID的并行MTS单主从架构
项目实战4:mysqlserver5.7基于GTID的并行MTS单主从架构crashsafe参数调优
复制中的延迟问题_读写分离
半同步复制的潜在问题
无数据丢失的半同步复制
项目实战5:mysqlserver5.7基于GTID的并行MTS单主从半同步架构
复制中的单点故障问题
复制拓扑_配置MSS
复制拓扑_配置MM
复制拓扑_配置M(s)M(s)
复制拓扑_配置MMSS
项目实战6:mysqlserver5.7基于GTID的并行MTS多级主从Multisource半同步架构
总结
本讲义参考《HAmysql》高可用MySQL:第2版/(美)贝尔(Bell,C.),(美)肯德尔(Kindahl,M.),(美)塞尔曼
复制概述
数据库为应用程序提供高可用性和可扩展性的重要特性之一就是复制(Replication)。复制在数据库层创建冗余,同时
产生多个数据库副本进行读扩展。
复制就是把某个服务器上(称为主节点服务器或者简称主节点,即master)的所有变化克隆到另一个服务器(称为从
节点服务器或简称从节点,即slave)。复制通常用来创建master的一个可靠副本,不过复制也有其他用途。
两种最常见的使用复制的例子是:
(1)创建一个master的备份,以避免master崩溃时丢失数据;
(2)创建一个master的副本,从而在不干扰其他业务的情况下执行报表和分析工作。
对小型企业来说,这足以简化很多事情,但复制可以做得更多,比如:
支持多个机房
每个地点都可能要维护服务器,然后将变更复制到其他地方,从而使得信息处处可用。这就需要保护数据,在合法的情
况下,保证用于审计目的的业务信息可用。
即使有服务器停机,也能保证业务的持续运行
如果原来的服务器失效,由其他服务器处理所有的访问量。
即使有灾难发生,也能保证业务持续运行
复制可以将变更发送给不同地理位置的其他数据中心。
错误保护(oops)
当slave连接master时,可从总是比master落后一个固定的时间周期(例如1小时),这样就会产生一个延迟的
slave(DelayedSlave)。如果这时master上发生错误,可以找到出错的语句,然后在slave执行之前删除它。
目前很多应用程序中使用复制最重要的场景之一就是横向扩展(scaleout)。现今的应用程序通常是读密集型的,具
有高读写比。为了减少master上的负载,你可以搭建一个专门响应读请求的slave。通过一个负载均衡器,可以将读
请求定向到合适的slave,而写请求则交给master处理。
在横向扩展的场景下使用复制时,理解MySQL复制的异步性(asynchronous)很重要,即事务首先在master上提交,
然后复制到slave并在slave上执行。这意味着master和slave可能并不一致,而且如果复制持续运行,slave将会
落后于master。
使用异步复制的好处在于它比同步复制更快、更具可扩展性,但在那些实时数据很重要的情况下,必须处理好不同步
的问题以保证信息的时效性。
然而,读扩展并不足以适用于所有应用程序。随着需求增加,数据库更大,写负载更高,需要扩展的就不只是读操作了。
管理大型数据库,提升大型数据库系统的性能,可以通过分片(sharding)技术来实现。通过分片,可以将数据库划分为
若干可管理的数据分片,将数据库分发到多个服务器上,从而增加数据库的规模,并有效地扩展写操作。
复制的另一个重要应用是通过添加冗余来保证高可用性。最常见的技术是使用双主配置(dualmaster),即通过复制保
持一对master总是可用,其中每个master都是对方的镜像。如果其中一个master失效,另一个会立即接手。
除了双主配置,还有其他与复制无关的高可用性技术,如使用共享存储或复制磁盘。尽管它们不是MySQL特有的,但
这些技术对于保证高可用性来说也是很重要的工具
复制解决的问题
复制用例:
通过热备份达到高可用性
如果服务器宕机,一切都将停止:不能执行(可能很关键的)事务,无法得到用户信息,也不能检索其他重要数据。要不惜
(几乎)一切代价避免这种情况发生,因为它会严重破坏业务。最简单的方法就是配置一个额外的服务器专门作为热备
份(hotstandby),在主服务器宕机的时候随时接管业务。
如果数据库只做了备份,现在数据库坏了,我们要恢复数据库,可能要花几个小时;但是现在我们希望这台数据库
坏了,另外一台能够立刻顶上使用,该怎么做呢?
那就需要我们有一个冗余的环境,备份是备份,冗余是冗余。概念不一样,备份是将数据以隔离的方式保存,备份的缺
点,他不是瞬间还原,备份在还原过程中是有耗时的,他不是瞬间还原,例如,我们有几百个G的文件要还原回去,慢慢拷
吧,几个小时。冗余不一样,主服务器/从服务器,主服务器坏掉,从服务器就顶上工作,所以冗余在可用性上来讲,恢复的
速度上来讲,比备份来的快,但是冗余有他的缺点,备份有他的优点,比如我们作主从同步,主服务器和从服务器数据都一
样的,如果主服务器上有人错删了一个表,我们把这种操作称为误操作,那么从服务器也会发生误操作,所以呢,冗余不能
解决人为的误操作,而备份可以解决。冗余他能解决硬件故障,但是误操作无法解决,备份不是瞬间还原,但是既可以解
决硬件故障又能解决误操作,他们各有优劣点,而真实的线上生产环境是两种方法一起使用,既有冗余环境,又有周期性
备份,管理员要周期性地进行备份,同时有多台服务器作冗余。
产生报表
直接用服务器上的数据创建报表将大大降低服务器的性能,在某些情况下尤其显著。如果产生报表需要大量的后台作
业,最好创建一个额外的服务器来运行这些作业。停止报表数据库上的复制,然后在不影响主要业务服务器的情况下
运行大量查询,从而得到数据库在某一特定时间的快照。例如,如果在每天最后一个事务处理完毕后停止复制,可以提
取日报表而其他业务仍正常运转。
单主从步骤
#主服务器
1)修改配置文件 log‐binserver‐id=1(重启服务)
2)授权从机 grantreplicationslavetoslave@172.25.0.12uplooking
3)初始化数据一致mysqldump‐‐‐》传输给从机器
#从服务
1)install
2)修改配置文件 server‐id=2
3)初始化数据一致导入全备数据
4)>changemastermaster_host='172.25.0.11'
master_user='slave'
master_password='uplooking'
master_log_file=''
master_log_pos=''
5)>startslave;
6)>showslavestatus\G;
##主服务器
[root@mastera0mysql]#vim/etc/my.cnf
[root@mastera0mysql]#grep‐v'^#'/etc/my.cnf|grep‐v'^$'
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic‐links=0
log‐bin=/var/lib/mysql‐log/mastera
server‐id=1
[mysqld_safe]
log‐error=/var/log/mariadb/mariadb.log
pid‐file=/var/run/mariadb/mariadb.pid
!includedir/etc/my.cnf.d
[root@mastera0mysql]#systemctlrestartmariadb
[root@mastera0mysql]#mysql‐uroot‐puplooking
WelcometotheMariaDBmonitor.Commandsendwith;or\g.
YourMariaDBconnectionidis2
Serverversion:5.5.44‐MariaDB‐logMariaDBServer
Copyright(c)2000,2015,Oracle,MariaDBCorporationAbandothers.
Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.
MariaDB[(none)]>grantreplicationslaveon*.*toslave@'172.25.0.12'identifiedby
'uplooking';
QueryOK,0rowsaffected(0.00sec)
MariaDB[(none)]>flushprivileges;
QueryOK,0rowsaffected(0.00sec)
MariaDB[(none)]>\q
Bye
[root@mastera0mysql]#mysqldump‐uroot‐puplooking‐A‐‐single‐transaction‐‐master‐data=2‐‐
flush‐logs>/tmp/mysql.91.sql
[root@mastera0mysql]#scp/tmp/mysql.91.sqlroot@172.25.0.12:/tmp
Theauthenticityofhost\'172.25.0.12(172.25.0.12)\'can\'tbeestablished.
ECDSAkeyfingerprintis91:2b:bd:df:0e:17:da:a0:f6:01:ff:5b:09:50:e8:ad.
Areyousureyouwanttocontinueconnecting(yes/no)?yes
Warning:Permanentlyadded'172.25.0.12'(ECDSA)tothelistofknownhosts.
root@172.25.0.12\'spassword:
mysql.91.sql100%505KB504.7KB/s00:00
##从服务器
[root@masterb0~]#yuminstall‐ymariadb‐server
[root@masterb0~]#vi/etc/my.cnf
[root@masterb0~]#systemctlstartmariadb
[root@masterb0~]#mysql</tmp/mysql.91.sql
[root@masterb0~]#mysql
WelcometotheMariaDBmonitor.Commandsendwith;or\g.
YourMariaDBconnectionidis3
Serverversion:5.5.44‐MariaDBMariaDBServer
剩余39页未读,继续阅读
杏花朵朵
- 粉丝: 18
- 资源: 333
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0