WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院数据库MySQL MySQL数据同步配置 阅读

MySQL数据同步配置

 2007-11-11 14:12:32 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫嶅銈嗗姉閸樠囧煡婢跺á鐔兼煥鐎n兘鍋撴繝姘拺鐟滅増甯掓禍浼存煕閹惧鈽夐柍缁樻煥椤繈鎳滅喊妯诲闂備礁鎲$粙鎴︺偑閺夋垟鏋旈柡鍐e亾缂佺粯绋撴禒锕傚磼濮橆剦鐎抽梻浣哥-缁垶骞戦崶顒傚祦閻庯綆浜栭弨浠嬫煙闁箑澧い鏂垮€规穱濠囨倷椤忓嫧鍋撻弽褜娼栧┑鐘宠壘閸屻劎鎲歌箛娑樼疅闁圭虎鍠楅弲鎼佹煥閻曞倹瀚�
核心提示:MySQL(和PHP搭配之最佳组合)数据同步配置MySQL(和PHP搭配之最佳组合)数据同步配置--要求MySQL(和PHP搭配之最佳组合)版本>=3.23.54<...>指代变量1、Master端配置: Slave同步账号权限: GRANT FILE ON <DatabaseName>.

  MySQL(和PHP搭配之最佳组合)数据同步配置

MySQL(和PHP搭配之最佳组合)数据同步配置
----------------------
要求MySQL(和PHP搭配之最佳组合)版本>=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启动配置文件:
 [MySQL(和PHP搭配之最佳组合)d]
 log-bin
 binlog-do-db=<DatabaseName>
 server-id=<MasterId,例如1>
 
 或者:
 [MySQL(和PHP搭配之最佳组合)d]
 log-bin
 replicate-wild-do-table=<DatabaseName>.<TableName>
 replicate-wild-ignore-table=<DatabaseName>.<TableName>
 server-id=<MasterId,例如1>
 
2、Slave端配置
 
 Slave启动配置文件:
 [MySQL(和PHP搭配之最佳组合)d]
 master-host=<MasterHost>
 master-user=<User>
 master-password=<Password>
 master-port=<MasterPort>
 server-id=<SlaveId,例如2>

3、停止服务

 MySQL(和PHP搭配之最佳组合)admin -S <MasterSock> -u root -p shutdown
 MySQL(和PHP搭配之最佳组合)admin -S <SlaveSock> -u root -p shutdown

4、拷贝数据

5、启动Master服务

 <MasterMySQL(和PHP搭配之最佳组合)>/safe_MySQL(和PHP搭配之最佳组合)d --defaults-file=<Master配置文件> <其他选项> &
 Master数据库<DATADIR>目录应该生成 <MasterHost>-bin.<当前序号> 文件

6、启动Slave服务

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

 <SlaveMySQL(和PHP搭配之最佳组合)>/safe_MySQL(和PHP搭配之最佳组合)d --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以内),复制一份后用MySQL(和PHP搭配之最佳组合)binlog转成可阅读的格式,
  寻找断点附近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.<当前序号>';

Tags:MySQL 数据 同步

编辑录入:coldstar [复制链接] [打 印]
赞助商链接