当前位置: 首页 > 图文教程 > 网络编程 > PHP > MySQL手册版本 5.0.20-MySQL同步(二)

PHP
用PHP实现ODBC数据分页显示一例
用DBSQL类加快开发MySQL数据库程序的速度
多php服务器实现多session并发运行
多核编程中的负载平衡难题
将Oracle内置的安全特性用于php
在PHP中使用ASP.NET AJAX
php中计算时间差的几种方法
PHP 5.0对象模型深度探索之类的静态成员
让PHP管理小型的邮件列表
MagickWand for PHP linux INSTALL 安装
PHP中数组元素升序、降序及重新排序的函数
PHP后门的隐藏技巧测试报告
配置Apache 1.3或者Apache 2.0服务器的5个技巧
用Suhosin加强PHP脚本语言安全性
PHP动态网页编程常用技巧四则
解答:如何使用PHP开发高效的WEB系统
PHP实现上传文件生成小图加文字的实例
PHP实现定时生成HTML网站首页
教你用PHP写MySQL数据库的用户认证系统
加速动态网站 MySQL索引分析和优化

PHP 中的 MySQL手册版本 5.0.20-MySQL同步(二)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 46 ::
收藏到网摘: n/a

6.4 设置同步

以下描述了如何快速设置MySQL同步服务器。假设你打算同步全部的数据库,并且之前没有设置过。需要关闭master服务器以完成全部的步骤。

本章描述的过程可以用于一个slave的情况,也可以用于多个slave的情况。

这只是一个最直接设置slave的办法,并不是只有一个。例如,已经有了master的数据快照(snapshot),master已经设置了服务器编号ID(server_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 权限。MySQL 4.0.2以前,则是 PROCESS 权限。

请确认master和slave上都安装了较近的MySQL版本,且这些版本之间要能兼容,在"6.5 Replication Compatibility Between MySQL Versions"中列出来了。请确认在最新版本中还有存在问题,否则不要报告该bug。

在master上新加一个帐户,slave才能用它来连接。这个帐户必须授予 REPLICATION SLAVE 权限。如果这个帐户只用于同步(推荐这么做),那就没必要授予其他权限了。设定你的域是 mydomain.com,想要授权一个帐户 repl 使用密码 slavepass,允许它可以在域里的任何主机连接到master上。用 GRANT 语句来创建帐户:

mysql> GRANT REPLICATION SLAVE ON *.*

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

在MySQL 4.0.2以前,用 FILE 权限来代替 REPLICATION SLAVE:

mysql> GRANT FILE ON *.*

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

如果打算在slave上执行 LOAD TABLE FROM MASTER 或 LOAD DATA FROM MASTER 语句,那么必须给该帐户授予附加权限:

授予全局 SUPER 和 RELOAD 权限。

授予对想要加载的所有表上的 SELECT 权限。在master上任何没有 SELECT 权限的表都会被 LOAD DATA FROM MASTER 略过。

如果只用到 MyISAM 表,执行 FLUSH TABLES WITH READ LOCK 语句刷新所有表并且阻止其他写入:

mysql> FLUSH TABLES WITH READ LOCK;

不要退出执行 FLUSH TABLES 语句的客户端,以保持读锁有效(如果退出了,读锁就释放了)。然后从master上取得数据快照。比较简单的办法就是把数据目录打包压缩。例如,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 <