关注于系统高可用、网站架构
分类: Mysql/postgreSQL
2010-02-02 16:12:13
两台数据库服务器(192.168.1.50、51),目前应用均在50机器上,51只是备份机器,考虑到复制已经出现多处数据不一致,并且51机器只作备份机器,因此对51的数据采取重建策略,由50机器上的数据导出并导入到51,执行如下这些步骤:
-- 1. 在 50 DB 执行:
flush logs;
stop slave;
show master logs;
show slave status \G
mysqldump -uroot -p --single-transaction --all-databases --force -R > /home/kay.zhang/all50.sql
scp /home/kay.zhang/all50.sql 192.168.1.51:/home/kay.zhang/
-- 2. 在 51 DB 执行:
flush logs;
stop slave;
show master logs;
show slave status \G
tee /home/kay.zhang/all50in51.log;
source /home/kay.zhang/all50.sql;
notee;
flush logs;
stop slave;
show master logs;
show slave status \G
# 使用 50 机器开始备份时flush logs 所产生的那个日志文件
change master to master_log_file='mysql-bin.000167', master_log_pos=4;
# 由于 50 机器在导出过程中仍然会产生记录,所以从'mysql-bin.000167'开始复制之后,会出现某些数据重复的错误,
# 直接忽略这些错误并再启动slave即可,重复执行以下语句直到不再有错误
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
start slave;
show slave status \G
-- 3. 在 51 DB 上执行:
# 将50 上的复制起点定在数据成功导入之后再次 flush logs 所产生的新文件
stop slave;
change master to master_log_file='mysql-bin.000123', master_log_pos=4;
start slave;
show slave status \G