分类:
2012-03-13 13:05:55
延时复制:在设定的时间(默认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;"
转: