mysql双机热备部署研发中心2013/12/071双机热备概述从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。从狭义上讲,双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(PrimaryServer),另一台主机为备份主机(StandbyServer)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机的运行情况(一般是通过心跳诊断,工作机同时也在检测备份机是否正常),当工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继续支持关键应用服务,保证系统不间断的运行。双机热备针对的是IT核心服务器、存储、网络路由交换的故障的高可用性解决方案。2数据库部署各种数据库的双机热备模式、概念和属于都有一定的差别,以下内容仅以MySQL为例进行描述1.主-从模式部署:将主服务器需要同步的数据库内容进行备份一份,上传到从服务器上,保证始初时两服务器中数据库内容一致。这种模式从机作为主机的备份,主机数据更新后,自动同步到从机,反之则不然,其用途主要是在线备份。IMCP一般情况下不是用这种模式,但是当数据库达到TB级别是,备份一次数据库的时间可以达数天之久,这种模式的作用就显示出来了。这种模式需要2台服务器,分别作为主机和从机1.1环境描述A服务器(主服务器Master):192.168.8.122B服务器(从服务器Slave):192.168.8.125主从服务器的Mysql版本皆为5.5.28在win7中,需要备份的数据库名imcp_new,imcphist_new,将主服务器需要同步的数据库内容进行备份一份,上传到从服务器上,保证始初时两服务器中数据库内容一致。1.2主服务器Master配置1.2.1创建同步用户进入mysql操作界面,在主服务器上为从服务器建立一个连接帐户,该帐户必须授予REPLICATIONSLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。操作指令如下:mysqlgrantreplicationslaveon*.*to'replicate'@'192.168.8.125'identifiedby'abcd1234';mysqlflushprivileges;创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用replicat帐户对主服务器(Master)数据库进行访问下,看下是否能连接成功。在从服务器(Slave)上,用管理员身份进入cmd,进入到mysql目录的bin文件下,输入如下指令:Mysql目标\binmysql–h192.168.8.122–ureplicate-p如果出现下面的结果,则表示能登录成功,说明可以对这两台服务器进行双机热备进行操作。1.2.2修改mysql配置文件如果上面的准备工作做好,那边我们就可以进行对mysql配置文件进行修改了,首先找到mysql配置所有在目录,在其下有配置文件my.ini。找到配置文件my.ini打开后,在[mysqld]下修改即可:[mysqld]server-id=1log-bin=mysql-bin//其中这两行是本来就有的,可以不用动,添加下面两行即可binlog-do-db=imcp_newbinlog-do-db=imcphist_newbinlog-ignore-db=mysql1.2.3重启mysql服务修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。步骤:1点开始,在搜索栏里输入cmd;2对着在上面你看到cmd.exe的快捷方式右击,找到以管理员身份运行;3在命令行里输入netstopmysql,接着回车;4接着在命令行里输入netstartmysql,回车;1.2.4查看主服务器状态进入mysql服务后,可通过指令查看Master状态,输入如下指令:注意看里面的参数,特别前面两个File和Position,在从服务器(Slave)配置主从关系会有用到的。注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。1.3从服务器Slave配置1.3.1修改配置文件因为这里面是以主-从方式实现mysql双机热备的,所以在从服务器就不用在建立同步帐户了,直接打开配置文件my.ini进行修改即可,道理还是同修改主服务器上的一样,只不过需要修改的参数不一样而已。如下:[mysqld]server-id=2log-bin=mysql-binreplicate-do-db=imcp_newreplicate-do-db=imcphist_newreplicate-ignore-db=mysql,information_schema,performance_schema1.3.2重启mysql服务修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。1.3.3用changemster语句指定同步位置这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:mysqlstopslave;//先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。mysqlchangemastertomaster_host='192.168.8.122',master_user='replicate',master_password='abcd1234',master_log_file='mysql-bin.000033',master_log_pos=13523143;注:master_log_file,master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File,master_log_pos对应Position。Mysql5.x以上版本已经不支持在配置文件中指定主服务器相关选项。遇到的问题,如果按上面步骤之后还出现如下情况:则要重新设置slave。指令如下mysqlstopslave;mysqlresetslave;之后停止slave线程重新开始。成功后,则可以开启slave线程了。mysqlstartslave;2.3.4查看从服务器(Slave)状态用如下指令进行查看mysqlshowslavestatus\G查看下面两项值均为Yes,即表示设置从服务器成功。Slave_IO_Running:YesSlave_SQL_Running:Yes2.主-主模式部署服务器还是用回现在这两台服务器1.1创建同步用户同时在主从服务器建立一个连接帐户,该帐户必须授予REPLIATIONSLAVE权限。这里因为服务器A和服务器B互为主从,所以都要分别建立一个同步用户。服务器A:mysqlgrantreplicationslaveon*.*to'replicate'@'192.168.8.125'identifiedby'abcd123456';mysqlflushprivileges;服务器B:mysqlgrantreplicationslaveon*.*to'replicate'@'192.168.8.122'identifiedby'abcd123456';mysqlflushprivileges;3.2修改配置文件my.ini服务器A[mysqld]server-id=1log-bin=mysql-binbinlog-do-db=imcp_newbinlog-do-db=imcphist_newbinlog-ignore-db=mysqllog-slave-updatessync_binlog=1auto_increment_offset=1auto_increment_increment=2replicate_do_db=imcp_newreplicate_do_db=imcphist_newreplicate_ignore_db=mysqlreplicate_ignore_db=information_schema服务器B:[mysqld]server-id=2log-bin=mysql-binreplicate-do-db=imcp_newreplicate-do-db=imcphist_newreplicate-ignore-db=mysql,information_schema,performance_schemabinlog-do-db=imcp_newbinlog-do-db=imcphist_newbinlog-ignore-db=mysqllog-slave-updatessync_binlog=1auto_increment_offset=2auto_increment_increment=23.3分别重启A服务器和B服务器上的mysql服务重启服务器方式和上面的一样,这里就不做讲解了。3.4分别查A服务器和B服务器作为主服务器的状态服务器A:服务器B:3.5分别在A服务器和B服务器上用changemasterto指定同步位置服务器A:mysqlchangemastertomaster_host='192.168.8.125',master_user='replicate',master_password='abcd123456',master_log_file='mysql-bin.000048',master_log_pos=13542896;服务器B:mysqlchangemastertomaster_host='192.168.8.122',master_user='replicate',master_password='abcd123456',master_log_file=’mysql-bin.000033’,master_log_pos=13523143;3.6分别在A和B服务器上重启从服务线程mysqlstartslave;3.7分别在A和B服务器上查看从服务器状态mysqlshowslavestatus\G查看下面两项值均为Yes,即表示设置从服务器成功。Slave_IO_Running:YesSlave_SQL_Running:Yes