WEB开发网
开发学院数据库MySQL Mysql Replication 阅读

Mysql Replication

 2007-11-11 14:10:34 来源:WEB开发网   
核心提示:类似于从一台服务器拷贝数据库到另一台服务器上,但它是通过定义Master 和Slave的关系去实时地保证两个数据库的完全同步,Mysql Replication,这个功能在MySQL(和PHP搭配之最佳组合)的3.23版中开始出现,Master/Slave模式备份TestEnv:Master:MySQL(和PHP搭配之

  类似于从一台服务器拷贝数据库到另一台服务器上,但它是通过定义Master 和Slave的关系去实时地保证两个数据库的完全同步,这个功能在MySQL(和PHP搭配之最佳组合)的3.23版中开始出现。

Master/Slave模式备份

TestEnv:


Master:MySQL(和PHP搭配之最佳组合)-4.1.12 on Redhat9.0 IP:192.168. 0.217
Slave: MySQL(和PHP搭配之最佳组合)-4.1.12 on Redhat9.0 IP:192.168.10.244


1、编译,安装


1. #tar –zxvf MySQL(和PHP搭配之最佳组合)-4.1.12.tar.gz


2. #cd MySQL(和PHP搭配之最佳组合)-4.1.12


3. .#/configure –prefix=/var/eyou/MySQL(和PHP搭配之最佳组合)


4. #make


5. #make install


6. #chown –R root /var/eyou/MySQL(和PHP搭配之最佳组合)


7. # chown –R MySQL(和PHP搭配之最佳组合) /var/eyou/MySQL(和PHP搭配之最佳组合)/var


8. #chgrp –R MySQL(和PHP搭配之最佳组合) /var/eyou/MySQL(和PHP搭配之最佳组合)


9. #scripts/MySQL(和PHP搭配之最佳组合)_install_db


10. #cp support-files/my-medium.cnf /etc/my.cnf


2、Master 机器设置权限,赋予Slave机器FILE及Replication Slave权利,并打包要同步的数据库结构。


Master# pwd
/var/eyou/MySQL(和PHP搭配之最佳组合)/bin
Master#./MySQL(和PHP搭配之最佳组合) –u root –p
Enter password:
Welcome to the MySQL(和PHP搭配之最佳组合) monitor. Commands end with ; or \g.
Your MySQL(和PHP搭配之最佳组合) connection id is 2 to server version: 4.1.12


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


MySQL(和PHP搭配之最佳组合)> GRANT FILE ON *.* TO rep@192.168.0.244 IDENTIFIED BY ‘eyou’;


MySQL(和PHP搭配之最佳组合)> GRANT REPLICATION SLAVE ON *.* TO rep@192.168.0.244 IDENTIFIED BY ‘eyou’;


赋予192.168.10.244也就是Slave 机器有File权限, 这个4.1.12版对replication的权限好像做了调整,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。


然后打包要复制的数据库


Master# cd var
Master# tar czvf reptest.tar.gz reptest


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


2设置主服务器Master的my.cnf,启动MySQL(和PHP搭配之最佳组合)服务


Master# vi /etc/my.cnf


在[MySQL(和PHP搭配之最佳组合)d]添加或修改以下的


[MySQL(和PHP搭配之最佳组合)d]
log-bin #打开logbin选项以能写到slave的 I/O线程;
server-id=1 #表示是本机的序号为1,一般来讲就是master的意思.
sql-bin-update-same
binlog-do-db= reptest #表示同步reptest数据库;


然后把Master主服务器的MySQL(和PHP搭配之最佳组合)重启。


Master# /var/eyou/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合)admin –u root –p shutdown
Master# /var/eyou/MySQL(和PHP搭配之最佳组合)/bin/safe_MySQL(和PHP搭配之最佳组合)d --user=MySQL(和PHP搭配之最佳组合) &


3、建立Slave数据库
刚才在Master中打包了reptest.tar.gz,它的作用就是要在Slave恢复成一样的数据库。先把Master 的reptest.tar.gz文件传到Slave机器中去。然后


Slave# tar zxvf reptest.tar.gz -C /var/eyou/MySQL(和PHP搭配之最佳组合)/var/


4、修改Slave服务器的my.cnf


Slave# vi /etc/my.cnf


在[MySQL(和PHP搭配之最佳组合)d]添加或修改以下的


master-host=192.168.10.217
master-user=rep
master-password=eyou
master-port=3306
server-id=2
master-connect-retry=60
replicate-do-db=reptest    [要更新的数据库]
log-slave-updates


5、删除Slave端数据库目录中的master.info


Slave# rm /var/eyou/MySQL(和PHP搭配之最佳组合)/var/master.info


6、重启动Slave的slave start。


Slave# /var/eyou/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合)admin –u root –p shutdown
Slave# /var/eyou/MySQL(和PHP搭配之最佳组合)/bin/safe_MySQL(和PHP搭配之最佳组合)d --user=MySQL(和PHP搭配之最佳组合) &


7、测试
先检测两个MySQL(和PHP搭配之最佳组合)数据库中的reptest是否正常。
正常情况应该是Master和Slave 中的MySQL(和PHP搭配之最佳组合) 都有相同的reptest 数据库,并且里面的数据都一样。
然后测试replication 功能是否起用。
在Master中的reptest数据库添加一笔数据:


Master# /var/eyou/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合) –u root -p
Enter password:
Welcome to the MySQL(和PHP搭配之最佳组合) monitor. Commands end with ; or \g.
Your MySQL(和PHP搭配之最佳组合) connection id is 12 to server version: 4.1.12


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


MySQL(和PHP搭配之最佳组合)> use reptest;
Database changed
MySQL(和PHP搭配之最佳组合)> INSERT INTO rep_table VALUES ('test1', '4321', 'T',24);
Query OK, 1 row affected (0.00 sec)
MySQL(和PHP搭配之最佳组合)>


然后查看Slave机器的reptest数据库:


Slave#/var/eyou/MySQL(和PHP搭配之最佳组合)/bin/MySQL(和PHP搭配之最佳组合) –u root –p


Enter password:
Welcome to the MySQL(和PHP搭配之最佳组合) monitor. Commands end with ; or \g.
Your MySQL(和PHP搭配之最佳组合) connection id is 12 to server version: 4.1.12


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


MySQL(和PHP搭配之最佳组合)> use reptest;
Database changed
MySQL(和PHP搭配之最佳组合)>select * from reptable;;


+------+------+------+------+


| id | name | sex | age |


+------+------+------+------+


| test1| 4321 | T | 24 |


+------+------+------+------+


1 row in set (0.00 sec)








PS :


1,Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATION SLAVE的权限。


2.在修改完Slave机器/etc/my.cnf之后,slave机器的MySQL(和PHP搭配之最佳组合)服务启动之前,记得要删除掉master.info


3,在show master status 或着show slave status 不正常时,看看.err是怎样说的。


4,Slave上MySQL(和PHP搭配之最佳组合)的Replication工作有两个线程, I/O thread和SQL thread 。I/O 的作用是从master 3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本MySQL(和PHP搭配之最佳组合)所能理解的语句,于是同步就这样一步一步的完成.决定I/O thread的是/var/lib/MySQL(和PHP搭配之最佳组合)/master.info,而决定SQL thread的是/var/lib/MySQL(和PHP搭配之最佳组合)/relay-log.info.






双向复制模式


1:


Slave 机器设置权限,赋予Master机器FILE及Replication Slave权利.


Master#./var/eyou/MySQL(和PHP搭配之最佳组合) –u root –p
Enter password:
Welcome to the MySQL(和PHP搭配之最佳组合) monitor. Commands end with ; or \g.
Your MySQL(和PHP搭配之最佳组合) connection id is 2 to server version: 4.1.12


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


MySQL(和PHP搭配之最佳组合)> GRANT FILE ON *.* TO rep@192.168.0.217 IDENTIFIED BY ‘eyou’;


MySQL(和PHP搭配之最佳组合)> GRANT REPLICATION SLAVE ON *.* TO rep@192.168.0.217 IDENTIFIED BY ‘eyou’;

Tags:Mysql Replication

编辑录入:coldstar [复制链接] [打 印]
赞助商链接