MYSQL双机热备实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Log-bin
表示打开 binlog,打开该选项才可以通过 I/O 写到 Slave 的 relay-log,也是可以进行 replication 的前提。
Binlog-do-db
表示需要记录二进制日志的数据库。如果有多个数据可以用 逗号分隔,或者使用多个 binlog-do-dg 选项。
Auto_increment_offset 和 Auto_increment_increment
对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所 讲分成广义与狭义两种意义来说。
从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行 同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而 在不需要人工干预的情况下,自动保证系统能持续提供服务。
从狭义上讲,双机热备就是使用互为备份的两台服务器共同执行同一服务, 其中一台主机为工作机(Primary Server),另一台主机为备份主机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机 的运行情况(一般是通过心跳诊断,工作机同时也在检测备份机是否正常),当 工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继 续支持关键应用服务,保证系统不间断的运行。双机热备针对的是 IT 核心服务 器、存储、网络路由交换的故障的高可用性解决方案。
5、 创建库 sms 6、 配置备机的 my.cnf, 在[mysqld]下添加以下几行
server-id = 2 log_bin_trust_function_creators=TRUE
7、 修改备机 master 的状态
change master to >master_host='59.151.15.36', >master_user='replicate', >master_password='123456', >master_log_file=' mysql-bin.000006 ', >master_log_pos=585;
3、 修改主机 B 上的配置文件增加参数 binlog-do-db=sms log-bin=mysql-bin
4、 查看主机 B 的 master 参数 5、 设置修改服务器 A 的数据库对应的 master 服务 6、 服务器 A 启动 slave 服务,查看 slave 状态 7、 验证是否可以实现主-----主热备
master_log_file, master_log_pos 由主服务器(Master)查出的状态值中确定。
8、 备机上启动 slave,并查看 slave 状态(show slave status\G)
其中需要注意的 Slave_IO_Runnning 和 Slave_SQL_Running 两项值均为 YES 表示设置从服务器成功
在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程, 这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。 但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的, 但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。 而如果没有双机热备,则一旦出现服务器故障,可能会出现几个小时的服务中断, 对业务的影响就可能会造成很严重的损失。
如果需要保证双机的同步进度,而忽略同步时异常的信息(比如主键冲突等) 可以在 my.cnf 中的【mysqld】添加
slave-skip-erroes=all //忽略错误,避免 slave 被 crash, 能保证数据复制的进度,不一致的数据可在后期手动同步
Server-id
ID 值唯一的标识了复制群集中的主从服务器,因此它们必 须各不相同。Master_id 必须为 1 到 232-1 之间的一个正整 数值,slave_id 值必须为 2 到 232-1 之间的一个正整数值。
1. 双机热备
集群系统主要为高可用(High Availability)集群,简称 HA 集群。常见的 就是 2 个节点做成的 HA 集群,有很多通俗的不科学的名称,比如“双机热备”, “双机互备” ,“双机”。这样做的好处是当服务器启动的时候,两台服务器 一个作为主服务器,另一个做为从服务器。测试机每几秒会 ping 主机,当发现 主机没有回应,就证明主机宕机了,那么从机马上会启动相应的服务,继续进行 服务。这样就可以保证服务不间断。
'replicate'@'218.206.70.146' identified by '123456';
2 修改主机 my.cnf 配置文件,在[mysqld]下添加以下几行
server-id = 1
//主机和备机 id 不
能相同
log-bin=mysql-bin
//日志文件的名称
binlog-do-db = sms
2.为什么要进行双机热备?
双机热备服务针对的是服务器的故障。服务器的故障可能由各种原因引起, 如设备故障、操作系统故障、软件系统故障等等。一般地讲,在技术人员在现场 的情况下,恢复服务器正常可能需要 10 分钟、几小时甚至几天。从实际经验上 看,除非是简单地重启服务器(可能隐患仍然存在),否则往往需要几个小时以 上。而如果技术人员不在现场,则恢复服务的时间就更长了。
9、 测试主-从服务器是否成功
二、主——主热备
1、 在备机上授予主机热备用户 2、 如果数据库中使用了自增的主键,为避免主键冲突问题在主机 A 和主机 B 的
my.cnf 配置文件下,设置自增主键开始的位置,使主键岔开 主机 A【mysqld】后面添加 auto_increment_increment= 2 auto_increment_offset =1 主机 B【mysqld】后面添加 auto_increment_increment= 2 auto_increment_offset =2
第二种,双机互备方式则是在双机热备的基础上,两个相对独立的应用在两 台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务 器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,这 种方式实际上是双机热备方案的一种应用。
双机热备方案当一台服务器出现故障时,另一台服务器根据心跳侦测的情况 做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的,在很 短时间内完成,从而不会对业务造成大的影响。由于使用共享的存储设备,因此 两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理。
5.Mysql 双机热备实现的配置
Mysql 的双机备份有一个很简单的第三方软件可以实现,那就是 SQLyog, 他有一个功能叫 sja(SQLyog Job Agent)可以轻松实现,但是却有一个不足之处, 就是 Mysql 表里必须有一个 primary key,即主键值,如果没有,则此表不能用 sja 来实现。(我并没有用这种方法测试,只是在网上了解到这时一种实现双机 备份的方法)
一、主——从热备
由于 Mysql 不同版本之间的(二进制日志)binlog 格式可能会不太一样,
因此最好的搭配组合是主(Master)服务器的 Mysql 版本和从(Slave)
服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。
1、主机 mysql 授予备机 replicat 帐户 grant replication slave on *.* to
//需要备份的数据
库名 多个库以逗号分隔;
log_bin_trust_function_creators=TRUE //若涉
及
及
同
步
函
数
或
者
存
储
过
程
Biblioteka Baidu
需 要 配 置, 否 则 主 备 会 产 生 异 常 不 能 同 步 3、重启 mysql 服务 4、查看主服务器的状态(show master status)的到两个参数:File 和 Position
5.Mysql 主从双机热备当主机出故障从机及时接替主机工作 的探讨
目前来说 Heartbeat 项目是 Linux-HA 工程的一个组成部分 在 Heartbeat 集群中,最核心的是 heartbeat 模块的心跳监测部分和集群资源管理模块
3.双机热备技术与备份的概念区别
热备份指的是:high available 即高可用,而备份批的是 Backup,即数据备份的 一种,这是两种不同的概念,应对的产品也是两种功能上完全不同的产品。热备 份主要保障业务的连续性,实现的方法是故障点的转移。而备份,主要目的是为 了防止数据丢失,而做的一份拷贝,所以备份强调的是数据恢复而不是应用的故 障转移。
配置时遇到的问题: 1、Slave_IO_Runnning:NO Mysql replication 中 slave 机器中有两个关键进程,死一个都 不行,一个是 slave_sql_running 一个是 Slave_IO_Running, 他们一个负责自己的 slave mysql 进程,一个负责主机的 io 通信,其中我在配置时遇见了这个问题: 原因分析:多个备机的 server-id 一样 解决方法:把备机上的 server-id 改成不相同的。 2、修改备机的 master 参数时,开启 slave 失败 原因分析:修改备机 master 参数后,需要重启备机的 mysql 服务 解决方法:重启备机的 mysql 服务 3、互为主---主热备时,查看 B 机的 master 状态显示为空 原因分析:B 机配置文件出错 解决方法:在 B 机配置文件里添加 log-bin=mysql-bin,重启 备机的 mysql 服务
Auto_increment_increment 和 auto_increment_offset 用于主- 主服务器(master-to-master)复制,并可以用来控制 AUTO_INCREMENT 列的操作。两个变量均可以设置为全 局或局部变量,并且假定每个值都可以为 1 到 65,535 之间的 整数值。将其中一个变量设置为 0 会使该变量为 1。 这两个变量影响 AUTO_INCREMENT 列的方式: auto_increment_increment 控制列中的值的增量值, auto_increment_offset 确定 AUTO_INCREMENT 列值的起点。 如果 auto_increment_offset 的值大于 auto_increment_increment 的值,则 auto_increment_offset 的值 被忽略。例如:表内已有一些数据,就会用现在已有的最大自 增值做为初始值。
第二种方法就是用 Mysql 自身的 Replication 机制来实现: 首先 mysql 的复制机制: (1) master 将改变记录到二进制日志(binary log)中(这些 记录叫做二进制日志事件,binary log events); (2) slave 将 master 的 binary log events 拷贝到它的中继日 志(relay log); (3) slave 重做中继日志中的事件,将改变反映它自己的 数据。如图示:
4.双机热备方案的主要两种组建方式
双机热备方案在进行讨论的时候一定要考虑到很多的因素,其中在各种环境 下应用的时候需要格外的引起注意。当然还是有主要的两方式可以借鉴考虑的。
第一种,双机热备它的工作原理是使用两台服务器,一台作为主服务器 (Active),运行应用系统来提供服务。另一台作为备机,安装完全一样的应用 系统,但处于待机状态(Standby)。当 Active 服务器出现故障时,通过软件诊 测将 Standby 机器激活,保证应用在短时间内完成恢复正常使用。
而对于一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此, 就需要通过双机热备服务,来避免长时间的服务中断,保证系统长期、可靠的服 务。
当然,决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及 对服务中断的容忍程度,以些决定是否使用双机热备。换句话说,就是你的用户 能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。
表示打开 binlog,打开该选项才可以通过 I/O 写到 Slave 的 relay-log,也是可以进行 replication 的前提。
Binlog-do-db
表示需要记录二进制日志的数据库。如果有多个数据可以用 逗号分隔,或者使用多个 binlog-do-dg 选项。
Auto_increment_offset 和 Auto_increment_increment
对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所 讲分成广义与狭义两种意义来说。
从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行 同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而 在不需要人工干预的情况下,自动保证系统能持续提供服务。
从狭义上讲,双机热备就是使用互为备份的两台服务器共同执行同一服务, 其中一台主机为工作机(Primary Server),另一台主机为备份主机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机 的运行情况(一般是通过心跳诊断,工作机同时也在检测备份机是否正常),当 工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继 续支持关键应用服务,保证系统不间断的运行。双机热备针对的是 IT 核心服务 器、存储、网络路由交换的故障的高可用性解决方案。
5、 创建库 sms 6、 配置备机的 my.cnf, 在[mysqld]下添加以下几行
server-id = 2 log_bin_trust_function_creators=TRUE
7、 修改备机 master 的状态
change master to >master_host='59.151.15.36', >master_user='replicate', >master_password='123456', >master_log_file=' mysql-bin.000006 ', >master_log_pos=585;
3、 修改主机 B 上的配置文件增加参数 binlog-do-db=sms log-bin=mysql-bin
4、 查看主机 B 的 master 参数 5、 设置修改服务器 A 的数据库对应的 master 服务 6、 服务器 A 启动 slave 服务,查看 slave 状态 7、 验证是否可以实现主-----主热备
master_log_file, master_log_pos 由主服务器(Master)查出的状态值中确定。
8、 备机上启动 slave,并查看 slave 状态(show slave status\G)
其中需要注意的 Slave_IO_Runnning 和 Slave_SQL_Running 两项值均为 YES 表示设置从服务器成功
在考虑双机热备时,需要注意,一般意义上的双机热备都会有一个切换过程, 这个切换过程可能是一分钟左右。在切换过程中,服务是有可能短时间中断的。 但是,当切换完成后,服务将正常恢复。因此,双机热备不是无缝、不中断的, 但它能够保证在出现系统故障时,能够很快恢复正常的服务,业务不致受到影响。 而如果没有双机热备,则一旦出现服务器故障,可能会出现几个小时的服务中断, 对业务的影响就可能会造成很严重的损失。
如果需要保证双机的同步进度,而忽略同步时异常的信息(比如主键冲突等) 可以在 my.cnf 中的【mysqld】添加
slave-skip-erroes=all //忽略错误,避免 slave 被 crash, 能保证数据复制的进度,不一致的数据可在后期手动同步
Server-id
ID 值唯一的标识了复制群集中的主从服务器,因此它们必 须各不相同。Master_id 必须为 1 到 232-1 之间的一个正整 数值,slave_id 值必须为 2 到 232-1 之间的一个正整数值。
1. 双机热备
集群系统主要为高可用(High Availability)集群,简称 HA 集群。常见的 就是 2 个节点做成的 HA 集群,有很多通俗的不科学的名称,比如“双机热备”, “双机互备” ,“双机”。这样做的好处是当服务器启动的时候,两台服务器 一个作为主服务器,另一个做为从服务器。测试机每几秒会 ping 主机,当发现 主机没有回应,就证明主机宕机了,那么从机马上会启动相应的服务,继续进行 服务。这样就可以保证服务不间断。
'replicate'@'218.206.70.146' identified by '123456';
2 修改主机 my.cnf 配置文件,在[mysqld]下添加以下几行
server-id = 1
//主机和备机 id 不
能相同
log-bin=mysql-bin
//日志文件的名称
binlog-do-db = sms
2.为什么要进行双机热备?
双机热备服务针对的是服务器的故障。服务器的故障可能由各种原因引起, 如设备故障、操作系统故障、软件系统故障等等。一般地讲,在技术人员在现场 的情况下,恢复服务器正常可能需要 10 分钟、几小时甚至几天。从实际经验上 看,除非是简单地重启服务器(可能隐患仍然存在),否则往往需要几个小时以 上。而如果技术人员不在现场,则恢复服务的时间就更长了。
9、 测试主-从服务器是否成功
二、主——主热备
1、 在备机上授予主机热备用户 2、 如果数据库中使用了自增的主键,为避免主键冲突问题在主机 A 和主机 B 的
my.cnf 配置文件下,设置自增主键开始的位置,使主键岔开 主机 A【mysqld】后面添加 auto_increment_increment= 2 auto_increment_offset =1 主机 B【mysqld】后面添加 auto_increment_increment= 2 auto_increment_offset =2
第二种,双机互备方式则是在双机热备的基础上,两个相对独立的应用在两 台机器同时运行,但彼此均设为备机,当某一台服务器出现故障时,另一台服务 器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性,这 种方式实际上是双机热备方案的一种应用。
双机热备方案当一台服务器出现故障时,另一台服务器根据心跳侦测的情况 做出判断,并进行切换,接管服务。对于用户而言,这一过程是全自动的,在很 短时间内完成,从而不会对业务造成大的影响。由于使用共享的存储设备,因此 两台服务器使用的实际上是一样的数据,由双机或集群软件对其进行管理。
5.Mysql 双机热备实现的配置
Mysql 的双机备份有一个很简单的第三方软件可以实现,那就是 SQLyog, 他有一个功能叫 sja(SQLyog Job Agent)可以轻松实现,但是却有一个不足之处, 就是 Mysql 表里必须有一个 primary key,即主键值,如果没有,则此表不能用 sja 来实现。(我并没有用这种方法测试,只是在网上了解到这时一种实现双机 备份的方法)
一、主——从热备
由于 Mysql 不同版本之间的(二进制日志)binlog 格式可能会不太一样,
因此最好的搭配组合是主(Master)服务器的 Mysql 版本和从(Slave)
服务器版本相同或者更低,主服务器的版本肯定不能高于从服务器版本。
1、主机 mysql 授予备机 replicat 帐户 grant replication slave on *.* to
//需要备份的数据
库名 多个库以逗号分隔;
log_bin_trust_function_creators=TRUE //若涉
及
及
同
步
函
数
或
者
存
储
过
程
Biblioteka Baidu
需 要 配 置, 否 则 主 备 会 产 生 异 常 不 能 同 步 3、重启 mysql 服务 4、查看主服务器的状态(show master status)的到两个参数:File 和 Position
5.Mysql 主从双机热备当主机出故障从机及时接替主机工作 的探讨
目前来说 Heartbeat 项目是 Linux-HA 工程的一个组成部分 在 Heartbeat 集群中,最核心的是 heartbeat 模块的心跳监测部分和集群资源管理模块
3.双机热备技术与备份的概念区别
热备份指的是:high available 即高可用,而备份批的是 Backup,即数据备份的 一种,这是两种不同的概念,应对的产品也是两种功能上完全不同的产品。热备 份主要保障业务的连续性,实现的方法是故障点的转移。而备份,主要目的是为 了防止数据丢失,而做的一份拷贝,所以备份强调的是数据恢复而不是应用的故 障转移。
配置时遇到的问题: 1、Slave_IO_Runnning:NO Mysql replication 中 slave 机器中有两个关键进程,死一个都 不行,一个是 slave_sql_running 一个是 Slave_IO_Running, 他们一个负责自己的 slave mysql 进程,一个负责主机的 io 通信,其中我在配置时遇见了这个问题: 原因分析:多个备机的 server-id 一样 解决方法:把备机上的 server-id 改成不相同的。 2、修改备机的 master 参数时,开启 slave 失败 原因分析:修改备机 master 参数后,需要重启备机的 mysql 服务 解决方法:重启备机的 mysql 服务 3、互为主---主热备时,查看 B 机的 master 状态显示为空 原因分析:B 机配置文件出错 解决方法:在 B 机配置文件里添加 log-bin=mysql-bin,重启 备机的 mysql 服务
Auto_increment_increment 和 auto_increment_offset 用于主- 主服务器(master-to-master)复制,并可以用来控制 AUTO_INCREMENT 列的操作。两个变量均可以设置为全 局或局部变量,并且假定每个值都可以为 1 到 65,535 之间的 整数值。将其中一个变量设置为 0 会使该变量为 1。 这两个变量影响 AUTO_INCREMENT 列的方式: auto_increment_increment 控制列中的值的增量值, auto_increment_offset 确定 AUTO_INCREMENT 列值的起点。 如果 auto_increment_offset 的值大于 auto_increment_increment 的值,则 auto_increment_offset 的值 被忽略。例如:表内已有一些数据,就会用现在已有的最大自 增值做为初始值。
第二种方法就是用 Mysql 自身的 Replication 机制来实现: 首先 mysql 的复制机制: (1) master 将改变记录到二进制日志(binary log)中(这些 记录叫做二进制日志事件,binary log events); (2) slave 将 master 的 binary log events 拷贝到它的中继日 志(relay log); (3) slave 重做中继日志中的事件,将改变反映它自己的 数据。如图示:
4.双机热备方案的主要两种组建方式
双机热备方案在进行讨论的时候一定要考虑到很多的因素,其中在各种环境 下应用的时候需要格外的引起注意。当然还是有主要的两方式可以借鉴考虑的。
第一种,双机热备它的工作原理是使用两台服务器,一台作为主服务器 (Active),运行应用系统来提供服务。另一台作为备机,安装完全一样的应用 系统,但处于待机状态(Standby)。当 Active 服务器出现故障时,通过软件诊 测将 Standby 机器激活,保证应用在短时间内完成恢复正常使用。
而对于一些重要系统而言,用户是很难忍受这样长时间的服务中断的。因此, 就需要通过双机热备服务,来避免长时间的服务中断,保证系统长期、可靠的服 务。
当然,决定是否使用双机热备,正确的方法是要分析一下系统的重要性以及 对服务中断的容忍程度,以些决定是否使用双机热备。换句话说,就是你的用户 能容忍多长时间恢复服务,如果服务不能恢复会造成多大的影响。