mysql主从环境,从机因为出了些问题数据出错了,现在要重新恢复,但是主机访问很频繁,要求在不停机的情况下,恢复从机数据并且恢复从机replicate状态。大致过程也就是:
slave stop;
恢复数据;
slave start;
主机数据量有25G,比较大,都是myisam引擎本来的话,主机停掉,那么不会有新数据进来,然后主机数据全部mysql dump到从机上去,这样主从机器数据一致了,然后再开启从机的slave 。可是如果主机不停止运行的话,在dump到从机时,会有新数据进来,会导致数据不一致,那么怎么办呢
slave stop;
恢复数据;
slave start;
主机数据量有25G,比较大,都是myisam引擎本来的话,主机停掉,那么不会有新数据进来,然后主机数据全部mysql dump到从机上去,这样主从机器数据一致了,然后再开启从机的slave 。可是如果主机不停止运行的话,在dump到从机时,会有新数据进来,会导致数据不一致,那么怎么办呢
是myisam吧,没有关系,设置好复制点,从postion为0开始,重新做replicate就是了。
-- 如果 指定的存储引擎是 Innodb存储引擎(所有的表都是Innodb存储引擎),且binlog日志已经开启的话,
-- 可以用备份恢复来做,在用 mysqldump 备份,查看当前的master 状态,
mysql-[groupon]> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000938
Position: 35592927
Binlog_Do_DB: groupon
Binlog_Ignore_DB:
1 row in set (0.00 sec)-- 然后在用 mysqldump 备份的时候加个参数 flush-logs 参数/var/mysql/bin/mysqldump -uroot -pyour_password groupon --single-transaction --flush-logs --master-data=2 --delete-master-logs > /var/www/mysqlBackup/bk_239_2011-10-19/bk_groupon_passport_20111018.sql &-- 将备份文件拷贝到目标机器,
-- 然后应用备份:
/var/mysql/bin/mysql -uroot -pyour_password groupon < /var/www/mysqlBackup/bk_239_2011-10-19/bk_groupon_passport_20111018.sql &-- 然后:
change master to master_host='192.168.1.239',master_port=3306,master_user='repl',master_password='your_password',master_log_file='mysql-bin.000939',master_log_pos=1;-- 然后启动从库:
start slave;show slave status\G;
先将所有 的 myisam存储引擎的表改成Innodb存储引擎,再去按上述操作!
myisam 热备都要锁表的。会影响应用
这个是肯定的,myisam本来就是表锁操作的。
哎,看来还是夜深人静的时候,默默的把主机数据文件scp过去好了。。
赞同,我当年也是这么操作的,记得copy之后,要chown为mysql啊,文件的操作权限要及时修改。我当年copy 50G的myisam文件,花了40分钟。