දත්ත සමුදායක් එක් සේවාදායකයකින් තවත් සේවාදායකයකට ගෙන යන්නේ කෙසේද?


142

MySQL වගු එක් භෞතික සේවාදායකයක සිට තවත් භෞතික සේවාදායකයකට ගෙන යන්නේ කෙසේද?

මෙම නිශ්චිත තත්වය වැනි: මට MySQL සේවාදායකයක් ඇති අතර එය innodb වගුව භාවිතා කරන අතර එය 20GB පමණ වේ.

මට එය නව සේවාදායකයකට ගෙන යාමට අවශ්‍යයි, මෙය කිරීමට වඩාත්ම කාර්යක්ෂම ක්‍රමය කුමක්ද?


4
මම xtrabackup percona.com/docs/wiki/… භාවිතා කරමි. එය පිටපත් කිරීමට බොහෝ සෙයින් සමාන නමුත් ඔබට සේවාදායකය දිගටම පවත්වා ගෙන යා හැකි අතර ඔබ ප්‍රධාන වශයෙන් ඉනොඩ්බ් වගු භාවිතා කරන බව උපකල්පනය කරයි (ඔබ සතුව තිබූ බව), ඔබට එය "උණුසුම්" ලෙස සැලකිය හැකිය. උපස්ථය ද වේ.
ජොනතන්

1
මෙම මෙවලම භාවිතා කරන වෙනත් පුද්ගලයින්ගෙන් මට ප්‍රතිලාභයක් නැත. එය නිදහස් / විවෘත-මූලාශ්‍රයක් වන අතර එය සමාගමක් විසින් සාදන ලද්දක් වුවද, එම සමාගමෙන් ආධාර මිලදී ගැනීම ගැන සලකා බැලීම අවශ්‍ය නොවන බව භාවිතා කිරීම පහසුය.
ජොනතන්

Answers:


84

මගේ ප්‍රියතම ක්‍රමය වන්නේ SQL විධානයක් sql විධානයකට නල කිරීමයි. ඔබට සියලු දත්ත සමුදායන් හෝ විශේෂිත එකක් කළ හැකිය. උදාහරණයක් ලෙස,

mysqldump -uuser -ppassword myDatabase | mysql -hremoteserver -uremoteuser -premoteserverpassword 

ඔබට සියලු දත්ත සමුදායන් සමඟ කළ හැකිය

mysqldump --all-databases -uuser -ppassword | mysql -hremoteserver -uremoteuser -premoteserver 

එකම ගැටළුව වන්නේ දත්ත සමුදාය ඉතා විශාල වන අතර නළය කඩා වැටීමයි. එවැනි අවස්ථාවකදී, ඔබට වගුව අනුව හෝ පහත සඳහන් වෙනත් ක්‍රම මඟින් කළ හැකිය.


5
ඉඟිය: දත්ත සමුදායන් දෙකම දුරස්ථ සම්බන්ධතා වලට ඉඩ නොදෙන්නේ නම්, නල හරහා netcat.
බාර්ට් වෑන් හියුකෙලොම්

3
මෙය මා වෙනුවෙන් වැඩ කිරීම සඳහා දුරස්ථ සේවාදායකයේ එකම නමක් සහිත හිස් දත්ත ගබඩාවක් නිර්මාණය කර විධානයේ අවසානයට එම දත්ත ගබඩාවේ නම එක් කළ යුතුය.
සුග්වාල්ට්

1
මෙය අලංකාරයි, නමුත් සම්පීඩනයකින් තොරව 20GB දත්ත ගබඩාවට ප්‍රමාණවත් තරම් වේගවත් නොවේ.
තාත්තා 32

මෙම විසඳුම සම්පුර්ණයෙන්ම පාලනය කළ ජාලයකට පමණක් හොඳය (ආරක්ෂිත පුද්ගලික ජාලයක නම් පමණක් කියවන්න: අන්තර්ජාලය නොවේ)! නමුත් වේගවත් හා පහසු විසඳුමක්!
tdaget

1
මෙය අකුණු වේගයෙන්! Ug සුග්වාල්ට් පැවසූ දේ මටත් සත්‍යයකි. මම දත්ත සමුදාය නිර්මාණය කරන තුරු විධානය ක්‍රියාත්මක නොවීය (හිස්) එකතු කිරීම මඟින් විධානයේ අවසානයට දත්ත සමුදායේ නම එක් කරන්න.
ස්කීට්ස්

67

මම මෑතකදී 30GB දත්ත ගබඩාවක් පහත දැක්වෙන උපාය මාර්ගයෙන් ගෙන ගියෙමි:

පැරණි සේවාදායකය

  • MySQL සේවාදායකය නවත්වන්න
  • හි අන්තර්ගතය පිටපත් datadir තැටිය මත තවත් ස්ථානය (කිරීමට ~/mysqldata/*)
  • MySQL සේවාදායකය නැවත ආරම්භ කරන්න (අක්‍රීය කාලය මිනිත්තු 10-15 විය)
  • දත්ත සම්පීඩනය කරන්න ( tar -czvf mysqldata.tar.gz ~/mysqldata)
  • සම්පීඩිත ගොනුව නව සේවාදායකයකට පිටපත් කරන්න

නව සේවාදායකය

  • mysql ස්ථාපනය කරන්න (ආරම්භ නොකරන්න)
  • සම්පීඩිත ගොනුව ඉවත් කරන්න ( tar -xzvf mysqldata.tar.gz)
  • වෙත mysqldata හි අන්තර්ගතය ගමන් datadir
  • නව සේවාදායකයේ ඔබගේ innodb_log_file_size එක සමාන බවට වග බලා ගන්න, නැතහොත් එය එසේ නොවේ නම්, පැරණි ලොග් ගොනු පිටපත් නොකරන්න ( mysql මේවා ජනනය කරයි )
  • MySQL ආරම්භ කරන්න

1
සම්පීඩනය / විසංයෝජනය කිරීමෙන් පසු පිටපත මඟ හරින්න. ජාලය හරහා තාර ප්‍රවාහය ssh භාවිතා කරන්න, නැතහොත් (ආරක්ෂිත පුද්ගලික ජාලයක කියවා ඇත්නම්: අන්තර්ජාලය නොවේ නම්) ඉහළින් සංකේතනය වීම වළක්වා ගැනීමට නෙට්කැට් භාවිතා කරන්න. දේශීය ජාලයක gzipping මඟහරින්නේ නම්, ඔබට වේගවත් ජාල පයිප්පයක් තිබේ නම් සම්පීඩනය
සිදුකරන හරිත භ්‍රමණයක මාරුවීමේ බාධකය ඔබට පෙනෙනු ඇත

1
මෙය ඉනොඩ්බ් සහ මයිසම් යන දෙකටම වැඩ කරයිද? එසේම, mysql භාවිතා කරන්නන් ද datadir හි සිටීද?
giorgio79

3
ior giorgio79 ඔබ ibdata ගොනු ගෙන යන තාක් කල් විශ්වාසයි. පෙරනිමියෙන් ඒවා ඩේටාඩිර් හි ඇත. MySQL භාවිතා කරන්නන් පරිශීලක වගුවක mysql ෆෝල්ඩරයේ ගබඩා කර ඇත.
ඩෙරෙක් ඩව්නි

3
වින්ඩෝස් සිට ලිනක්ස් වෙත ගමන් කිරීම සඳහා මෙම ක්‍රියා පටිපාටිය ක්‍රියාත්මක වේද?
ypercubeᵀᴹ

3
@ TypoCubeᵀᴹ ප්‍රතිචාර දැක්වීමට වසර දෙකක් ගතවීම ගැන කණගාටුයි, නමුත් "ඔව්, එය වින්ඩෝස් සිට ලිනක්ස් දක්වා ක්‍රියාත්මක වේ" යනුවෙන් යමෙකු නිශ්චිතව පැවසුවා නම් එය මට උදව් වනු ඇත. මගේ නඩුවේදී, මම වින්ඩෝස් සර්වර් 2012 ආර් 2 සිට සෙන්ට් ඕඑස් (Red Hat 4.8.5-11) වෙත ගියෙමි . නිශ්චිත mysql අනුවාදය වූයේ මාරියා ඩීබී 10.1 ය . නියම කර ඇති පරිදි, මම MySQL සේවා දෙකම නවතා, දත්ත නාමාවලිය rsynced කර, නව සේවාදායකයේ mysql සේවාව ආරම්භ කිරීමෙන් පසු, සියලු දත්ත සමුදායන්, දත්ත සමුදා වගු සහ දත්ත සමුදාය භාවිතා කරන්නන් සම්පූර්ණයෙන්ම නොවෙනස්ව පැවතුනි.
WEBjuju

34

අනුව MySQL 5.0 සහතික අධ්යයනය මාර්ගෝපදේශය , පරිච්ඡේදය 32 වැනි වගන්තිය 32.3.4, පිටු 456.457 විස්තර කිරීමට ද්වීමය පහසුවෙන් එහාමෙහා ගෙන යාමේ සඳහා කොන්දේසි පහත සඳහන් පිටතට ගෙන ඇති:

ඔබට එක් යන්ත්‍රයක සාදන ලද ද්විමය උපස්ථයක් ගෙන වෙනත් ගෘහ නිර්මාණ ශිල්පයක් ඇති වෙනත් යන්ත්‍රයක භාවිතා කිරීමට අවශ්‍ය නම් ද්විමය අතේ ගෙන යා හැකි බව වැදගත් ය. උදාහරණයක් ලෙස, ද්විමය උපස්ථයක් භාවිතා කිරීම එක් MySQL සේවාදායකයක සිට තවත් දත්ත ගබඩාවක් පිටපත් කිරීමේ එක් ක්‍රමයකි.

MyISAM සඳහා, ද්විමය අතේ ගෙන යා හැකි යන්නෙන් අදහස් වන්නේ ඔබට MySAM වගුවක් සඳහා එක් MySQL සේවාදායකයක සිට වෙනත් යන්ත්‍රයකට වෙනත් යන්ත්‍රයකට කෙලින්ම පිටපත් කළ හැකි අතර දෙවන සේවාදායකයට මේසයට ප්‍රවේශ විය හැකි බවයි.

InnoDB සඳහා, ද්විමය අතේ ගෙන යා හැකි යන්නෙන් අදහස් වන්නේ ඔබට එක් යන්ත්‍රයක MySQL සේවාදායකයේ සිට වෙනත් යන්ත්‍රයකට වෙනත් යන්ත්‍රයකට කෙලින්ම පිටපත් කළ හැකි අතර දෙවන සේවාදායකයට මේස අවකාශයට ප්‍රවේශ විය හැකි බවයි. පෙරනිමියෙන්, සේවාදායකයක් විසින් කළමනාකරණය කරනු ලබන සියලුම InnoDB වගු මේසය තුළ එකට ගබඩා කර ඇත, එබැවින් වගුවේ අතේ ගෙන යා හැකි හැකියාව යනු තනි තනි InnoDB වගු අතේ ගෙන යා හැකිද යන්නයි. එක් වගුවක් පවා අතේ ගෙන යා නොහැකි නම්, මේස අවකාශය ද නොවේ.

කොන්දේසි දෙකක් සපුරා ඇත්නම් MyISAM වගු සහ InnoDB වගු එක් ධාරකයක සිට තවත් ධාරකයකට ද්විමය අතේ ගෙන යා හැකිය:

  • යන්ත්‍ර දෙකම දෙකේ අනුපූරක පූර්ණ සංඛ්‍යා ගණිතය භාවිතා කළ යුතුය
  • යන්ත්‍ර දෙකම IEEE පාවෙන ලක්ෂ්‍ය ආකෘතිය භාවිතා කළ යුතුය, නැතිනම් වගු වල පාවෙන ලක්ෂ්‍ය තීරු අඩංගු නොවිය යුතුය (FLOAT හෝ DOUBLE)

ප්රායෝගිකව, එම කොන්දේසි දෙක සුළු සීමාවක් ඇත. දෙකෙහි අනුපූරක පූර්ණ සංඛ්‍යා අංක ගණිතය සහ අයිඊඊඊ පාවෙන ලක්ෂ්‍ය ආකෘතිය නවීන දෘඩාංග පිළිබඳ සම්මතයයි. InnoDB ද්විමය අතේ ගෙන යා හැකි තෙවන කොන්දේසිය නම් ඔබ වගු සහ දත්ත සමුදායන් සඳහා කුඩා අකුරු භාවිතා කළ යුතු බවයි. එයට හේතුව InnoDB මෙම නම් අභ්‍යන්තරව (එහි දත්ත ශබ්ද කෝෂයේ) වින්ඩෝස් හි කුඩා අකුරුවල ගබඩා කිරීමයි. සිම්පල් නම් භාවිතා කිරීමෙන් වින්ඩෝස් සහ යුනික්ස් අතර ද්විමය අතේ ගෙන යා හැකි අතර, කුඩා අකුරු භාවිතා කිරීමට බල කිරීම සඳහා, ඔබට පහත දැක්වෙන රේඛා විකල්ප ගොනුවක තැබිය හැකිය:

[mysqld]
lower_case_table_names=1

එක් මේස වගුවක් භාවිතා කිරීම සඳහා ඔබ InnoDB වින්‍යාස කරන්නේ නම්, ද්විමය අතේ ගෙන යා හැකි කොන්දේසි InnoDB වගු සඳහා .ibd ගොනු ද ඇතුළත් වේ. (සියලුම InnoDB වගු පිළිබඳ තොරතුරු ගබඩා කරන දත්ත ශබ්ද කෝෂය එහි අඩංගු බැවින් හවුල් වගු සඳහා කොන්දේසි තවමත් අදාළ වේ.)

ද්විමය අතේ ගෙන යා හැකි කොන්දේසි සපුරා නොමැති නම්, ඔබට යම් පෙළ ආකෘතියක් භාවිතා කර (උදාහරණයක් ලෙස, mysqldump සමඟ) ඒවා ගමනාන්ත සේවාදායකයට නැවත පූරණය කිරීමෙන් ඔබට MyISAM හෝ InnoDB වගු එක් සේවාදායකයකින් තවත් සේවාදායකයකට පිටපත් කළ හැකිය.

තනි වගු ගෙනයාමට ගබඩා එන්ජිම මත පදනම් වූ ප්‍රධාන ක්‍රම දෙකක් තිබේ.

දී ඇති උදාහරණය සඳහා අපි පහත සඳහන් දේ සිතමු:

  1. datadir යනු / var / lib / mysql වේ
  2. mydb නමින් දත්ත සමුදාය
  3. වගුවේ mydb දත්ත සමුදාය නම් mytable .

MyISAM වගු

Mydb.mytable විසින් MyISAM ගබඩා එන්ජිම භාවිතා කරන්නේ නම්, වගුව භෞතිකව වෙනම ලිපිගොනු තුනක් ලෙස ප්‍රකාශ වේ

  1. /var/lib/mysql/mydb/mytable.frm (.frm ගොනුව)
  2. /var/lib/mysql/mydb/mytable.MYD (.MYD ගොනුව)
  3. /var/lib/mysql/mydb/mytable.MYI (.MYI ගොනුව)

.Frm හි වගු ව්‍යුහය
අඩංගු වේ .MYD හි වගු දත්ත
අඩංගු වේ .MYI වගු දර්ශක පිටුව අඩංගු වේ

MySQL හි තාර්කික දෘෂ්ටි කෝණයකින් වගුව නිරූපණය කිරීම සඳහා මෙම ලිපිගොනු එකිනෙකට පරායත්තව භාවිතා කරයි. මෙම ගොනුවට තව දුරටත් තාර්කික සම්බන්ධතාවයක් නොමැති බැවින්, එක් ඩීබී සේවාදායකයකින් තවත් වගුවකට සංක්‍රමණය වීම. ඔබට මෙය වින්ඩෝස් සේවාදායකයක සිට ලිනක්ස් සේවාදායකයක් හෝ මැකෝස් දක්වා කළ හැකිය. ඇත්ත වශයෙන්ම, ඔබට mysql වසා දමා වගු ලිපිගොනු 3 පිටපත් කළ හැකිය. ඔබට පහත සඳහන් දෑ ක්‍රියාත්මක කළ හැකිය:

LOCK TABLES mydb.mytable READ;
SELECT SLEEP(86400);
UNLOCK TABLES;

එක් ssh සැසියකදී කියවීමට පමණක් වගුව තබා පැය 24 ක් අගුල තබා ගන්න. තත්පරයකට පසුව, පිටපත තවත් ssh සැසියකදී සිදු කරන්න. ඉන්පසු පැය 24 ක අගුලෙන් mysql සැසිය මරා දමන්න. ඔබට පැය 24 ක් බලා සිටීමට අවශ්‍ය නැත.

InnoDB වගු

සහතික කිරීමේ පොතේ ඉහත සඳහන් උපුටා දැක්වීම මත පදනම්ව, නිශ්චිත InnoDB වගුවක් උපස්ථ කරන්නේ කෙසේද යන්න පාලනය කරන සාධක බොහොමයක් තිබේ. සරල බව, පැහැදිලිකම සහ සංක්ෂිප්තභාවය සඳහා, වගුවේ පරිපූර්ණ වේලාවට ඩම්ප් කිරීම සඳහා --single- ගනුදෙනු පරාමිතීන් භාවිතා කරමින් අපේක්ෂිත වගුවේ mysqldump සිදු කරන්න. ඔබට එක් මේසයක් අවශ්‍ය නම් InnoDB අර්ථ නිරූපණයන් සමඟ සම්බන්ධ වීමට අවශ්‍ය නැත. ඔබ කැමති ඕනෑම MySQL සේවාදායකයකට එම ඩම්ප්ෆයිල් නැවත පූරණය කළ හැකිය.

ප්‍රශ්න දෙකක් මෙහි ඒකාබද්ධ කර ඇති බැවින් (jcolebrand): සංස්කරණය කරන්න

ඔබ මන්දගාමී ඩීබී කාර්ය සාධනයක් සමඟ ජීවත් වීමට කැමති නම්, MySQL තවමත් සර්වර්ඒ හි ක්‍රියාත්මක වන විට පවා ඔබට පැරණි සේවාදායකයේ (සර්වර්ඒ) සිට නව සේවාදායකයට (සර්වර් බී) rsync මාලාවක් සිදු කළ හැකිය.

පියවර 01) ServerA සතුව ඇති mysql හි අනුවාදය ServerB හි ස්ථාපනය කරන්න

පියවර 02) සර්වර්ඒ හි, මයිස්ක්ල් SET GLOBAL innodb_max_dirty_pages_pct = 0;සිට විනාඩි 10 ක් පමණ ධාවනය කරන්න (මෙය ඉනෝ ඩී බී බෆර් තටාකයෙන් අපිරිසිදු පිටු පිරිසිදු කරයි. එය මයිස්ක්ල් වසා දැමීම වේගයෙන් සිදු කිරීමටද උපකාරී වේ) ඔබේ දත්ත සමුදාය සියල්ලම මයිසාම් නම්, ඔබට මෙම පියවර මඟ හැරිය හැක.

පියවර 03) rsync --archive --verbose --stats --partial --progress --human-readable ServerA:/var/lib/mysql ServerB:/var/lib/mysql

පියවර 04) rsync මිනිත්තු 1 කට වඩා අඩු කාලයක් ගත වන තෙක් පියවර 03 නැවත කරන්න

පියවර 05) service mysql stopServerA මත

පියවර 06) තවත් එක් rsync සිදු කරන්න

පියවර 07) scp ServerA:/etc/my.cnf ServerB:/etc/

පියවර 08) service mysql startServerB මත

පියවර 08) service mysql startServerA මත (අත්‍යවශ්‍ය නොවේ)

එය උත්සාහ කර බලන්න !!!

අවවාදය

ඔබට මේ ආකාරයට අනුරූකරණ දාසයෙකු නිර්මාණය කළ හැකිය. /Etc/my.cnf මාස්ටර් තුළ සේවාදායක හැඳුනුම්පත පැහැදිලිව සකසා ඇති බව මතක තබා ගන්න. /Etc/my.cnf


29

ඔබ සම්පූර්ණ දත්ත සමුදායක් ගෙන යන්නේ නම් ඔබට mysqldump පවා අවශ්‍ය නොවන අතර පළමු දත්ත සමුදාය නැවැත්වීමට ඔබ කැමති වේ (එබැවින් එය මාරු කිරීමේදී එය ස්ථාවර වේ)

  1. දත්ත සමුදාය නවත්වන්න (නැතහොත් එය අගුළු දමන්න)
  2. MySQL දත්ත ගොනු ඇති නාමාවලිය වෙත යන්න.
  3. ෆෝල්ඩරය හරහා (සහ එහි අන්තර්ගතය) නව සේවාදායකයේ mysql දත්ත නාමාවලියට මාරු කරන්න
  4. දත්ත සමුදාය උපස්ථ කිරීම ආරම්භ කරන්න
  5. නව සේවාදායකයේ, 'create database' විධානයක් නිකුත් කරන්න. '
  6. පරිශීලකයින් නැවත නිර්මාණය කිරීම සහ අවසර ලබා දීම.

Mysqldump හැන්ඩ්ල් භාවිතා කරන්නන් සහ අවසර, හෝ යන්තම් දත්ත නම් මට මතක නැහැ ... නමුත් එය පවා නම්, මේ වන ආකාරය වේගයෙන් සඳහා හැලීම් කරන්නේ සහ එය ක්රියාත්මක වඩා. මම එය භාවිතා කරන්නේ මට MySQL දත්ත ගබඩාවක් ඩම්ප් කිරීමට අවශ්‍ය නම් වෙනත් RDBMS වෙත නැවත ඇතුල් කිරීමට, ගබඩා විකල්පයන් වෙනස් කිරීමට අවශ්‍ය නම් (innodb vs. myisam), හෝ සමහර විට මම mysql හි ප්‍රධාන පද වෙනස් කරන්නේ නම් (නමුත් මම හිතන්නේ මම මෙය 4 සහ 5 අතර කර ඇති නමුත්)


මෙය වඩාත් කාර්යක්ෂම වේ, විශේෂයෙන් යමෙකු සයිසැඩ්මින් / ඩීබීඒ නම්. BTW mysqldump ඩම්ප්ස් භාවිතා --all-databasesකරමින් mysql schema. මීලඟ යන්ත්‍රයේ mysql ආරම්භ කිරීමෙන් ඔබ දත්ත ෆෝල්ඩරය අනෙක් යන්ත්‍රයට මාරු කළ විට MySQL එකම ප්‍රධාන නිකුතුව සමඟ අවසර ලබා දේ. (MySQL 5.5.x සිට MySQL 5.5.x දක්වා, MySQL 5.1.x සිට MySQL 5.1.x දක්වා, MySQL 5.0.x සිට MySQL 5.0.x දක්වා)
RolandoMySQLDBA

4
Oe ජෝ, ඔව්, mysqldumpපරිශීලකයින් සහ අවසරයන් හසුරුවයි mysql.
ෂ්ලෝමි නොච්

AWS වැනි වලාකුළු සත්කාරකත්වය සමඟ මෙම ප්‍රවේශය විශේෂයෙන් ප්‍රයෝජනවත් වේ. ඔබට වත්මන් සේවාදායකයෙන් mysql නැවැත්වීමට, ඉවත් කිරීමට සහ වෙන් කිරීමට හැකිය; අමුණා නව සේවාදායකයට සවි කර mysql ආරම්භ කරන්න. එකම සේවාදායක ගොවිපලක පරිමාව පවතින්නේ නම් පිටපත් උඩින් නැත.
LateralFractal

ඔබ විශාල දත්ත ගබඩාවක අනුරුවක් සාදන්නේ නම්, දත්ත සමුදාය අගුළු දමා ලිපිගොනු වල දේශීය පිටපතක් සාදන්න. විමසුමෙන් තොරතුරු සටහන් කර show master status;ඉන්පසු unlock tables;. ඔබේ පහසුව අනුව ගොනු වහල් සේවාදායකයට පිටපත් කළ හැකිය. මෙම තත්වය තුළ මට ඉදිරිපත් කිරීමට හැකි වූ කෙටිම අක්‍රීය කාලය මෙයයි.
නිකොලා නොවාක්

13

ඔබට නිශ්චිත වගුවක් ගෙනයාමට අවශ්‍ය නම් උත්සාහ කරන්න:

mysqldump -u username -ppassword databasename tablename > databasename.tablename.sql

එකම විධානයකින් ඔබට තවත් වගු නම් සඳහන් කළ හැකිය. විධානය සම්පුර්ණ වූ පසු, databaseasename.tablename.sql ගොනුව අනෙක් සේවාදායකයට ගෙන ගොස් නැවත භාවිතා කරන්න:

mysql -u username -ppassword databasename < databasename.tablename.sql

පසුපස .sql ගොනුව නිර්මාණය කර ඇත්තේ mysqldump වැඩසටහන භාවිතයෙන් බවත් , ප්‍රතිස්ථාපනය කෙලින්ම mysql වෙත සිදු කරන බවත් සලකන්න .


7
  1. ඔබට ssh ප්‍රවේශය ඇත්නම් විධාන රේඛාවෙන් mysqldump භාවිතා කළ හැකිය
  2. ඔබට ssh ප්‍රවේශය නොමැති නමුත් ඔබට phpMyAdmin ප්‍රවේශය තිබේ නම් ඔබට එය අපනයනය / ආනයනය සඳහා භාවිතා කළ හැකිය
  3. ඔබට phpMyAdmin ප්‍රවේශය නොමැති නම්, අතහැර දැමිය හැකි සහ ආනයනය කරන ඉතා පහසු php ස්ක්‍රිප්ට් තිබේ (කෙසේ වෙතත් මගේම අත්දැකීම් වලින් කියතොත්, මම කිසි විටෙකත් phpMyAdmin තරම් විශ්වාසදායක එකක් සොයා ගත්තේ නැත).

ඔබ සත්‍ය දත්ත සමුදා ලිපිගොනු ගෙන යන තැන මෙම සම්භාවිතාව තිබිය හැකිය (මගේ ස්ථාපනය සඳහා ඒවා පිහිටා ඇත්තේ / var / lib / mysql හි ය), නමුත් එය ක්‍රියා කරන්නේ කෙසේද / ක්‍රියාත්මක වන්නේ කෙසේද යන්න ගැන මම සැබවින්ම නොසිතමි.


5

ඔබට අක්‍රීය කාලයක් ගත කිරීමට අවශ්‍ය වනු ඇත. ඔබගේ ජාල වේගය කුමක්ද යන්න මත පදනම්ව එය ටික වේලාවක් ගතවනු ඇත. මම ලිනක්ස් / යුනික්ස් මත ධාවනය වන MySQL උපකල්පනය කරමි. මෙන්න මම භාවිතා කරන ක්‍රියාවලිය:

  1. මූලාශ්‍ර ධාරකයේ ඇති mysql ඩීමනය නවත්වන්න.
  2. ලිපිගොනු ලැබීමට ඔබේ ඉලක්ක ධාරකයේ tmp ෆෝල්ඩරයක් සාදන්න.
  3. ඔබේ ssh විසන්ධි වුවහොත් නොනැසී පවතින ෂෙල් සැසියක් කිරීමට තිරය භාවිතා කරන්න .
  4. ධාරකයන් අතර ලිපිගොනු මාරු කිරීමට rsync භාවිතා කරන්න . වැනි දෙයක්: rsync -avhP ප්‍රභව පරිශීලක @ targethost: / path / to / folder /
  5. මාරුවීමේදී ඔබට කිසිවක් අහිමි නොවූ බවට වග බලා ගැනීම සඳහා ඔබේ පරීක්ෂණ අවස්ථා ධාවනය කරන්න.

ඉන්පසු සුපුරුදු පරිදි දේශීය MySQL සැකසුම ලබා ගන්න.

* සටහන: මාරු කිරීම සඳහා චෙක්සමයක් එක් කිරීමට ඔබට rsync සමඟ -c පරාමිතිය භාවිතා කළ හැකිය, කෙසේ වෙතත් මෙය CPU වේගය අනුව වෙනස් වනු ඇත.


4

උබුන්ටු සහ ඔක්ස් අතර පිටපත් කිරීම සඳහා ඩීටෙස්ට් ක්‍රමය ද ක්‍රියාත්මක වන බව මට තහවුරු කළ හැකිය.

කිසිදු ඩම්ප් කිරීමක් හෝ ඒ හා සමාන දෙයක් නොකර සියලුම දත්ත සමුදායන් පිටපත් කිරීම:

ඔබ සතුව mysql පිරිසිදු mysql ඇති බවට වග බලා ගන්න (mysql වෙතින් බාගත කළ dmg ස්ථාපනය කර ඇත http://cdn.mysql.com/Downloads/MySQL-5.1/mysql-5.1.63-osx10.6-x86_64.dmg ), එය (VERY) වැදගත්) කිසි විටෙකත් ධාවනය කර නැත.

මැක්හි / usr / local / mysql / data / අන්තර්ගතයට ඉහළින් ඇති උබුන්ටු යන්ත්‍රයෙන් / var / lib / mysql / ෆෝල්ඩරයේ අන්තර්ගතය පිටපත් කරන්න. උබුන්ටු යන්ත්‍රයේ ෆෝල්ඩරය ලබා ගැනීමට ප්‍රවේශය ලබා ගැනීම සඳහා මට sudo භාවිතා කිරීමට සිදු විය:

sudo cp /var/lib/mysql /home/foouser/mysql_data_folder
sudo chown -R foouser /home/foouser/mysql_data_folder

මම scp භාවිතයෙන් ෆෝල්ඩරය පිටපත් කළෙමි.

ඔබ ආරම්භ කිරීමට පෙර මැක්හි ඇති mysql ෆෝල්ඩරයේ පිටපතක් ගෙන ඔබ කිසිවක් අවුල් නොකරන බවට වග බලා ගන්න.

ෆෝල්ඩරය පිටපත් කිරීමෙන් පසුව, මැක් යන්ත්‍රයේ පහත සඳහන් දෑ කරන්න:

sudo chown -R _mysql /usr/local/mysql/data/
sudo chgrp -R wheel /usr/local/mysql/data/
sudo chmod -R g+rx /usr/local/mysql/data/

පළමු වරට mysql සේවාදායකය ආරම්භ කරන්න (පද්ධති අභිරුචි-> mysql යටතේ ඇති මනාප කවුළුවෙන්). සියලුම පරිශීලකයින් සහ දත්ත සමුදායන් දැන් නිවැරදිව සැකසිය යුතුය.

මෙය උබුන්ටු 64 බිට් 11.10 හි mysql 5.1.61 හා ඔස්ක් සිංහයා මත mysql 5.1.63 (මැක්බුක් ප්‍රෝ) සමඟ ක්‍රියා කළේය.


4

මම හිතන්නේ කලින් පිළිතුරු සියල්ලම හොඳින් ක්‍රියාත්මක විය හැකි නමුත් මාරුවීමේදී දත්ත සමුදා නාමයක් සැකසීමේ ගැටලුව සැබවින්ම විසඳා නොගන්න.

මම මෙය බාෂ් සමඟ කළ ආකාරය මෙයයි:

ඔබ බොහෝ විට මෙය කරන්නේ නම් ගොනුව සම්පීඩනය නොකිරීමට rsyncවඩා හොඳය scp.

මගේ ප්‍රභව සේවාදායකයේ:

me@web:~$ d=members
me@web:~$ mysqldump $d | gzip > $d.sql.gz
me@web:~$ scp -i .ssh/yourkeynamehere $d.sql.gz $sbox:$d.sql.gz

මගේ ගමනාන්ත සේවාදායකයේ:

me@sandbox:~$ d1=members
me@sandbox:~$ d2=members_sb
me@sandbox:~$ mysqladmin create $d2
me@sandbox:~$ cat $d1.sql.gz | gunzip |  mysql $d2

ප්‍රගතිය බැලීමට එක් යන්ත්‍රයකම:

me@sandbox:~$ ls *.gz 
me@sandbox:~$ cat $d.sql.gz | gunzip |  less

මේ සියල්ලම ඔබගේ නිවසේ නාමාවලියෙහි යන්ත්‍ර දෙකෙහිම MySQL වින්‍යාස ගොනුවක් ඇති බව උපකල්පනය කර අවසරයන් සකසා ඇත:

$ echo "
[client]
user=drupal6
password=metoknow
host=ord-mysql-001-sn.bananas.com
[mysql]
database=nz_drupal" > .my.cnf
$ chmod 0600 ~/.my.cnf

3

ඔබ එය වෙනත් mysql සේවාදායකයක් වෙත ගෙන යනවාද? එසේ භාවිතා කරන්නේ නම්, ඒ සඳහා අපනයනයක් කරන්න

# mysqldump -u username -ppassword database_name > FILE.sql

Mysqldump? ඔබ කුඩා දත්ත ප්‍රමාණයක් සමඟ ගනුදෙනු කරන්නේ එවිටද?
ඔහ් චින් බූන්

2
මම හිතන්නේ කුඩා / විශාල මේ දිනවල තරමක් ආත්මීයයි. ප්‍රශ්නයේ මාතෘකාව දුටු විට, දත්ත සමුදාය 20gb ට වඩා විශාල වනු ඇතැයි මම අපේක්ෂා කළෙමි ...
ආරොන් බර්ට්‍රන්ඩ්

3

සාමාන්‍ය ලිනක්ස් ක්‍රමය:

/etc/init.d/mysqld stop
rsync -avz source_files destination
vi /etc/my.cnf

නව ස්ථානයට යොමු කිරීම සඳහා mysqld සහ mysqld_safe (අදාළ නම්) සඳහා datadir (සහ සොකට්) සංස්කරණය කරන්න, පසුව

/etc/init.d/mysql start

මා මෙය පළ කළේ කිසිවෙකු මෙය කිරීමට අවම පියවරයන් ලැයිස්තුගත කර නැති නිසා එය පෞද්ගලිකව ඇති සරලම ක්‍රමය ලෙස මට හැඟෙන බැවිනි.


2

සමහර විට මෙය වඩා හොඳ ක්‍රමයක් විය හැකිය:

අනුවාදය 1 : දත්ත ගොනු පිටපත (MYISAM පමණි)

ssh server1
service mysql stop
cd $mysql-data-dir
rsync -avz dirs-or-files server2:$mysql-data-dir
service mysql start

ssh server2 සේවාව නැවත ආරම්භ කරන්න mysql

  • ඔබගේ දත්ත සමුදා ලිපිගොනු කියවා ඇත්නම් පමණක් ඔබට සේවාදායකය නැවැත්විය හැකිය.

අනුවාදය 2 : mysqldump

Pigz ස්ථාපනය කරන්න - නවීන Xeon හෝ Opteron ප්‍රොසෙසර වල, විශේෂයෙන් ඔබ සතුව CPU 2 ක් හෝ වැඩි ගණනක් ඇති විට එය gzip වලට වඩා වේගවත් වේ.

ssh server1 
mysqldump ... | pigz > backup-YYMDD.sql.gz
rsync backup-YYMDD.sql.gz server:location

ssh server2
pigz -dc location/backup-YYMDD.sql.gz | mysql ..

අනුවාදය 3 : ස්වාමියා / දාසයා + mysqldump / ගොනු පිටපත

In HA environment you should use the following trick:
setup slave server & do all backups from it
before backups - do "slave stop"; 
then do version 1 or version 2

පිටපත:

touch full.start
mysqladmin -h slave-db stop-slave
echo "show slave status \G" | mysql -h slave-db > FULL/comfi-$NOW.master-position
/usr/bin/mysqldump -h slave-db --default-character-set=utf8 -A --opt --skip-lock-tables | pigz > "FULL/XXXX-$NOW.sql.gz"
mysqladmin -h slave-db start-slave
touch full.end

ln -fs "FULL/XXXX-$NOW.sql.gz" FULL.sql.gz

PS:

කුඩා වගු පිටපත් කිරීමට භාවිතා කරන්න:

ssh server1 mysqldump schema table | ssh server2 mysql schema


2

සමස්ත දත්ත සමුදාය එක් සේවාදායකයකින් තවත් සේවාදායකයකට මාරු කිරීම සඳහා සරල පියවර දෙක යෝජනා කරමි.

පියවර 1 : mysqldump භාවිතා කරමින් ප්‍රභව සේවාදායකයේ දත්ත සමුදායන්ගේ පූර්ණ උපස්ථයක් කරන්න .

පියවර 2 : සම්පූර්ණ දත්ත සමුදායන් ගමනාන්ත සේවාදායකයට මාරු කිරීමට ඔබට rsync විධානය භාවිතා කළ හැකිය .

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.