




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、搞定mysql双机备份为了数据的安全,客户有两台机器作为互相备份,当一台机器出现故障时,自动切换到另外一台服务器。大部分的软件我们是通过lifekeeper来实现的,但是mysql的双机备份在lifekeeper里没有实现,看来,只有我手动来实现mysql的双机备份了哦。先说说环境quote:操作系统:windows 2003 servermysql版本:v4.1互备数据库:bbsserver1:server2:其实,mysql的双机备份有一个很简单的第三方软件可以实现,那就是sqlyog (/),他有一个功能叫sja(s
2、qlyog job agent ,/sqlyog/sja.html),可以轻松实现,但是却有一个不足,那就是mysql表里必须有一个primary key,如果没有,则此表不能用sja来实现。我查看了一下,我们需要互备的数据中就有两三个表没有primary key,看来要放弃这个方法了。第二种方法就是用mysql自身的replication机制来实现了。据说mysql 3.23以上的版本都有此功能。下面来说说具体的步骤。1)先在每台服务器上各安装好mysql,保证正常运行,在mysql的安装目录里各建立一个目录logs,如f:mysql4.1logs,供
3、后面步骤使用。2)将要互备的初始化数据在每台服务器上各导入一份,且保持两台服务器要互备的初始化数据一致。这个步骤很重要。3)在每个server上各增加一个备份用户,且赋予一定的权限。3.1)在server1上quote:grant replication slave,reload,super on *.* to backup identified by 123456;之后立即在server2上用如下命令来测试backup用户是否能连接上server1quote:f:mysql4.1binmysql.exe -h -ubackup -p123456如果能连接上,表
4、明互备帐户增加ok!3.2)重复上述动作,在server2上quote:grant replication slave,reload,super on *.* to backup identified by 123456;之后立即在server1上用如下命令来测试backup用户是否能连接上server2quote:f:mysql4.1binmysql.exe -h -ubackup -p123456如果能连接上,表明互备帐户增加ok!4)修改mysql配置文件,增加互备参数配置。4.1)停掉server1的mysql,修改my.ini,在mysqld区域内增加
5、如下信息:quote:#mysql的双机备份,by longware,2006-05-26server-id=1log-bin=f:/mysql4.1/logs/syncmaster-host=master-user=backupmaster-password=123456master-port=3306master-connect-retry=60replicate-do-db=bbs#保存并关闭my.ini文件,重启mysql服务,观察logs目录下面有没有类似sync.000001、sync.index的文件生成,观察data目录里有没有*.info、*-relay-bi
6、n.000001、*-relay-bin.index的文件生成,如果两个目录都有,说明互备参数配置正确。4.2)停掉server2的mysql,修改my.ini,在mysqld区域内增加如下信息:quote:#mysql的双机备份,by longware,2006-05-26server-id=2log-bin=f:/mysql4.1/logs/syncmaster-host=master-user=backupmaster-password=123456master-port=3306master-connect-retry=60replicate-do-db=bbs#保存并
7、关闭my.ini文件,重启mysql服务,观察logs目录下面有没有类似sync.000001、sync.index的文件生成,观察data目录里有没有*.info、*-relay-bin.000001、*-relay-bin.index的文件生成,如果两个目录都有,说明互备参数配置正确。4.3)如果没有看到上步中说的文件,说明配置文件没有起作用,请检查mysql配置文件的位置,很可能在c:windows下面,也可能在c:documents and settingsadministratorwindows下面,还可能在f:mysql4.1下面,具体要看您的mysql服务的启动参数,您可以去wi
8、ndows的“开始控制面板管理工具服务”中,双击mysql的服务名称,查看”可执行文件的路径“项的值,如果是quote:f:/mysql4.1/bin/mysqld-nt.exe则my.ini可能就在c:windows下面,如果是quote:f:mysql4.1binmysqld-nt -defaults-file=f:mysql4.1my.ini mysql则my.ini就在f:mysql4.1下面。我的一个朋友就因为没有搞清楚my.ini的位置,折腾了大半天也每搞定。5)分别停掉两台机器的mysql服务,再次确保两台机器的要互备的初始化数据一致,删除logs下面的文件,删除data下面的非
9、目录文件,确保网络畅通,再分别启动server1和server2的mysql服务,mysql双机互备成功了。6)互备测试,在server1里的bbs数据库里建一张表,插几条数据,再登陆到server2里,看看数据是否存在,存在表明ok。7)注意:两台机器的mysql互备的初始化数据要相同。如果要单向备份,将其中的一台服务器的my.ini的互备配置注释掉重启即可。8)官方参考资料:/doc/refman/5.1/en/ndbcluster.html/doc/refman/ . er-replication.html日志抓
10、取和数据载入(replicationslave, replicationclient )mysql手册版本 5.0.20-mysql同步(二)发布于:2006-8-15 17:10:51 已被阅读: 247 6.4 设置同步 以下描述了如何快速设置mysql同步服务器。假设你打算同步全部的数据库,并且之前没有设置过。需要关闭master服务器以完成全部的步骤。 本章描述的过程可以用于一个slave的情况,也可以用于多个slave的情况。 这只是一个最直接设置slave的办法,并不是只有一个。例如,已经有了master的数据快照(snapshot),master已经设置了服务器编号id(serv
11、er_id)并且启用了二进制日志,这就无需关闭master或者阻止在master上更新数据了。详情请看6.9 replication faq。 想要完全掌握mysql同步设置,最好把本章全部读完,并且测试在14.6.1 sql statements for controlling master servers和14.6.2 sql statements for controlling slave servers中提到的全部语句。而且要熟悉各种同步设置选项,详情请看6.8 replication startup options。 注意,这个过程以及后面一些同步sql语句需要有 super 权限。
12、mysql 4.0.2以前,则是 process 权限。 请确认master和slave上都安装了较近的mysql版本,且这些版本之间要能兼容,在6.5 replication compatibility between mysql versions中列出来了。请确认在最新版本中还有存在问题,否则不要报告该bug。 在master上新加一个帐户,slave才能用它来连接。这个帐户必须授予 replication slave 权限。如果这个帐户只用于同步(推荐这么做),那就没必要授予其他权限了。设定你的域是 ,想要授权一个帐户 repl 使用密码 slavepass,允许
13、它可以在域里的任何主机连接到master上。用 grant 语句来创建帐户: mysql grant replication slave on *.* - to repl%. identified by slavepass; 在mysql 4.0.2以前,用 file 权限来代替 replication slave: mysql grant file on *.* - to repl%. identified by slavepass; 如果打算在slave上执行 load table from master 或 load data from m
14、aster 语句,那么必须给该帐户授予附加权限: 授予全局 super 和 reload 权限。 授予对想要加载的所有表上的 select 权限。在master上任何没有 select 权限的表都会被 load data from master 略过。 如果只用到 myisam 表,执行 flush tables with read lock 语句刷新所有表并且阻止其他写入: mysql flush tables with read lock; 不要退出执行 flush tables 语句的客户端,以保持读锁有效(如果退出了,读锁就释放了)。然后从master上取得数据快照。比较简单的办法就是
15、把数据目录打包压缩。例如,unix上的 tar, powerarchiver, winrar, winzip,或windows上的类似程序。想要用 tar 来创建一个压缩包,包括所有的数据库,只需执行以下命令(把目录改成你的真实路径): shell tar -cvf /tmp/mysql-snapshot.tar . 如果只想打包一个数据库 this_db,只需执行命令: shell tar -cvf /tmp/mysql-snapshot.tar ./this_db 然后把这个文件拷贝到slave的 /tmp 目录下。在slave上,执行以下命令解开压缩包(把目录改成你的真实路径): she
16、ll tar -xvf /tmp/mysql-snapshot.tar 可能不需要同步 mysql 数据库,因为在slave上的权限表和master不一样。这时,解开压缩包的时候要排除它。同时在压缩包中也不要包含任何日志文件,或者 或 文件。当在master上的 flush tables with read lock 语句还生效时,在master上读取当前二进制文件的文件名及偏移位置: mysql show master status; +-+-+-+-+ | file | position | binlog_do_db | binlog_
17、ignore_db | +-+-+-+-+ | mysql-bin.003 | 73 | test | manual,mysql | +-+-+-+-+file 字段显示了二进制日志文件名,position 字段显示了日志偏移位置。在这个例子中,日志文件是 mysql-bin.003,偏移位置是 73。记下这些值,在后面设置slave的时候就需要用到它们了。它们表示了slave要从master的哪个偏移位置开始处理更新操作。取得快照和记录下日志名及偏移位置后,就可以让master释放读锁了: mysql unlock tables; 如果用到 innodb 表,那么最好使用 innodb ho
18、t backup 工具。它无需在master上请求任何锁就能做到快照的一致性,并且在后面中在slave上要用到的快照中已经记录了日志文件名以及偏移位置。innodb hot backup 是费免费(商业的)的附加工具,它没有包含在mysql发布包中。访问 innodb hot backup 的主页 /manual.php 查看更多详细信息。除去 innodb hot backup 的另一个最快的办法就是关闭master服务器,拷贝 innodb 数据文件,日志文件,以及表结构定义文件(.frm 文件)。想要记录当前日志文件及偏移位置,需要在master关
19、闭前执行如下可语句: mysql flush tables with read lock; mysql show master status; 尽快记下 show master status 显示结果中的日志文件及偏移位置。然后,在不解锁的情况下关闭master,确保master上的快照和记录的结果一致: shell mysqladmin -u root shutdown 还有一个方法可以同时用于 myisam 和 innodb 表,这就是在master上作sql转储而无需如上所述备份二进制日志。在master上运行 mysqldump -master-data 命令,然后把结果文件转储到sl
20、ave上。不过,这比拷贝二进制日志慢点。如果master在以前没有启用 -log-bin 选项,那么执行 show master status 语句的结果中的文件名及偏移位置值为空了,那么后面在slave上指定的参数值就是空字符串() 和 4了。 确认master上的 f 文件 mysqld 区间有 log-bin 选项。这个区间还必须有 server-id=master_id 选项,的值必须是 1 到 232-1 之间的正整数。例如: mysqld log-bin server-id=1 如果这些配置选项不存在,那么就加上并且重启master。 关闭要做slave的服务器,在 my
21、.cnf 文件中增加如下选项: mysqld server-id=slave_id slave_id 的值和 master_id 类似,是 1 到 232-1 之间的正整数。另外,这个id必须不能和master的id一样。例如: mysqld server-id=2 如果有多个slave,那么每个slave都必须要有一个唯一的 server-id,它的值不能和master以及其其他slave的值一样。可以把 server-id 想象成为ip地址:这些id标识了整个同步组合中的每个服务器。如果没有指定 server-id 的值,如果也没定义 master-host,那么它的值就为1,否则为2。注
22、意,如果没有设定 server-id,那么master就会拒绝所有的slave连接,同时slave也会拒绝连接到master上。因此,省略配置 server-id 只对备份二进制日志有利。 如果已经备份了master上的数据(直接打包压缩的方式),那么在slave启动之前把它们拷贝过去。要确保文件的权限属主等设置没问题。mysql运行的用户必须对这些文件有读写权限,就跟在master上一样。如果是用 mysqldump 备份的,那么可以直接启动salve(直接跳到下一步)。 启动slave,如果它之前已经运行同步了,那么在启动slave的时候使用 -skip-slave-start 选项使之不
23、会立刻去连接master。最好也使用 -log-warnings 选项(从 mysql 4.0.19 和 4.1.2 开始就是默认启用了)来启动slave,以知道发生问题时的更详细的信息(例如,网络或者连接问题)。从开始mysql 4.0.21 和 4.1.3,异常中止的连接不再记录到错误日志中,除非 -log-warnings 选项的值大于1。 如果在master上用 mysqldump 备份数据的话,把文件导入slave中: shell mysql -u root -p change master to - master_host=master_host_name, - master_user=replication_user_name, - master_password=replication_password, - master_log_file=recorded_log_file_name, - m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美发装修合同协议书
- 解析纺织品评估中的数据处理试题及答案
- 协议书与合同书的区别
- 饭馆工作人员合同协议书
- 共同合同协议书
- 甲方强行解除合同协议书
- 劳动合同和培训协议书
- 租房房屋合同协议书
- 转租公寓合同协议书
- 分房合同协议书
- 2023年山东省烟台市中考历史真题卷(含答案与解析)
- 国开2023春《语言学概论》形考任务1-3+大作业参考答案
- 第七章第四节+俄罗斯第二课时课件人教版七年级地理下册
- 大学生国家安全教育智慧树知到答案章节测试2023年广西科技大学
- 小儿杂病(中医儿科学课件)
- 造纸操作规程6篇
- 叉车日常保养检查记录表
- YY/T 1544-2017环氧乙烷灭菌安全性和有效性的基础保障要求
- GB/T 19582.3-2008基于Modbus协议的工业自动化网络规范第3部分:Modbus协议在TCP/IP上的实现指南
- GB/T 19228.1-2003不锈钢卡压式管件
- GA 1517-2018金银珠宝营业场所安全防范要求
评论
0/150
提交评论