Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12875
  • 博文数量: 6
  • 博客积分: 1460
  • 博客等级: 上尉
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-10 14:23
文章分类
文章存档

2010年(6)

我的朋友
最近访客

分类: Mysql/postgreSQL

2010-08-10 14:31:42

Mysql主从模式复制

 

第一章 复制介绍

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

 

如果你想要设置链式复制服务器,从服务器本身也可以充当主服务器。

 

请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。

 

单向复制有利于健壮性、速度和系统管理:

 

·         主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。

 

·         通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。

 

·         使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。

 

 

第二章 环境搭建简明步骤

 

master ip: 192.168.1.40
slave ip: 192.168.1.43


注意搭建环境按以下顺序:
1.
安装完成后配置/etc/my.cnf
master: /etc/my.cnf
server-id=1
log-bin
binlog-do-db=backup

slave: /etc/my.cnf
server-id=2
master-host=192.168.1.40
master-user=backup40
master-password=backup40a
master-port=3306 #
主服务器端口
master-connect-retry=60 #
同步时间间隔为60
replicate-do-db=backup
log-bin
binlog-do-db=backup


2.
分别启动主、从数据库服务器
/usr/local/mysql-5.0.67/bin/mysqld_safe --user=mysql &


3.
建立slave访问master的用户
master:
grant select,file,replication slave on *.* to    identified by 'backup40a' ;
flush privileges;


4.
如果master数据为空:
在主数据库服务器上建立backup ,backup数据库里面建立数据表,在从库上面应该立即都能看到。

如果master backup库有数据:
需要执行以下操作:
1).
锁主库表
(master)mysql>FLUSH TABLES WITH READ LOCK;

2).记录FilePosition,从库设置将会用到
(master)mysql>SHOW MASTER STATUS ;

3).另开一个终端,打包主库
(master)/var/ # tar zcvf backup.tar.gz backup

4).拷贝上述backup.tar.gz包到从库机器数据目录,并解包

5).解锁主库表
(master)mysql>UNLOCK TABLES;

6).设置连接MASTER MASTER_LOG_FILE为主库的File
MASTER_LOG_POS
为主库的Position
(slave)mysql>CHANGE MASTER TO
MASTER_HOST='192.168.1.40',
MASTER_USER='backup40',
MASTER_PASSWORD='backup40a',
MASTER_LOG_FILE='File',
MASTER_LOG_POS=Position;

7).启动SLAVE服务
(slave)mysql>slave start;

 

需要注意地方:
1.
在进行同步之前必须保证两个数据库是完全相同的,不然可能出错.

2.slave工作原理:
Slave
MysqlReplication工作有两个线程,I/O threadSQL thread,
I/O thread
的作用是从master 3306端口上把它的binlog取过来,然后写到本地的relay-bin,
SQL thread则是去读本地的relay-bin,再把它转换成本机Mysql所能理解的东西,于是同步就这样一步一步的完成.
决定I/O thread的是var/master.info,而决定SQL thread的是var/relay-log.info.

3.如果更改了master服务器,
slave
服务器需要修改/etc/my.cnf文件,删除master.inforelay-log.inforelay-log.index文件,重起slave.

 

 

http://dev.mysql.com/doc/refman/5.0/en/replication.html

阅读(1009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~