විශාල දත්ත ගබඩාවක mysqldump ප්‍රශස්තිකරණය කරන්නේ කෙසේද?


179

මට InnoDB දත්ත සමුදායක් සහිත sy 2GB වන වගු 57 ක් සහිත සිම්ෆනි යෙදුමක් තිබේ. දත්ත සමුදායේ ප්‍රමාණයෙන් වැඩි ප්‍රමාණයක් තනි වගුවක (GB 1.2GB) වාසය කරයි. මම දැනට රාත්‍රියේ දත්ත සමුදාය උපස්ථ කිරීම සඳහා mysqldump භාවිතා කරමි.

මගේ කොම්කාස්ට් සම්බන්ධතාවය නිසා, බොහෝ විට මම අතින් ඩම්ප් එකක් ධාවනය කරන්නේ නම්, ඩම්ප් එක සම්පුර්ණ වීමට පෙර සේවාදායකයට මගේ සම්බන්ධතාවය කල් ඉකුත් වනු ඇත. [මම දැනට ක්‍රෝන් එකක් දුවන්නේ රාත්‍රියේ ඩම්ප් කරන නිසාය, මෙය මා අතින් ධාවනය කරන ඩම්ප් සඳහා පමණි.]

සම්බන්ධතා කල් ඉකුත් වීමේ ගැටළුව සඳහා ඩම්ප් වේගවත් කිරීමට ක්‍රමයක් තිබේද, නමුත් මෙම ක්‍රියාවලිය සමඟ සේවාදායකයා රැඳී සිටින කාලය සීමා කිරීමටද?

BTW, මම දැනට මෙම ගැටළුව විසඳීම සඳහා සමස්ත දත්ත ගබඩාවේ ප්‍රමාණය අඩු කිරීමට කටයුතු කරමින් සිටිමි.


2
ඔබ mysqldump විධානය වෙත යොමු කරන්නේ කුමන පරාමිතීන් (ඇත්නම්)?
ටෝබි

--Compact එකතු කිරීම ඔබට විකල්පයක් විය හැකිය.
ටෝබි

5
screenඔබගේ තත්වය සඳහා සරල විකල්පයක් වනුයේ nohup, එය ඔබගේ සම්බන්ධතාවය අතහැර දැමුවද, ඔබේ විධානය සේවාදායකයේ දිගටම ක්‍රියාත්මක වීමට ඉඩ සලසයි. උදා nohup mysqldump [options] > backup.sql 2> backup.err &. ඔබ සඳහා ප්‍රතිදාන ගොනුවක් ලබා නොදෙන්නේ නම් nohup, එය nohup.outපෙරනිමියෙන් නිර්මාණය වේ.
dabest1

1
බලන්න atසහ screen(දෙවැන්න ස්ථාපනය කර ඇත්නම්, නමුත් atසියලු යුනික්ස් වල සම්මත වේ) හෝ ServerAliveIntervalෆයර්වෝලය සමඟ ගනුදෙනු කිරීමේ ක්‍රම සඳහා SSH සඳහා ඇති විකල්පයන් දිගු නිෂ්ක්‍රීය සම්බන්ධතාවයකින් පසුව ඔබව වසා දමයි.
මැට්බියන්කෝ

1
මට අවශ්‍ය වන්නේ ඔබ --opt mysqldump උපයෝගීතාවයෙන් භාවිතා කරන බවට වග බලා ගැනීමයි. නැවත පූරණය කිරීමේදී මෙය විශාල කාල ඉතිරියක් වේ. එය නොමැතිව mysqldump sql ගොනු පේළිය පේළියකින් නිර්මාණය කරයි. --opt කරයි: සක්‍රීය කර ඇති සියලු නිර්මාණ විකල්පයන් සමඟ අගුල් එකතු කිරීම, අතහැර දැමීම සහ ප්‍රතිනිර්මාණය කිරීම, ඉක්මන් රීලෝඩ් කිරීම සඳහා යතුරු තාවකාලිකව අක්‍රීය කිරීම සහ ලිවීම අවසන් වූ පසු දර්ශක නැවත ගොඩනඟා ගැනීම සඳහා යතුරු නැවත හරවන්න. එක් එක් ප්‍රකාශයේ ගොනුකරණය සහ විග්‍රහ කිරීමේ කාලය (70% දක්වා) අඩු කිරීම සඳහා එය පේළි කිහිපයක් ඇතුළු කිරීම් සමඟ සමපාත වන අතර ක්‍රියාත්මක වන විට ඩම්ප් ඩම්ප් වලට එරෙහිව බර අඩු කිරීමට --quick සක්‍රීය කරයි. පැටවීමේ කාලය 80% කින් අඩු කරයි
ppostma1

Answers:


139

මේ වගේ කුණු කූඩයේ ඇති ප්‍රධාන බාධකය වන්නේ ඩ්‍රයිව් අයි / ඕ ය. ඔබ දත්ත විශාල ප්‍රමාණයක් කියවා නැවත ලියයි. ඔබට මෙය ක්‍රම කිහිපයකින් වේගවත් කළ හැකිය:

  • ඔබේ ප්‍රතිදානය දත්ත සමුදා ලිපිගොනු ගබඩා කර ඇති එකකට වඩා වෙනස් ධාවකයකට (ය) යන බවට වග බලා ගන්න - මෙය කියවන ස්ථානය අතර ඩ්‍රයිව් හෙඩ්ස් නිරන්තරයෙන් නොපෙනෙන හෙයින් භ්‍රමණය වන තැටි සමඟ මෙය විශාල වෙනසක් ඇති කරයි. සහ ලියන ස්ථානය.
  • MySqldump හි ප්‍රතිදානය ඉතා සම්පීඩිත වනු ඇත, එබැවින් ඉහත සඳහන් කළ පරිදි ආදානයෙන් ප්‍රතිදානය වෙන් කළ නොහැකි නම් ප්‍රතිදානය හරහා gzipහෝ ඊට සමාන ප්‍රතිදානය . මෙය යම් CPU වේලාවක වියදමින් සිදු කරනු ලබන ලිවීමේ ප්‍රමාණය අඩු කරයි (එබැවින් සමස්ත IO භාරය සහ හිස චලනය වන ප්‍රමාණය අඩු කරන්න) (ඔබට කෙසේ හෝ මේ වේලාවේ විශාල ඉඩ ප්‍රමාණයක් තිබිය හැක).
  • එසේම, (මෙන්ම සම්පීඩනය වෙනුවට) ප්‍රතිදානය පයිප්ප උපයෝගීතාවයෙන් ( පීවී වැනි ) හරහා ඩ්‍රයිව් වෙත ලියා ඇති කණ්ඩායම් කොටස් වෙත විශාල ලිවීමේ බෆරයට සහය දක්වයි, නැවත හිස චලනය කිරීමේ ප්‍රමාදයේ බලපෑම අඩු කිරීම සඳහා - මෙය සිදු කරනු ඇත --quickවිශාල වගු උපස්ථ කිරීමේ RAM බලපෑම අවම කිරීම සඳහා විකල්පය භාවිතා කරන්නේ නම් තරමක් වෙනසක් ).
  • IO භාරය වෙනත් ආකාරයකින් අඩු වූ විට පමණක් ඔබගේ උපස්ථ ක්‍රියාවලිය ක්‍රියාත්මක කරන්න.

ඔබ වැරදි ගැටළුව විසඳා ගන්නවා විය හැකිය: ඒ වෙනුවට සම්බන්ධතා බිංදු ආමන්ත්‍රණය කිරීම පහසු විය හැකිය (ඔබේ උපස්ථ මඟින් පනවා ඇති I / O භාරය අඩු කිරීම මඟින් ඔබ අනෙක් පරිශීලකයින් කෙරෙහි ඇති කරන බලපෑම අඩු කිරීමට උපකාරී වනු ඇත, කෙසේ වෙතත් උත්සාහ කිරීම වටී). ඔබේ අත්පොත උපස්ථ තිරය හරහා ධාවනය කළ හැකිද (හෝ tmux වැනි සමාන මෙවලම් )? එමඟින් සේවාදායකයට ඔබගේ සම්බන්ධතාවය පහත වැටුණහොත් ඔබට screenකිසිදු ක්‍රියාවලියකට බාධා නොකර නැවත සම්බන්ධ වී සැසියට නැවත සම්බන්ධ කළ හැකිය .

ඔබ කෙලින්ම සම්බන්ධතාවය හරහා දත්ත යවන්නේ නම් (එනම් ඔබ දුරස්ථ දත්ත ගබඩාවකට එරෙහිව ඔබේ දේශීය යන්ත්‍රයේ mysqldump ධාවනය කරයි, එබැවින් ඩම්ප් දේශීයව දිස් වේ) ඔබට පළමුව සේවාදායකයේ ඩම්ප් ධාවනය කිරීම, අවශ්‍ය පරිදි සම්පීඩනය කිරීම, පසුව මාරු කිරීම වඩා හොඳ විය හැකිය. rsyncඅර්ධ මාරුවීම් සඳහා සහය දක්වන මෙවලමක් (වැනි ) භාවිතා කරමින් ජාලය හරහා ඇති දත්ත, එවිට සම්බන්ධතා බිඳ වැටීමකට බාධා ඇති වුවහොත් ඔබට නැවත මාරුවීම (නැවත ආරම්භ කිරීම වෙනුවට) කළ හැකිය.

ඔබගේ "මෙම ගැටළුව විසඳීම සඳහා සමස්ත දත්ත ගබඩාවේ ප්‍රමාණය අඩු කිරීමේ" කොටසක් ලෙස, ඔබේ දත්ත විශාල ප්‍රමාණයක් වෙනස් නොවන බව මම අනුමාන කරමි. 1.2Gb විශාල කැබැල්ලක් එම ප්‍රධාන මේසයෙන් වෙනත් ස්ථානයකට ගෙන ගොස් mysqldumpඇමතුමෙන් පිටපත් කළ ඒවා ඉවත් කිරීමට ඔබට හැකි වනු ඇත . මෙම දත්ත කිසි විටෙකත් වෙනස් නොවන්නේ නම් ඔබට එය උපස්ථ කිරීමට අවශ්‍ය නොවේ. මේ ආකාරයට වගු සහ දත්ත සමුදායන් අතර දත්ත බෙදීම සාමාන්‍යයෙන් දත්ත කොටස් කිරීම ලෙස හැඳින්වෙන අතර දත්ත සහ I / O භාරය බහු ධාවක හරහා ව්‍යාප්ත කිරීමටද ඔබට ඉඩ සලසයි. ස්වයංක්‍රීය කොටස් කිරීම සඳහා ඉහළ මට්ටමේ දත්ත සමුදායක් ගොඩනගා ඇත, නමුත් mysql හි ඔබට එය අතින් කළ යුතු අතර ඔබේ දත්ත ප්‍රවේශ ස්ථරය ඒ සඳහා ගිණුමට වෙනස් කළ යුතුය.

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


මගේ සේවාදායකයන්ට අතහැර දැමූ ssh සම්බන්ධතා ගණන අඩු කිරීමට මම ප්‍රාර්ථනා කරමි. තත්පර 60 කට වඩා වැඩි කාලයක් ටර්මිනලය භාවිතා නොකිරීමට මා බලාපොරොත්තු වන්නේ නම් top, සම්බන්ධතාවය පහත වැටෙන්නේ නැති බව සහතික කර ගැනීමට මම ධාවනය කරමි . (මට විශ්වාසයි එය කොම්කාස්ට් සම්බන්ධතාවය නිසා අපි භාවිතා කරන්නේ සම්මත ඩබ්ලිව්ආර්ටී රවුටරයක් ​​සහ ෆයර්වෝලයක් පමණක් වන අතර මගේ නිවසේ කොම්කාස්ට් සම්බන්ධතාවය කිසි විටෙකත් පහත වැටෙන්නේ නැත)
පැට්‍රික්

මම SSH සම්බන්ධතාවලට විශේෂිත කෙටි සටහනක් එක් කර ඇත්තෙමි.
ඩේවිඩ් ස්පිලට්

2
මෙම පිළිතුරේ ගැඹුර සහ තීක්ෂ්ණ බුද්ධිය. මේ සඳහා ඔබ +3 ලබා ගත යුතුය. කණගාටුයි, මට ඔබට දිය හැක්කේ +1 පමණි.
RolandoMySQLDBA

2GB දී BTW සඳහා මිනිත්තු කිහිපයක් ගතවනු ඇත, නමුත් එය තවමත් කළ හැකි දෙයකි. 1 / 2TB පමණ වටිනා දත්ත සහිත සේවාදායකයන් මම සාමාන්‍යයෙන් උපස්ථ කිරීමට පුරුදුව සිටියෙමි, එවැනි අවස්ථාවන්හිදී, අනුරූ ඩීබී ධාවනය කිරීම පහසු වන අතර පසුබිම තුළ කොටුවේ ස්නැප්ෂොට් කරන්න.
මාර්ක් ඩී

122

MySqldump සමඟ බැකප් කිරීමට තොරතුරු

IMHO උපස්ථ කිරීම ඔබ එය වෙත ළඟා වන්නේ කෙසේදැයි දන්නේ නම් එය කලාවක් බවට පත්ව ඇත

ඔබට විකල්ප ඇත

විකල්ප 1: mysqldump සම්පූර්ණ mysql උදාහරණයක්

මෙය පහසුම එක, මොළයක් නැති !!!

mysqldump -h... -u... -p... --hex-blob --routines --triggers --all-databases | gzip > MySQLData.sql.gz

එක් ගොනුවක ලියා ඇති සියල්ල: වගු ව්‍යුහයන්, දර්ශක, ප්‍රේරක, ගබඩා කළ ක්‍රියා පටිපාටි, පරිශීලකයින්, සංකේතාත්මක මුරපද. වෙනත් mysqldump විකල්පයන්ට විවිධ මෝස්තර INSERT විධානයන්, ද්විමය ල logs ු-සටහන් ගොනුව සහ ස්ථාන ඛණ්ඩාංක, දත්ත සමුදා නිර්මාණය කිරීමේ විකල්ප, අර්ධ දත්ත (- කොතැනක විකල්පය) යනාදිය අපනයනය කළ හැකිය.

විකල්ප 2: mysqldump වෙනම දත්ත ගොනු වෙනම දත්ත ගොනු වලට

දත්ත සමුදා ලැයිස්තුවක් නිර්මාණය කිරීමෙන් ආරම්භ කරන්න (මෙය කිරීමට ක්‍රම 2 ක්)

තාක්ෂණය 1

mysql -h... -u... -p... -A --skip-column-names -e"SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','mysql')" > ListOfDatabases.txt

තාක්ෂණය 2

mysql -h... -u... -p... -A --skip-column-names -e"SELECT DISTINCT table_schema FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql')" > ListOfDatabases.txt

තාක්ෂණික ක්‍රමය 1 වේගවත්ම ක්‍රමයයි. ටෙක්නික් 2 යනු විශ්වාසදායක හා ආරක්ෂිතයි. තාක්‍ෂණය 2 වඩා හොඳ වන්නේ, සමහර විට, පරිශීලකයින් දත්ත සමුදායට සම්බන්ධ නොවන / var / lib / mysql (datadir) හි පොදු අරමුණු සඳහා ෆෝල්ඩර නිර්මාණය කරන බැවිනි. Information_schema.schemata වගුවේ තොරතුරු_චෙමා ෆෝල්ඩරය දත්ත සමුදායක් ලෙස ලියාපදිංචි කරයි. ටෙක්නික් 2 මගින් mysql දත්ත අඩංගු නොවන ෆෝල්ඩර මඟ හරිනු ඇත.

ඔබ දත්ත සමුදායන් ලැයිස්තුව සම්පාදනය කළ පසු, ඔබට ලැයිස්තුව හරහා ඉදිරියට ගොස් ඒවා අවශ්‍ය නම් සමාන්තරව වුවද ඒවා mysqldump කළ හැකිය.

for DB in `cat ListOfDatabases.txt`
do
    mysqldump -h... -u... -p... --hex-blob --routines --triggers ${DB} | gzip > ${DB}.sql.gz &
done
wait

එකවර දියත් කිරීමට තරම් දත්ත සමුදායන් තිබේ නම්, සමාන්තරව ඒවා එකවර 10 ක් දමන්න:

COMMIT_COUNT=0
COMMIT_LIMIT=10
for DB in `cat ListOfDatabases.txt`
do
    mysqldump -h... -u... -p... --hex-blob --routines --triggers ${DB} | gzip > ${DB}.sql.gz &
    (( COMMIT_COUNT++ ))
    if [ ${COMMIT_COUNT} -eq ${COMMIT_LIMIT} ]
    then
        COMMIT_COUNT=0
        wait
    fi
done
if [ ${COMMIT_COUNT} -gt 0 ]
then
    wait
fi

විකල්ප 3: mysqldump වෙනම දත්ත ගොනු වලට වෙනම වගු

වගු ලැයිස්තුවක් නිර්මාණය කිරීමෙන් ආරම්භ කරන්න

mysql -h... -u... -p... -A --skip-column-names -e"SELECT CONCAT(table_schema,'.',table_name) FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql')" > ListOfTables.txt

ඉන්පසු සියලුම වගු 10 ක කණ්ඩායම් වලට දමන්න

COMMIT_COUNT=0
COMMIT_LIMIT=10
for DBTB in `cat ListOfTables.txt`
do
    DB=`echo ${DBTB} | sed 's/\./ /g' | awk '{print $1}'`
    TB=`echo ${DBTB} | sed 's/\./ /g' | awk '{print $2}'`
    mysqldump -h... -u... -p... --hex-blob --triggers ${DB} ${TB} | gzip > ${DB}_${TB}.sql.gz &
    (( COMMIT_COUNT++ ))
    if [ ${COMMIT_COUNT} -eq ${COMMIT_LIMIT} ]
    then
        COMMIT_COUNT=0
        wait
    fi
done
if [ ${COMMIT_COUNT} -gt 0 ]
then
    wait
fi

විකල්ප 4: ඔබේ නිරූපණය භාවිතා කරන්න

පිරිසිදු ස්නැප්ෂොට් සඳහා ඉහත සඳහන් විකල්ප සහ ශිල්පීය ක්‍රමවල වෙනස්කම් උත්සාහ කරන්න

උදාහරණ

  1. එක් එක් වගු නඟින හෝ බැස යන ප්‍රමාණය අනුව වගු ලැයිස්තුව ඇණවුම් කරන්න.
  2. වෙනම ක්‍රියාවලියක් භාවිතා කරමින්, mysqldumps දියත් කිරීමට පෙර "FLUSH TABLES WITH READ LOCK; SELECT SLEEP (86400)" ධාවනය කරන්න. MySqldumps අවසන් වූ පසු මෙම ක්‍රියාවලිය මරා දමන්න. දත්ත සමුදායක InnoDB සහ MyISAM යන දෙකම අඩංගු නම් මෙය ප්‍රයෝජනවත් වේ
  3. දින වකවානු සහිත ෆෝල්ඩර වල mysqldumps සුරකින්න සහ පැරණි උපස්ථ ෆෝල්ඩර කරකවන්න.
  4. සම්පූර්ණ අවස්ථාවම mysqldumps හුදකලා සේවාදායකයට පටවන්න.

අවවාදය

සෑම දෙයක්ම ගෙන එන්නේ විකල්ප 1 පමණි. මෙහි ඇති අවාසිය නම්, මේ ආකාරයෙන් නිර්මාණය කරන ලද mysqldumps නැවත පූරණය කළ හැක්කේ mysqldump ජනනය කළ mysql හි එකම majot නිකුතුවට පමණි. වෙනත් වචන වලින් කිවහොත්, MySQL 5.0 දත්ත ගබඩාවෙන් mysqldump 5.1 හෝ 5.5 තුළ පූරණය කළ නොහැක. හේතුව ? ප්‍රධාන නිකුතු අතර mysql යෝජනා ක්‍රමය සම්පූර්ණයෙන්ම වෙනස් වේ.

2 සහ 3 විකල්ප වලට පරිශීලක නාම සහ මුරපද සුරැකීම ඇතුළත් නොවේ.

කියවිය හැකි සහ වඩා අතේ ගෙන යා හැකි පරිශීලකයින් සඳහා SQL ප්‍රදාන බැහැර කිරීමේ සාමාන්‍ය ක්‍රමය මෙන්න

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql

3 වන විකල්පය මඟින් ගබඩා කර ඇති ක්‍රියා පටිපාටි සුරකිනු නොලැබේ, එබැවින් ඔබට පහත සඳහන් දෑ කළ හැකිය

mysqldump -h... -u... -p... --no-data --no-create-info --routines > MySQLStoredProcedures.sql &

සැලකිල්ලට ගත යුතු තවත් කරුණක් වන්නේ InnoDB සම්බන්ධයෙනි. ඔබ සතුව විශාල InnoDB ස්වාරක්ෂක තටාකයක් තිබේ නම්, ඕනෑම උපස්ථයක් සිදු කිරීමට පෙර ඔබට හැකි උපරිමයෙන් එය ගලවා ගැනීම අර්ථවත් කරයි. එසේ නොමැතිනම්, MySQL බෆර් තටාකයෙන් පිටත ඉතිරිව ඇති අපිරිසිදු පිටුවක් සහිත වගු ගත කිරීමට කාලය වැය කරයි. මෙන්න මම යෝජනා කරන්නේ:

උපස්ථය සිදු කිරීමට පැය 1 කට පමණ පෙර මෙම SQL විධානය ක්‍රියාත්මක කරන්න

SET GLOBAL innodb_max_dirty_pages_pct = 0;

MySQL 5.5 හි පෙරනිමි innodb_max_dirty_pages_pct 75 වේ. MySQL 5.1 සහ පසුපසට පෙරනිමි innodb_max_dirty_pages_pct 90 වේ. Innodb_max_dirty_pages_pct 0 ලෙස සැකසීමෙන්, මෙය අපිරිසිදු පිටු තැටියට ගලා යාම ඉක්මන් කරයි. ඕනෑම InnoDB වගු වලට එරෙහිව mysqldump සිදුකිරීමට පෙර InnoDB දත්තවල අසම්පූර්ණ ද්වි-අදියර කොමිස් පිරිසිදු කිරීමේ බලපෑම මෙය වළක්වයි.

MySQLDump හි අවසාන වචනය

බොහෝ අය වෙනත් මෙවලම් වලට පක්ෂව mysqldump වෙතින් y ත් වන අතර එම මෙවලම් ඇත්තෙන්ම හොඳයි.

එවැනි මෙවලම් ඇතුළත් වේ

  1. මැට්කිට් (පර්කෝනා වෙතින් සමාන්තරව ඩම්ප් / ප්‍රතිස්ථාපන ස්ක්‍රිප්ට් [අවලංගු කරන ලද නමුත් විශිෂ්ටයි)
  2. එක්ස්ට්‍රාබැක්අප් (පර්කෝනා වෙතින් ටොප්නොච් ස්නැප්ෂොට් උපස්ථය)
  3. සීඩීපී ආර් 1 සොෆ්ට් ( නියමිත වේලාවට ස්නැප්ෂොට් ගන්නා MySQL මොඩියුල විකල්පය )
  4. MySQL ව්‍යවසාය උපස්ථය (කලින් InnoDB උණුසුම් උපස්ථ [වාණිජ])

ඔබට සැබෑ MySQL DBA හි ආත්මය තිබේ නම්, ඔබට mysqldump වැලඳ ගත හැකි අතර ඒ පිළිබඳව සම්පූර්ණ ප්‍රවීණත්වයක් ලබා ගත හැකිය. ඔබගේ සියලු උපස්ථයන් MySQL DBA ලෙස ඔබේ කුසලතාවන්ගේ පිළිබිඹුවක් වේවා .


2
+1 mysqldump හොඳින් භාවිතා කිරීම සඳහා මෙන්ම: ඔබට සැබෑ MySQL DBA හි ආත්මය තිබේ නම්, ඔබට mysqldump වැලඳ ගත හැකි අතර ඒ පිළිබඳව සම්පූර්ණ ප්‍රවීණත්වයක් ලබා ගත හැකිය. ඔබගේ සියලු උපස්ථයන් MySQL DBA ලෙස ඔබේ කුසලතාවන්ගේ පිළිබිඹුවක් වේවා .... විශිෂ්ට රේඛා !!!
අබ්දුල් මනාෆ්

4
InnoDB හි, තනි තනිව වගු දැමීමෙන් ඔබට නොගැලපෙන උපස්ථයක් ලැබෙනු ඇත.
ඇලයින් කොලින්ස්

5
La ඇලයින් කොලින්ස් කියවීමට පමණක් අනුරූප වහලෙකු මත මාස්ක්ල්ඩම්ප් ධාවනය කරන්නේ මේ නිසාය. Seconds_Behind_Master 0 වූ පසු, ඔබ STOP SLAVE ධාවනය කරන්න. ඉහත සඳහන් ඕනෑම මෝස්තරයකින් mysqldumps කිරීම සඳහා දැන් ඔබට ස්ථාවර වේලාවක් තිබේ. මට හෝ මගේ සමාගම් හිමියන්ට එක පැමිණිල්ලක්වත් නොමැතිව මම පසුගිය වසර 5 තුළ මාර්ගගත වෙළඳ සමාගම් සඳහා මෙය කර ඇත්තෙමි. මේ මොහොතේ සිට, මම මෙම සේවාදායකයා සඳහා සෑම විනාඩි 10 කට වරක් සමාන්තර mysqldumps කරන්නෙමි. අනෙක් සේවාදායකයින්ට වේගවත් උපස්ථ කාල සීමාවන් ලබා දීම සඳහා මම මෙය කරමි.
RolandoMySQLDBA

මට 32GB db ඇත, එබැවින් 3 වන විකල්පය හරියටම මගේ මතකයේ තිබුනි! ස්තූතියි!
රේමන්ඩ්

අතිශයින් විශාල ලෙස හැකිලීමට මට 1TB දත්ත උපස්ථ කර නැවත ආනයනය කළ ibdata1යුතුය. SSD වල දෘඩාංග RAID වල සහාය ඇතිව 3 වන විකල්පය මට ඇති එකම විසඳුමයි.
රබුඩ්

20

වහලුන්ට MySQL අනුරූකරණ මාස්ටර් දෙස බලන්න. එකම දත්ත සමුදායක් ඇති වෙනත් දත්ත සමුදා සේවාදායකයකට මාස්ටර්ගේ දත්ත සමුදාය ක්ලෝන කිරීමට එය ඔබට ඉඩ දෙයි. එයට ස්වාමියා සහ වහල් අනන්‍යතා ඇතුළත් වේ. ස්ලේව් විසින් ප්‍රධාන දත්ත සමුදා සේවාදායකයේ හෝ එහි දත්ත සමුදායන්ගේ නිශ්චිත පිටපතක් සාදයි. ස්වාමියා (ව) සහ දාසයන් අතර එක, එක, බොහෝ, බොහෝ-එක් relation ාතියෙකු සිටිය හැකිය.

ස්ලේව් මාස්ටර් හි ද්විමය ලොගය අඛණ්ඩව කියවයි (බින් ලොග් ප්‍රධාන දත්ත සමුදා සේවාදායකයේ ලියා ඇති විමසුම් ගබඩා කරයි) සහ එහි වහල් දත්ත සමුදා සේවාදායකයට ආදානය ලබා ගන්න. (මෙයින් අදහස් කරන්නේ ඔබේ ප්‍රධාන දත්ත ගබඩාවට කිසිසේත් බලපාන්නේ නැති බවයි)

ශුභාරංචිය නම්, එය ඔබගේ MySQL සේවාදායකයට ඕනෑවට වඩා බලපාන්නේ නැති නිසා ඔබ අක්‍රීය හෝ මන්දගාමී විමසුම් ප්‍රතිචාර නොදකිනු ඇත. අපි එය 10Gb දත්ත සමුදායන් සඳහා භාවිතා කරන අතර එය කිසිදු අක්‍රියතාවයකින් තොරව ආකර්ශනීය ලෙස ක්‍රියා කරයි.

එකම යන්ත්‍රයේ MySQL ප්‍රතිවර්තනය


එය මට ප්‍රයෝජනවත් වන අතර, මම හිතන්නේ එය ටිකක් අධික ලෙස මරණයට පත් විය හැකිය. මට දැනට එම මට්ටමේ උපස්ථයක් අවශ්‍ය නොවේ, නමුත් යෙදුමේ අවශ්‍යතා වෙනස් වුවහොත් මම මෙය මතකයේ තබා ගනිමි.
පැට්‍රික්

5
ප්‍රධාන ඩීබී වෙතින් උපස්ථයේ IO භාරය ඉවත් කිරීම සඳහා අනුරුවක් උපස්ථ කිරීම සඳහා +1, සහ එක් වැදගත් අවවාදයක් සමඟ අගුලු දැමීම සම්බන්ධ ගැටළු අවම කිරීම: දාසයා මත ඔබේ මෙහෙයුම් වලදී “එකම යන්ත්‍රයේ අනුරුව” විකල්පය සමඟ ප්‍රවේශම් වන්න. IO කලාප පළල සඳහා ස්වාමියා සමඟ තරඟ කළ හැකිය - මෙම ගැටළුව අවම කිරීම සඳහා දාසයාගේ දත්ත ගොනු ස්වාමියාට වඩා වෙනස් ධාවකයක් / අරාවක් ඇති බවට වග බලා ගන්න.
ඩේවිඩ් ස්පිලට්

1
ඩේවිඩ් ස්ප්ලෙට්ගේ විවරණය පිළිබඳ ඩිටෝ. මගේ වෙබ් සත්කාරක සේවායෝජකයා සඳහා වහලුන් මත mysqldump උපස්ථ සමඟ මාස්ටර් / වහලුන් දුසිම් ගණනක් සැකසීම සහ නඩත්තු කිරීම. +1 මගෙන්.
RolandoMySQLDBA

19

සැලැස්ම A: පර්කෝනා වෙතින් එක්ස්ට්‍රාබැක්අප් ද බලන්න. මෙය සැලකිය යුතු අගුලු දැමීමකින් තොරව InnoDB හි මාර්ගගත උපස්ථයකට ඉඩ දෙයි.

සැලැස්ම B: වහලෙකු නැවැත්විය හැකි අතර, ඔබට ඕනෑම ආකාරයකින් ස්ථිර උපස්ථයක් ලබා ගත හැකිය (ලිපිගොනු පිටපත් කිරීම, mysqldump, xtrabackup, ආදිය)

සැලැස්ම සී: එල්වීඑම් ස්නැප්ෂොට්. සමහර ගුප්ත සැකසුම් වලින් පසුව, දත්ත සමුදායේ ප්‍රමාණය නොසලකා උපස්ථයක් සඳහා වන වේලාව විනාඩියකට වඩා අඩුය. ඔබ mysqld නවත්වන්න, ස්නැප්ෂොට් කරන්න, mysqld නැවත අරඹන්න, පසුව Snapshot පිටපත් කරන්න. අවසාන පියවරට බොහෝ කාලයක් ගතවනු ඇත, නමුත් MySQL පහත් නොවේ.

සැලැස්ම D: වහලෙකුගේ ඡායාරූපයක් - අක්‍රීය කාලය ශුන්‍යයි.


2
සැලසුම් හතරටම හූරා. මට දිය හැක්කේ පිළිතුරකට +0.25 ක් පමණි !!! +1 (4 x 0.25)
RolandoMySQLDBA

15

පළමුවෙන් පරිපාලක කරුණු කිහිපයක්: ඔබ සම්බන්ධ වන්නේ අඩිපාරක් කිරීමටද? නැතිනම් ඔබ මිය ගොස් තිබේද? Ssh නම්, කොම්කාස්ට් බිඳවැටීමෙන් පසු ඔබට නැවත ආරම්භ කළ හැකි වන පරිදි තිරය භාවිතා කිරීමට වග බලා ගන්න . Ftp නම්, යැවීමට පෙර ඔබ එය / තාර සම්පීඩනය කර ඇති බවට වග බලා ගන්න.

--Opt පරාමිතිය හෝ --quick ද උත්සාහ කරන්න

--opt ඩම්ප් සහ රීලෝඩ් මෙහෙයුම් වඩාත් කාර්යක්ෂම කිරීම සඳහා මෙම විකල්පය අතිරේක විකල්ප සමූහයක් සක්‍රිය කරයි. නිශ්චිතවම, එය --add-drop-table, --add-lock, --all, --quick, --extended-insert, --lock-table, සහ --disable-key විකල්ප එකට භාවිතා කිරීමට සමාන වේ. මෙම විකල්පය මඟින් ප්‍රතිදානය අතේ ගෙන යා හැකි සහ වෙනත් දත්ත සමුදා පද්ධති තේරුම් ගැනීමට ඇති ඉඩකඩ අඩු කරයි.

--quick මෙම විකල්පය mysqldump හට සේවාදායකයෙන් එක් එක් පේළිය කියවන විට ඩම්ප් ප්‍රතිදානය ලිවීමට පවසන අතර එය විශාල වගු සඳහා ප්‍රයෝජනවත් විය හැකිය. පෙරනිමියෙන්, ප්‍රතිදානය ලිවීමට පෙර mysqldump වගුවක සිට මතකයට සියලු පේළි කියවයි; විශාල වගු සඳහා, මේ සඳහා විශාල මතක ප්‍රමාණයක් අවශ්‍ය වන අතර, සමහර විට ඩම්ප් අසමත් වීමට ඉඩ ඇත.


1
--Opt අවසානයේ ප්‍රතිදානය ලබා ගන්නා ගොනුවේ ප්‍රමාණය වැඩි නොකරන්නේද?
ටෝබි

එය සමහරක් එකතු කරනු ඇත - මම අදහස් කළේ --quick එකතු කිරීම ඔහුගේ ගැටලුවට වැඩි පිළිතුරක් .... දැන් සංස්කරණය කිරීම. ස්තූතියි!
ඩේවිඩ් හෝල්

තිරය ​​සඳහා +1, මෙම ගැටළුව මුළුමනින්ම වළක්වයි
ගයස්

1
--opt පෙරනිමියෙන් ක්‍රියාත්මක වේ.
ජෝර්දාන්

1
Ord ජෝර්දාන් මේ අනුව --quick, --opt
Thanh Trung

5

විශාල දත්ත සමුදායන් බැහැර කිරීමේදී මට කල් ඉකුත් වීමේ ගැටළු ඇති විය. Db හි සෑම වගුවක් සඳහාම තනි විධානයන් යවා මෙවැනි ගොනුවකට සදාකාලිකවම එකතු කිරීමෙන් මම අවසාන වශයෙන් විසඳා ගත්තෙමි:

TABLES=`mysql -u $USER -p$PWD -Bse 'show tables' $DB`
for TABLE in $TABLES
do
    mysqldump -u $USER -p$PWD $DB $TABLE >> dump.sql
done

5
මෙය "නොගැලපෙන" උපස්ථයක් ලෙස සැලකේ, ප්‍රතිෂ් restore ාපනය කිරීමෙන් පසු ඔබට එක් වගුවක දත්ත තවත් වගුවකට සිතියම් ගත කළ හැකි නමුත් නොපවතී.
මෝගන් ටෝකර්

3

මම හිතන්නේ ප්‍රශ්නය වන්නේ mysqldump විසින් නිර්මාණය කරන ලද ඩම්ප් ලිපිගොනු වලින් වේගයෙන් ප්‍රතිස්ථාපනය කරන්නේ කෙසේද යන්න මිස වෙනත් උපස්ථ විසඳුමක් නොවේ.

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

මෙය ඔප්පු කරන ලද, වේගවත්, පාහේ සමාන්තර තාක්‍ෂණයකි, නමුත් 100G විශ්වාස නැත, 500G හෝ ඊට වැඩි විශාල ඩම්ප් වලින් යථා තත්වයට පත් වීමට කොපමණ කාලයක් ගතවේද යන්න. නමුත් මගේ නිහතමානී මතය අනුව ඔබට සමාන්තර යමක් අවශ්‍යයි. උදාහරණයක් සඳහා පහත සබැඳිය පරීක්ෂා කරන්න.

[MySQL සඳහා SQL ඩම්ප් (mysqldump) වෙතින් වේගවත්, සමාන්තරව ප්‍රතිස්ථාපනය කිරීම] [1]

http://geeksww.com/tutorials/database_management_systems/mysql/tips_and_tricks/fast_parallel_restore_from_sql_dumps_mysqldump_for_mysql.php

"MySQL සඳහා SQL ඩම්ප් (mysqldump) වෙතින් වේගවත්, සමාන්තරව ප්‍රතිස්ථාපනය කරන්න"


2
මෙය වෙනත් ප්‍රශ්නයකට ඔබ දුන් පිළිතුරේ නිශ්චිත පිටපතකි . මෙම විශේෂිත ප්‍රශ්නය සඳහා එය තව ටිකක් අභිරුචිකරණය කිරීමට ඔබට අවශ්‍ය විය හැකිය.
පෝල් වයිට් 9

ප්‍රශ්නය විශේෂයෙන් යථා තත්වයට පත් කරන්නේ කෙසේද යන්න ගැන විශේෂයෙන් සඳහන් නොවේ.
andrew lorien
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.