mysql数据同步,MySQL数据同步配置

MySQL数据同步配置 - 应用软件 - 电脑教程网

MySQL数据同步配置

日期:2006-11-29   荐:
  MySQL数据同步配置

MySQL数据同步配置----------------------要求MySQL版本>=3.23.54<...>指代变量

1、Master端配置:

Slave同步账号权限: GRANT FILE ON <DatabaseName>.<TableName> TO <User>@<SlaveHost> IDENTIFIED BY '<Password>'; 或者 INSERT INTO user VALUES('<SlaveHost>','<User>',password('<Password>'),'N','N','N','N','N','N','N','N','N','Y','N','N','N','N'); FLUSH PRIVILEGES; Master启动配置文件: [mysqld] log-bin binlog-do-db=<DatabaseName> server-id=<MasterId,例如1> 或者: [mysqld] log-bin replicate-wild-do-table=<DatabaseName>.<TableName> replicate-wild-ignore-table=<DatabaseName>.<TableName> server-id=<MasterId,例如1> 2、Slave端配置 Slave启动配置文件: [mysqld] master-host=<MasterHost> master-user=<User> master-password=<Password> master-port=<MasterPort> server-id=<SlaveId,例如2>

3、停止服务

mysqladmin -S <MasterSock> -u root -p shutdown mysqladmin -S <SlaveSock> -u root -p shutdown

4、拷贝数据

5、启动Master服务

<MasterMysql>/safe_mysqld --defaults-file=<Master配置文件> <其他选项> & Master数据库<DATADIR>目录应该生成 <MasterHost>-bin.<当前序号> 文件

6、启动Slave服务

<DATADIR>/master.info配置文件: <MasterHost>-bin.<当前序号,例如1> <开始位置,初始必须为73> <MasterHost> <User> <Password> <MasterPort> <出错重试间隔(s),例如60>

<SlaveMysql>/safe_mysqld --defaults-file=<Slave配置文件> <其他选项> &

7、测试/监视

Master数据库中执行 SHOW MASTER STATUS; 应显示 --------------------------- ----------- -------------- ------------------ | File | Position | Binlog_do_db | Binlog_ignore_db | --------------------------- ----------- -------------- ------------------ |<MasterHost>-bin.<当前序号>| <CurrPos> |<DatabaseName>| | --------------------------- ----------- -------------- ------------------ Slave数据库中执行 SHOW SLAVE STATUS; 应显示 --------------- ------------- ------------- --------------- --------------------------- ----------- --------------- ----------------- --------------------- ------------ ------------ -------------- | Master_Host | Master_User | Master_Port | Connect_retry | Log_File | Pos | Slave_Running | Replicate_do_db | Replicate_ignore_db | Last_errno | Last_error | Skip_counter | --------------- ------------- ------------- --------------- --------------------------- ----------- --------------- ----------------- --------------------- ------------ ------------ -------------- | <MasterHost> | <SlaveUser> | <MasterPort>| XX |<MasterHost>-bin.<当前序号>| <CurrPos> | Yes | | | 0 | | 0 | --------------- ------------- ------------- --------------- --------------------------- ----------- --------------- ----------------- --------------------- ------------ ------------ -------------- 8、数据同步停止故障的处理

数据同步停止最常见的原因是人为改动了Slave端数据造成从Master取回的SQL语句执行错误, 例如Unique Key冲突。所以首先应该严格限制手工更改Slave数据。 如果发现了同步停止可以有以下几步处理方式: 1)记录停止的位置(Pos); 2)观察停止位置的SQL语句,如果这一SQL语句必须执行,跳到(5); 3)如果SQL语句可以跳过(或正在执行已经执行过的SQL),可以用SET SQL_SLAVE_SKIP_COUNTER=n跳过, (一般SQL语句n=1, 带有auto-increment的语句n=2)完成后执行slave start; 如果同步继续但出现了新错误,重复(3),如果没解决问题,可以重新设SQL_SLAVE_SKIP_COUNTER再试, 如果还不成功说明断点记录有错,选择(4)或者(5); 4)如果Master上的log不过大(几百M以内),复制一份后用mysqlbinlog转成可阅读的格式, 寻找断点附近SQL语句(文件里每句话前都有“at xxxxx",找一个断点重新开始), 更改Slave端的master.info里第2行为新断点,重启Slave库; 如果不成功则选择(5); 5)最终解决方案 停止Master/Slave数据库运行; 拷贝静态数据文件到Slave库; 启动Master库; 更改Slave库文件master.info中log-bin文件名及断点(73); 启动Slave库。 9、附加命令

清空无用log-bin: PURGE MASTER LOGS TO '<MasterHost>-bin.<当前序号>';

标签: