一:主库参数设置
数据库主从同步在从库上设置主库的参数,最好不要在my.cnf中设置
因为使用my.cnf默认从库从mysql-bin.00001开始同步,
如果从库中已有一部分数据,这个同步就会导致数据损坏
启动从库后应该使用如下命令设置主库的参数:
change master to master_host='10.36.54.17',master_user='backup',master_password='backup',master_log_file='mysql-bin.000098',master_log_pos=130730027;
其中master_log_file和master_log_pos可以在主库上执行:show master status; 查看到。
二:同步一个运行中的主库
主库在写状态下做环境同步,同步到的数据库数据是不完整的,这个时候从库的表可能损坏,需要修复:
repair table tablename;
修复后也不一定解决问题,因为表中数据缺少,同步过程中执行的SQL命令可能失败,这个时候主从同步会中断。
如果不care这个失败,可以跳过这个主从的SQL,在slave上执行如下命令:
slave stop;
set global sql_slave_skip_counter=1;
start slave;
show slave status\G
同步一个运行中的主库的最好办法是在手动同步主库的数据的过程中停止主库的写操作,保证同步到从库环境中的数据是和主库完整一致的。
或者同步了一个不完整的表修复后,再从头开始追bin log,这要求bin log从000001开始就一个保存着。
数据库设计之初就应该采用主从同步的方式,这样如果需要新增从库则可以停止一台slave的主从同步,将这个slave的数据同步到新的slave上
(这一步保证了同步过程中数据是不被写的),然后启动两个slave追数据。
三:指定从库开始的bin log位置
在主库上运行命令:
purge binary logs to 'mysql-bin.000095';
这样从库如没有设置bin log的起点(默认mysql-bin.00001),则开始的log位置就是设置的这个bin log位置。
阅读(729) | 评论(0) | 转发(0) |