首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > Mysql 的数据库复制功能 (Replication Database)
【标  题】:Mysql 的数据库复制功能 (Replication Database)
【关键字】:Mysql,Replication,Database
【来  源】:http://www.cublog.cn/u/4206/showart.php?id=107597

Mysql 的数据库复制功能 (Replication Database)

绝对蓝屏 [ihweb](黄华栋) <ihweb@cnfug.org>

Mysql 数据库相信大家已经投入了生产使用。很多人都将他和 PHP 集成在 Apache 中,为WebSite 服务。的确,他们在WebSite 中的应用比较多,而且PhpMyAdmin 又是一个PHP+Mysql 的最好应用例子。
那么Mysql 能不能实现两个系统之间通过TCP/IP去复制数据库?能不能实现实时复制呢?也就是说能不能实现同步(Synchronization)的问题。先概括介绍一下Mysql 的Replication Database功能。
复制(Replication)类似于拷贝数据库到另一台服务器上,但它是通过定义Master 和Slave的关系去实时地保证两个数据库的完全同步。这个功能在Mysql的3.23版中开始出现。
下面大家一起来测试一下Mysql的Replication 功能。

作者的平台是:
Master:Mysql 3.23.53-log on FreeBSD 4.7 Release IP:192.168.10.100
Slave: Mysql 3.23.56-log on FreeBSD 4.8 Stable IP:192.168.10.200
1、Master 机器设置权限,赋予Slave Relication 权利,并打包要同步的数据库结构。
MasterBSD# pwd
/usr/local/mysql/bin
MasterBSD#./mysql –u root –p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.53-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT FILE ON *.* TO replication@192.168.10.200 IDENTIFIED BY ‘repplication’;

(赋予192.168.10.200也就是Slave 机器有File权限)
然后打包要复制的数据库
MasterBSD# cd var
MasterBSD# tar czvf repdatabase.tar.gz repdatabase

这样,我们的到一个repdatabase数据库的打包文件repdatabase.tar.gz

2设置主服务器Master的my.cnf,启动Mysql服务
MasterBSD# vi /etc/my.cnf
在[mysqld]添加或修改以下的
[mysqld]
log-bin
server-id=1
sql-bin-update-same
binlog-do-db= repdatabase
针对repdatabase 库做replication 功能
然后把Master主服务器的Mysql重启。
MasterBSD# /usr/local/mysql/bin/mysqladmin –u root –p shutdown
MasterBSD# /usr/local/mysql/bin/safe_mysqld --user=mysql &
3、建立Slave数据库
刚才我们在Master中打包了repdatabase.tar.gz,它的作用就是要在Slave恢复成一样的数据库。先把Master 的repdatabase.tar.gz文件传到Slave机器中去。然后
SlaveBSD# tar zxvf repdatabase.tar.gz -C /usr/local/mysql/var/
4、修改Slave服务器的my.cnf
SlaveBSD# vi /etc/my.cnf
在[mysqld]添加或修改以下的
master-host=192.168.10.100
master-user=replication
master-password=replication
master-port=3306
server-id=2
master-connect-retry=60
replicate-do-db=reldatabase    [要更新的数据库]
log-slave-updates
5、重启动Slave的slave start。
SlaveBSD# /usr/local/mysql/bin/mysqladmin –u root –p shutdown
SlaveBSD# /usr/local/mysql/bin/safe_mysqld --user=mysql &
6、测试
先检测两个Mysql数据库中的repdatabase是否正常。
正常情况应该是Master和Slave 中的Mysql 都有相同的repdatabase 数据库,并且里面的数据都一样。
然后我们测试replication 功能是否起用。
在Master中的repdatabas数据库添加一笔数据:
MasterBSD# /usr/local/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12 to server version: 3.23.53-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use repdatabase;
Database changed
mysql> INSERT INTO `rep_table` ( `name` , `num` , `selectd ` ) VALUES ('test1', '4321', 'Y');
Query OK, 1 row affected (0.00 sec)
mysql>

在Slave的数据库中应该也会同样有这样一条数据
SlaveBSD# /usr/local/mysql/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 3.23.56-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select * from repdatabase.rep_table;
+--------+-----------+------------+
| name | num | selectd |
+--------+-----------+------------+
| aaa | 44444 | N |
| ddd | 111112222 | N |
| insert | 1234 | N |
| test | 12345 | N |
| test1 | 4321 | Y |    这一行就是Master插入的时候Slave 同步得回来的数据。
+--------+-----------+------------+
5 rows in set (0.01 sec)
mysql>
到此,我们的两个数据库replication 功能实验成功。



7、互为replication
在Mysql 的文档资料中也指出了,一台Mysql机器同样可以作为Master也可以作为Slave的,也可以互相replication数据。

8、应用
replication可以用在那方面呢?我的想法是,一台Mysql生产机器在提供繁忙的SQL查询,比如说是股市的查询,那它仅仅是作为查询而已。那么我们就可以通过两台机器,提供查询的机器为Slave,那么数据录入的机器是Master,通过双网卡去进行,请看下图:

这样的好处是显而易见,Slave作为大量SQL查询的服务器,繁忙、任务大!而且对着Internet,破坏可能性也大!因此,引入Mysql的replication我们可以方便、安全地管理数据库!
把硬盘空间释放--把GHOST备份文件刻录到光盘:【上一篇】
MySQL step by step...3:【下一篇】
【相关文章】
  • CDN(bind+mysql)结构
  • FB6+apache2+php5+MySQL+phpMyAdmin+vsftpd+discuz的安装
  • RHEL 4.1+courier-imap+postfix+mysql+extmail+extman
  • RedHat9下apache1.3+php4+mysql4安装手记
  • php调用mysql数据库不能显示中文呈乱码的解决方法
  • mysql資料的還原4/28
  • MySQL转CSV文件
  • 本周技术关注[面向webapps运维]: Mysql Host '...' is blocked 错误 - Metro的
  • Windows+PHP+MYSQL+IIS+phpmyadmin配置过程
  • 用 TMD 文件修复损坏的 mysql 的数据库某个表
  • 【随机文章】
  • 深度探索C++对象模型(1)
  • 国标软件设计文档之项目开发计划
  • C++ Builder初学问与答11
  • 使用prototype.js 的时候应该特别注意的几个问题.
  • Solaris中的酷命令
  • 3DS Max 7.0 PF Source粒子全攻略(41)
  • RenderX java的xml打印
  • 几款透明质感按钮--渐变透明按钮
  • Freehand 10 基本操作(7)
  • 第八章 IANA考量(IANA Consideration)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.