启荣's profile四喜·散渡幽灵PhotosBlogListsMore ![]() | Help |
|
|
6/16/2006 使用mysqldump导入数据需小心. mysqldump导出数据生成的脚本中,默认是在insert之前将表中的非唯一索引disable掉,insert完成之后再enable,如果在inert过程中发生了错误而退出,索引没有被enable,有对索引所在的列进行筛选的查询,就会有麻烦了.
解决主案:
mysqldump --force
这样无论如何,mysqldump会执行完的(除非你停掉MySQL或服务器).
散渡幽灵
2006-6-16 6/14/2006 不重启MySQL架设master/slave镜像细数了一下,整整两个月没有更新Blog了,最近工作有点小收获,便P.P.记下来了.
不重启MySQL架设master/slave镜像刘启荣 2006-6-14 镜像机制MySQL镜像的灵魂就是通过二进制变更日志来“传输”master机上的更新到slave机,记录传输信息的主要是在slave机上的两个文件master.info和relay-log.info。 Master.info文件 log-bin.041 /*master机上的二进制更新文件*/ 1411737 /*slave机读取该二进制文件的位置*/ 192.168.1.1 /*master机IP*/ Master_user /*slave访问master的用户*/ Master_psword /*slave访问master的密码*/ 3306 /*master机端口*/ 60 /*连接重试间隔(秒)*/ Relay-log.info ./host-relay-bin.001 /*中继日志*/ 81774 /*slave机上的relay-log读取位置*/ log-bin.041 /*正在读取的master上的log*/ 81736 /*SQL执行的位置*/ 传统的m/s架设大致是:1. 配置slave(master-host,master-port,master-user,master-password etc); 2. 赋于slave机对于master机的replication slave , super, reload等权限; 3. 停止master机,拷贝数据到slave,清空master上所有的二进制变更日志; 4. 重起master; 5. 重起slave。 上面几步中关键的一步是第3步,目的很多,停止master是为了访止在拷贝过程中数据不被修改,清空二进制日志(如果服务器激活了该日志)是为了让日志从log-bin.001开始,因为slave机将会自动创建master.info和relay-log.info两个文件,文件中所有的值都是初始值,log从001开始编号,所有的位置也都是FIRST。 不重启架设知道了m/s的机制,不重启架起来就很方便了,也就三四步 1, 拷贝master机上数据,刷新日志。这个过程要防止拷贝过程中的数据修改,如果数据更新不是很频繁的话,可以用mysqlhotcpy工具,它在拷贝前锁上所有的表,拷贝完成后又将日志flush一下(就是再新建一个日志文件),真是人性化呀。如果更新频繁的话,用mysqlhotcpy可能因为锁表过久而影响前端服务,这时有一个不太安全的做法,就是直接copy,然后手动flush日志(mysqladmin flush-logs),然后在slave机上将所有的表repair一下就OK了。 2, 手动创建master.info和relay-log.info。 master.info文件 log-bin.041 /*master机上的二进制更新文件,就是你flush之后的新日志*/ 4 /*slave机读取该二进制文件的位置 ,一定是4 经验*/ 192.168.1.1 /*master机IP*/ Master_user /*slave访问master的用户*/ Master_psword /*slave访问master的密码*/ 3306 /*master机端口*/ 60 /*连接重试间隔(秒)*/ Relay-log.info ./host-relay-bin.001 /*中继日志*/ 0 /*slave机上的relay-log读取位置*/ log-bin.041 /*正在读取的master上的log*/ 0 /*SQL执行的位置*/ 3, 修改my.cnf文件,如果你在第二步是直接copy的数据,记得加上--slave-skip-errors=1062,因为1062错误是主键冲突错误。 4, 启动slave上的MySQL。如果你在第二步是直接copy的数据,记得mysqlcheck –auto-repair,原因是copy数据的过程中你的数据表可能会损坏。
一点经验之谈,其实要架镜像,没必要非要这么折腾,大可将日志呀info文件的删个清洁溜溜,然后拷贝重启,干净利落。我这么做,一为是因为停掉要master数据库对前端访问有一些影响,二来也想通过这个了解一个m/s的机制,没想到一来二去,也没费多少周折,就比较理想的架起来了,比想象的容易了很多。 所以,就抽时间写了出来,与大家一同分享心得。 新到的机器太TM爽了!!! |
|
|