Chinaunix首页 | 论坛 | 博客
  • 博客访问: 84577
  • 博文数量: 38
  • 博客积分: 273
  • 博客等级: 二等列兵
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-14 22:01
文章分类

全部博文(38)

文章存档

2012年(14)

2011年(24)

分类:

2012-03-13 13:05:55

原文地址:Mysql延时复制 作者:badb0y

一、概念

延时复制:在设定的时间(默认3600s)内发生故障,可以进行恢复;先下载下来,然后等3600s后再执行。

架构:参照""
master–>slave1–>slave2
\–>slave3(延迟复制,一般是3600s)


二、延时复制


通过延时复制可以达到容错的机制;

mysql>show master status; –查看master当前的POS值

slave3也可以放到slave2处,但延时会大点,最好放在master处,如再增加一台slave,放在slave2处比较合适。

把slave3变成master的从服务器,通过第三方软件实现延迟复制:

1.将master第一次作的备份同步到slave3,以此作为slave3同步master的起点
[root@master ~]# scp /tmp/all.sql slave3:/tmp --在master上操作

2.在slave3上的操作
# vim /etc/my.cnf
[client]
socket = /dblog/mysqld.sock
port = 3306

[mysqld]
socket = /dblog/mysqld.sock
port = 3306
pid-file = /dblog/mysqld.pid
datadir = /data
default-storage-engine=innodb
innodb_data_home_dir = /data
innodb_data_file_path =ibdata1:50M:autoextend
server-id = 4
#log-bin = /dblog/mysqld-bin
#max-binlog-size = 10M
#log-slave-updates
#logs
slow_query_log = /dblog/slow.log
long_query_time = 1
log-error = /dblog/mysqld.err

# mkdir /data
# mkdir /dblog
# chmod 700 /data/ /dblog
# chown mysql.mysql /data /dblog/ -R
# mysql_install_db –datadir=/data –user=mysql
# service mysql start
# chkconfig mysql on

# mysql < /tmp/all.sql –导入数据
# mysql
mysql> flush privileges;
mysql> change master to
-> MASTER_HOST='192.168.1.10',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='123',
-> MASTER_LOG_FILE='mysqld-bin.000005',
-> MASTER_LOG_POS= 1366,
-> MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected (0.02 sec)

3.实现延迟复制:
方法:
1、使用mysql高版本,自带延迟功能。
2、对旧版本打第三补丁
3、使用第三方工具 :maatkit
4、完全模仿第三方工具的原理,用shell脚本实现。

采用第三方工具实现:
perl-TermReadKey-2.30-3.el5.rf.i386.rpm —-依赖软件包
maatkit-7119-1.noarch.rpm --延迟复制的工具包

软件安装:
# rpm -ivh MySQL-shared-compat-5.5.8-1.rhel5.i386.rpm –安装库文件
# yum localinstall perl-TermReadKey-2.30-3.el5.rf.i386.rpm maatkit-7119-1.noarch.rpm –nogpgcheck -y –使用yum解决依赖关系,nogpgcheck,因maatkit这个工具没有验证

# mk-slave-delay –help –查看帮助

调试阶段
# mk-slave-delay –defaults-file=/etc/my.cnf –user=root –password=123 –socket=/dblog/mysqld.sock –delay 5m –interval 15 localhost

后台进程运行模式
# mk-slave-delay –defaults-file=/etc/my.cnf –user=root –password=123 –socket=/dblog/mysqld.sock –delay 5m –interval 15 localhost –quiet &

–interval 15 –每15秒打印一个提示信息
–delay 5m –延时5分钟
–socket –也可以使用-P指定端口
–quiet –不输出提示信息

也可以使用脚本来控制这些选项:
io_thread:从master处读取更新
sql_thread:执行更新

使用以下两条命令不能很好的控制:
mysql -uroot -p123 -e "stop slave sql_thread;"
mysql -uroot -p123 -e "start slave sql_thread;"

 

转:

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