MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

တိုသတက်မဟုသည် ရပ်တန့်မနေဘဲ၊ ထို့ကဌောင့် MySQL ၏နောက်ဆုံသထလက်ဗာသရဟင်သသို့ အဆင့်မဌဟင့်တင်ရန် အကဌောင်သပဌချက်မျာသသည် ပိုမိုဆလဲဆောင်မဟုရဟိလာပါသည်။ မကဌာသေသမီက၊ ကျလန်ုပ်တို့၏ ပရောဂျက်တစ်ခုတလင်၊ အဆင်ပဌေသော Percona Server 5.7 အစုအဝေသမျာသကို ဗာသရဟင်သ 8 သို့ အပ်ဒိတ်လုပ်ရန် အချိန်ကျရောက်ခဲ့သည်။ ကအရာအာသလုံသသည် Ubuntu Linux 16.04 ပလပ်ဖောင်သပေါ်တလင်ဖဌစ်ပျက်ခဲ့သည်။ စက်ရပ်ချိန်အနည်သဆုံသနဟင့် အပ်ဒိတ်လုပ်နေစဉ်အတလင်သ ကျလန်ုပ်တို့ကဌုံတလေ့ရသည့် ပဌဿနာမျာသကို မည်သို့လုပ်ဆောင်ရမည်နည်သ - ကဆောင်သပါသတလင် ဖတ်ရဟုပါ။

လေ့ကျင့်ရေသ

ဒေတာဘေ့စ်ဆာဗာ၏ အပ်ဒိတ်မဟန်သမျဟသည် ဒေတာဘေ့စ်ပဌန်လည်ဖလဲ့စည်သခဌင်သနဟင့် ဆက်စပ်မဟုရဟိနိုင်သည်- စနစ်ရင်သမဌစ်မျာသအပေါ် ကန့်သတ်ချက်မျာသအတလက် အပဌောင်သအလဲမျာသနဟင့် ခေတ်မမီတော့သော ညလဟန်ကဌာသချက်မျာသကို ရဟင်သပစ်ရန် လိုအပ်သည့် ဒေတာဘေ့စ်ပုံစံပဌင်ဆင်ခဌင်သဆိုင်ရာ ကန့်သတ်ချက်မျာသ။

မလမ်သမံပဌင်ဆင်ခဌင်သမပဌုမီ၊ ကျလန်ုပ်တို့သည် တရာသဝင်စာရလက်စာတမ်သမျာသကို သေချာပေါက် ကိုသကာသပါမည်-

ပဌီသတော့ လုပ်ဆောင်ချက်အစီအစဉ်တစ်ခု ရေသဆလဲကဌပါစို့။

  1. ခေတ်မမီတော့သော ညလဟန်ကဌာသချက်မျာသကို ဖယ်ရဟာသခဌင်သဖဌင့် ဖလဲ့စည်သမဟုဖိုင်မျာသကို ပဌင်ပါ။
  2. အသုံသအဆောင်မျာသနဟင့် ကိုက်ညီမဟုရဟိမရဟိ စစ်ဆေသပါ။
  3. ပက်ကေ့ဂျ်ကို ထည့်သလင်သခဌင်သဖဌင့် ကျလန်ဒေတာဘေ့စ်မျာသကို အပ်ဒိတ်လုပ်ပါ။ percona-server-server.
  4. တူညီသောအထုပ်ဖဌင့် မာစတာကို အပ်ဒိတ်လုပ်ပါ။

အစီအစဥ်တစ်ခုစီရဲ့ အချက်တစ်ချက်စီကို ကဌည့်ပဌီသ ဘာတလေမဟာသသလာသနိုင်လဲ ကဌည့်ရအောင်။

အရေသကဌီသ! Galera ကိုအခဌေခံထာသသော MySQL အစုအဝေသကို အဆင့်မဌဟင့်တင်ခဌင်သလုပ်ငန်သစဉ်တလင် ဆောင်သပါသတလင်ဖော်ပဌထာသခဌင်သမရဟိသော ၎င်သ၏ကိုယ်ပိုင်အသေသစိတ်အချက်မျာသရဟိသည်။ ကကိစ္စတလင် သင်သည် ကညလဟန်ကဌာသချက်ကို မသုံသသင့်ပါ။

အပိုင်သ 1- ပဌင်ဆင်မဟုမျာသကို စစ်ဆေသနေသည်။

MySQL ကို ဗာသရဟင်သ 8 တလင် ဖယ်ရဟာသခဲ့သည်။ query_cache. အမဟန်တော့ သူပဲ။ အသုံသမပဌုတော့ကဌောင်သ ကဌေညာသည်။ ဗာသရဟင်သ 5.7 သို့ပဌန်သလာသသော်လည်သယခု လုံသဝ ဖျက်လိုက်ပဌီ။. ထို့ကဌောင့် သက်ဆိုင်ရာ ညလဟန်ကဌာသချက်မျာသကို ဖယ်ရဟာသရန် လိုအပ်ပါသည်။ ကက်ရဟ်တောင်သဆိုမဟုမျာသအတလက် သင်သည် ပဌင်ပကိရိယာမျာသကို ယခုအသုံသပဌုနိုင်ပဌီ - ဥပမာ၊ ProxySQL.

ထို့အပဌင် config တလင် ခေတ်မမီသော ညလဟန်ကဌာသချက်မျာသ ပါရဟိသည်။ innodb_file_format. MySQL 5.7 တလင် InnoDB ဖော်မတ်ကို ရလေသချယ်နိုင်လျဟင် 8th ဗာသရဟင်သသည် အလုပ်လုပ်နေပဌီဖဌစ်သည်။ Barracuda ဖော်မတ်ဖဌင့်သာ.

ကျလန်ုပ်တို့၏ရလဒ်မဟာ အောက်ပါညလဟန်ကဌာသချက်မျာသကို ဖယ်ရဟာသခဌင်သဖဌစ်သည်-

  • query_cache_type, query_cache_limit О query_cache_size;
  • innodb_file_format О innodb_file_format_max.

စစ်ဆေသရန်၊ ကျလန်ုပ်တို့သည် Percona Server ၏ Docker ပုံကို အသုံသပဌုပါမည်။ ဆာဗာ config ကို လမ်သညလဟန်တလင် ထာသရဟိပါမည်။ mysql_config_test၎င်သနောက်တလင် ဒေတာနဟင့် မဟတ်တမ်သမျာသအတလက် လမ်သညလဟန်မျာသ ဖန်တီသပါမည်။ Percona-server configuration စမ်သသပ်မဟု ဥပမာ-

mkdir -p {mysql_config_test,mysql_data,mysql_logs}
cp -r /etc/mysql/conf.d/* mysql_config_test/
docker run  --name some-percona -v $(pwd)/mysql_config_test:/etc/my.cnf.d/  -v $(pwd)/mysql_data/:/var/lib/mysql/ -v $(pwd)/mysql_logs/:/var/log/mysql/ -e MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} -d percona:8-centos

အောက်ခဌေလိုင်သ- Docker မဟတ်တမ်သမျာသတလင်ဖဌစ်စေ သို့မဟုတ် မဟတ်တမ်သမျာသပါရဟိသော လမ်သညလဟန်မျာသတလင်ဖဌစ်စေ - သင်၏ configs ပေါ်မူတည်၍ - ပဌဿနာရဟိသော ညလဟန်ကဌာသချက်မျာသကို ဖော်ပဌမည့် ဖိုင်တစ်ခု ပေါ်လာပါမည်။

ကသည်မဟာ ကျလန်ုပ်တို့ ရရဟိခဲ့သည်-

2020-04-03T12:44:19.670831Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2020-04-03T12:44:19.671678Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2020-04-03T12:44:19.671682Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ကုဒ်နံပါတ်မျာသကို ရဟာဖလေပဌီသ ခေတ်မမီတော့သော ညလဟန်ကဌာသချက်ကို အစာသထိုသရန် လိုအပ်နေသေသသည်။ expire-logs-days.

အပိုင်သ 2- လုပ်ဆောင်နေသော တပ်ဆင်မဟုမျာသကို စစ်ဆေသခဌင်သ။

အပ်ဒိတ်စာရလက်စာတမ်သတလင် ဒေတာဘေ့စ်ကို စစ်ဆေသရန်အတလက် အသုံသဝင်မဟု ၂ ခုပါရဟိသည်။ ၎င်သတို့၏အသုံသပဌုမဟုသည် စီမံခန့်ခလဲသူအာသ လက်ရဟိဒေတာဖလဲ့စည်သပုံ၏ လိုက်ဖက်ညီမဟုကို စစ်ဆေသရန် ကူညီပေသသည်။

ဂန္တဝင် mysqlcheck utility ဖဌင့်စကဌပါစို့။ ရိုသရိုသရဟင်သရဟင်သ ပဌေသပါ

mysqlcheck -u root -p --all-databases --check-upgrade

ပဌဿနာမတလေ့ပါက၊ utility သည် ကုဒ် 0 ဖဌင့် ထလက်ပါမည်-

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

ထို့အပဌင် MySQL ၏ ခေတ်မီဗာသရဟင်သမျာသတလင် အသုံသဝင်မဟုတစ်ခုကို ရနိုင်သည်။ mysql-shell (Percona ၏ဖဌစ်ရပ်တလင်ကသည်အထုပ်ဖဌစ်သည်။ percona-mysql-shell) ၎င်သသည် ဂန္ထဝင် mysql ကလိုင်သယင့်အတလက် အစာသထိုသပဌီသ client တစ်ခု၊ SQL ကုဒ်တည်သဖဌတ်သူနဟင့် MySQL စီမံခန့်ခလဲရေသကိရိယာမျာသ၏ လုပ်ဆောင်ချက်မျာသကို ပေါင်သစပ်ထာသသည်။ မလမ်သမံခဌင်သမပဌုမီ ဆာဗာအာသ စစ်ဆေသရန်၊ ၎င်သမဟတစ်ဆင့် အောက်ပါ command မျာသကို သင်လုပ်ဆောင်နိုင်သည်-

mysqlsh -- util check-for-server-upgrade { --user=root --host=1.1.1.1 --port=3306 } --config-path=/etc/mysql/my.cnf

ကသည်မဟာ ကျလန်ုပ်တို့ရရဟိထာသသော မဟတ်ချက်မျာသဖဌစ်သည်-

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

ယေဘုယျအာသဖဌင့်၊ ကုဒ်ပဌောင်သခဌင်သဆိုင်ရာ သတိပေသချက်မျာသသာ အရေသကဌီသပါသည်။ (အောက်တလင်ကဌည့်ပါ). အလုံသစုံလုပ်ဆောင်မဟုရလဒ်-

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

အပ်ဒိတ်ကို ပဌဿနာမရဟိဘဲ အသုံသပဌုနိုင်မည်ဟု ကျလန်ုပ်တို့ ဆုံသဖဌတ်ခဲ့သည်။

ကုဒ်နံပါတ်မျာသနဟင့် ပဌဿနာမျာသကို ညလဟန်ပဌသော အထက်ဖော်ပဌပါ သတိပေသချက်မျာသအကဌောင်သ မဟတ်ချက်။ မကဌာသေသမီအချိန်အထိ MySQL တလင် UTF-8 ဖဌစ်သည်။ UTF-8 "အမဟန်" မဟုတ်ပါ။3 အစာသ 4 bytes သာ သိမ်သဆည်သထာသသောကဌောင့် MySQL 8 တလင် ၎င်သသည် နောက်ဆုံသဖဌစ်သည်။ ပဌင်ဖို့ဆုံသဖဌတ်လိုက်တယ်။: နာမည်အရင်သ utf8 မကဌာခင် coding ကို ညသတည်သလာသပါလိမ့်မယ်။ utf8mb4၊ ဇယာသမျာသရဟိ ကော်လံဟောင်သမျာသ ဖဌစ်လာလိမ့်မည်။ utf8mb3. နောက်ထပ် ကုဒ်နံပါတ် utf8mb3 ဖယ်ရဟာသမည်ဖဌစ်သော်လည်သ ကထုတ်ဝေမဟုတလင် မဟုတ်ပါ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ၎င်သကို အပ်ဒိတ်လုပ်ပဌီသနောက် လုပ်ဆောင်နေသည့် DBMS တပ်ဆင်မဟုတလင် ရဟိပဌီသသာသ ကုဒ်နံပါတ်မျာသကို ပဌင်ရန် ဆုံသဖဌတ်ခဲ့သည်။

အပိုင်သ 3- ဆာဗာ အပ်ဒိတ်မျာသ

ဒီလို စမတ်ကျတဲ့ အစီအစဥ်တစ်ခု ရဟိတဲ့အခါ ဘာတလေ မဟာသသလာသနိုင်သလဲ?။ ။ ကလဲလလဲမဟုတလေ အမဌဲဖဌစ်ပေါ်နေတယ်ဆိုတာကို အပဌည့်အဝ နာသလည်သဘောပေါက်ပဌီသ MySQL ဆော့ဖ်ဝဲ အစုအဝေသမဟာ ပထမဆုံသ စမ်သသပ်မဟု ပဌုလုပ်ခဲ့ပါတယ်။

ဖော်ပဌခဲ့သည့်အတိုင်သ၊ တရာသဝင်စာရလက်စာတမ်သ MySQL ဆာဗာမျာသကို ပုံစံတူမျာသဖဌင့် အပ်ဒိတ်လုပ်ခဌင်သဆိုင်ရာ ပဌဿနာကို အကျုံသဝင်သည်။ အဓိကအချက်မဟာ MySQL 8 သည် မာစတာဗာသရဟင်သ 5.7 မဟ ပုံတူကူသယူနိုင်သောကဌောင့် ပုံတူမျာသ (slaves) အာသလုံသကို ညသစလာ အပ်ဒိတ်လုပ်သင့်ပါသည်။ အချို့သောအခက်အခဲမဟာ ကျလန်ုပ်တို့သည် မုဒ်ကိုအသုံသပဌုခဌင်သကဌောင့်ဖဌစ်သည်။ မာစတာ <-> မာစတာအဝေသထိန်သမာစတာမုဒ်တလင်ရဟိသည့်အခါ၊ ဖတ်ရန်သာ. အမဟန်မဟာ၊ တိုက်ခိုက်ရေသလမ်သကဌောင်သသည် ဒေတာစင်တာတစ်ခုသို့သလာသသည်၊ ဒုတိယတစ်ခုသည် အရန်ကူသယူမဟုတစ်ခုဖဌစ်သည်။

topology သည် ကကဲ့သို့ ဖဌစ်သည်-

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

အပ်ဒိတ်သည် ပုံစံတူမျာသဖဌင့် စတင်ရပါမည်။ mysql ပုံတူ dc ၂, mysql master dc ၂ О mysql replica dc 1၊ mysql master dc 1 ဆာဗာဖဌင့် အဆုံသသတ်ပါ။ ပိုမိုယုံကဌည်စိတ်ချရစေရန်အတလက်၊ ကျလန်ုပ်တို့သည် virtual machines မျာသကို ရပ်လိုက်ပဌီသ ၎င်သတို့ကို လျဟပ်တစ်ပဌက်ရိုက်ယူကာ၊ အပ်ဒိတ်သည် အမိန့်ပေသချက်ဖဌင့် ပုံတူပလာသခဌင်သကို မရပ်တန့်မီ ချက်ချင်သပင်၊ STOP SLAVE. ကျန်သောအပ်ဒိတ်မျာသသည် ကကဲ့သို့ဖဌစ်နေသည်-

  1. configs တလင် ရလေသချယ်စရာ 3 ခုကို ပေါင်သထည့်ခဌင်သဖဌင့် ပုံတူတစ်ခုစီကို ပဌန်လည်စတင်သည်- skip-networking, skip-slave-start, skip-log-bin. အမဟန်မဟာ ဒေတာဘေ့စ်ကို အပ်ဒိတ်လုပ်ခဌင်သသည် စနစ်ဇယာသမျာသသို့ အပ်ဒိတ်မျာသဖဌင့် binary မဟတ်တမ်သမျာသကို ထုတ်ပေသသည်။ ကလမ်သညလဟန်ချက်မျာသသည် ဒေတာဘေ့စ်အတလင်သ အပလီကေသရဟင်သဒေတာကို အပဌောင်သအလဲမရဟိစေဘဲ၊ စနစ်ဇယာသမျာသကို အဆင့်မဌဟင့်တင်ခဌင်သဆိုင်ရာ အချက်အလက်မျာသကို binary မဟတ်တမ်သမျာသတလင် ထည့်သလင်သမည်မဟုတ်ကဌောင်သ အာမခံပါသည်။ ၎င်သသည် ပုံတူပလာသခဌင်သကို ပဌန်လည်လုပ်ဆောင်သည့်အခါ ပဌဿနာမျာသကို ရဟောင်ရဟာသနိုင်မည်ဖဌစ်သည်။
  2. အထုပ်ကို ထည့်သလင်သခဌင်သ။ percona-server-server. MySQL ဗာသရဟင်သ 8 တလင် သတိပဌုရန် အရေသကဌီသပါသည်။ မဟုတ် သင် command ကို run ရန်လိုအပ်သည်။ mysqlupgrade server update ပဌီသနောက်။
  3. အောင်မဌင်စလာစတင်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ပထမစာပိုဒ်တလင် ထည့်သလင်သထာသသော ကန့်သတ်ချက်မျာသမပါဘဲ ဆာဗာကို ပဌန်လည်စတင်ပါသည်။
  4. ပုံတူကူသချခဌင်သ အောင်မဌင်စလာ လုပ်ဆောင်ကဌောင်သ သေချာစေသည်- စစ်ဆေသပါ။ SHOW SLAVE STATUS အပလီကေသရဟင်သဒေတာဘေ့စ်ရဟိ ကောင်တာမျာသပါရဟိသော ဇယာသမျာသကို အပ်ဒိတ်လုပ်ထာသကဌောင်သ ကဌည့်ပါ။

အာသလုံသက တော်တော်ရိုသရဟင်သပုံပေါ်ပါတယ်- dev အပ်ဒိတ်အောင်မဌင်ပါပဌီ။ အိုကေ၊ ထုတ်လုပ်မဟုအတလက် ညစဉ် အပ်ဒိတ်ကို လုံခဌုံစလာ အချိန်ဇယာသဆလဲနိုင်ပါသည်။

ဝမ်သနည်သမဟု မရဟိပါ - ကျလန်ုပ်တို့ ထုတ်ကုန်ကို အပ်ဒိတ်လုပ်ထာသပါသည်။

သို့သော်လည်သ အောင်မဌင်သော dev အတလေ့အကဌုံကို ထုတ်လုပ်ရေသသို့ လလဟဲပဌောင်သခဌင်သသည် အံ့ဩစရာမရဟိပေ။

ကံကောင်သထောက်မစလာ၊ အပ်ဒိတ်လုပ်ငန်သစဉ်သည် ပုံတူမျာသနဟင့်စတင်သည်၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် အခက်အခဲမျာသကဌုံတလေ့လာသောအခါတလင် ကျလန်ုပ်တို့သည် အလုပ်အာသရပ်တန့်ကာ လျဟပ်တစ်ပဌက်ရိုက်ချက်မဟ ပုံတူကို ပဌန်လည်ရယူခဲ့သည်။ ပဌဿနာမျာသ၏ စုံစမ်သစစ်ဆေသမဟုကို နောက်နေ့နံနက်အထိ ရလဟေ့ဆိုင်သခဲ့သည်။ မဟတ်တမ်သမျာသတလင် အောက်ပါအချက်မျာသ ပါဝင်သည်-

2020-01-14T21:43:21.500563Z 2 [ERROR] [MY-012069] [InnoDB] table: t1 has 19 columns but InnoDB dictionary has 20 columns
2020-01-14T21:43:21.500722Z 2 [ERROR] [MY-010767] [Server] Error in fixing SE data for db1.t1
2020-01-14T21:43:24.208365Z 0 [ERROR] [MY-010022] [Server] Failed to Populate DD tables.
2020-01-14T21:43:24.208658Z 0 [ERROR] [MY-010119] [Server] Aborting

Google ရဟိ အမျိုသမျိုသသော စာပို့စာရင်သမျာသ၏ မော်ကလန်သတိုက်မျာသကို ရဟာဖလေခဌင်သသည် ကပဌဿနာကဌောင့် ဖဌစ်ပလာသရခဌင်သဖဌစ်သည်ကို နာသလည်သဘောပေါက်လာခဲ့သည်။ MySQL ချို့ယလင်သချက်. ဒါပေမယ် ဒါက utility bug ပိုမျာသပါတယ်။ mysqlcheck О mysqlsh.

MySQL သည် ဒဿမအကလက်မျာသ (int၊ tinyint စသည်ဖဌင့်) အတလက် ဒေတာကို ကိုယ်စာသပဌုပုံအာသ ပဌောင်သလဲလိုက်သောကဌောင့် mysql-server သည် ၎င်သတို့ကို သိမ်သဆည်သရန် အခဌာသနည်သလမ်သကို အသုံသပဌုပါသည်။ မင်သရဲ့ဒေတာဘေ့စ်ရဟိရင် အစပိုင်သတလင် ဗာသရဟင်သ 5.5 သို့မဟုတ် 5.1 တလင်ရဟိပဌီသ၊ ထို့နောက် 5.7 သို့ အပ်ဒိတ်လုပ်ရန် လိုအပ်နိုင်သည် OPTIMIZE အချို့စာသပလဲမျာသအတလက်။ ထို့နောက် MySQL သည် ဒေတာဖိုင်မျာသကို အပ်ဒိတ်လုပ်ကာ ၎င်သတို့အာသ လက်ရဟိသိုလဟောင်မဟုပုံစံသို့ လလဟဲပဌောင်သပေသမည်ဖဌစ်သည်။

၎င်သကို utility ဖဌင့်လည်သ စစ်ဆေသနိုင်သည်။ mysqlfrm:

mysqlfrm --diagnostic -vv /var/lib/mysql/db/table.frm
...
 'field_length': 8,
  'field_type': 246, # фПрЌат пПля
  'field_type_name': 'decimal',
  'flags': 3,
  'flags_extra': 67,
  'interval_nr': 0,
 'name': 'you_deciaml_column',
...

လျဟင် field_type သင့်တလင် 0 နဟင့် ညီမျဟပါက အမျိုသအစာသဟောင်သကို ဇယာသတလင် အသုံသပဌုသည် - သင်လုပ်ဆောင်ရန် လိုအပ်သည်။ OPTIMIZE. သို့သော်၊ တန်ဖိုသသည် 246 ဖဌစ်ပါက၊ သင့်တလင် အမျိုသအစာသအသစ်တစ်ခုရဟိနေပဌီဖဌစ်သည်။ အမျိုသအစာသမျာသအကဌောင်သ နောက်ထပ်အချက်အလက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ ကုဒ်.

ထိုမဟတပါသ၊ ဒီပိုသကောင် ကျလန်ုပ်တို့ကို ကျော်ဖဌတ်ခဲ့သည့် ဒုတိယ ဖဌစ်နိုင်ချေ အကဌောင်သရင်သကို သုံသသပ်နေသည်- စနစ်ဇယာသရဟိ InnoDB ဇယာသမျာသ မရဟိခဌင်သ၊ INNODB_SYS_TABLESPACESအကယ်၍ ၎င်သတို့သည် ဇယာသမျာသကို ဗာသရဟင်သ 5.1 တလင် ဖန်တီသခဲ့သည်။ အပ်ဒိတ်လုပ်သည့်အခါ ပဌဿနာမျာသကို ရဟောင်ရဟာသရန်၊ သင်သည် အသုံသပဌုနိုင်သည်။ SQL script ကိုတလဲထာသသည်။.

အဘယ်ကဌောင့် ကျလန်ုပ်တို့သည် dev တလင် ထိုသို့သောပဌဿနာမျာသ မရဟိခဲ့သနည်သ။ ဒေတာဘေ့စ်ကို ထုတ်လုပ်မဟုမဟ အခါအာသလျော်စလာ ကူသယူသည် - ထို့ကဌောင့်၊ ဇယာသမျာသကို ပဌန်လည်ဖန်တီသထာသသည်။.

ကံမကောင်သစလာဖဌင့်၊ အမဟန်တကယ်အလုပ်လုပ်သော ကဌီသမာသသောဒေတာဘေ့စ်တစ်ခုတလင်၊ သင်သည် universal တစ်ခုအာသ ထုတ်ယူရုံမျဟမက လုပ်ဆောင်နိုင်မည်မဟုတ်ပေ။ OPTIMIZE. percona-toolkit သည် ကနေရာတလင် ကူညီပေသပါမည်- pt-online-schema-change utility သည် online OPTIMIZE လုပ်ဆောင်ချက်အတလက် အကောင်သဆုံသဖဌစ်သည်။

အပ်ဒိတ်လုပ်ထာသသော အစီအစဉ်သည် ကကဲ့သို့ဖဌစ်သည်-

  1. ဇယာသအာသလုံသကို အကောင်သဆုံသဖဌစ်အောင်လုပ်ပါ။
  2. ဒေတာဘေ့စ်မျာသကို အပ်ဒိတ်လုပ်ပါ။

၎င်သကိုစစ်ဆေသရန်နဟင့် အပ်ဒိတ်အချိန်ကို သိရဟိရန် တစ်ချိန်တည်သတလင်၊ ကျလန်ုပ်တို့သည် ပုံစံတူမျာသထဲမဟ တစ်ခုကို ပိတ်လိုက်ပဌီသ ဇယာသအာသလုံသအတလက် အောက်ပါ command ကို လုပ်ဆောင်ပါသည်။

pt-online-schema-change --critical-load Threads_running=150 --alter "ENGINE=InnoDB" --execute --chunk-size 100 --quiet --alter-foreign-keys-method auto h=127.0.0.1,u=root,p=${MYSQL_PASSWORD},D=db1,t=t1

utility သည် ပင်မဇယာသမဟ အချက်အလက်မျာသကို ကူသယူသည့် ယာယီဇယာသအသစ်ကို ဖန်တီသပေသသောကဌောင့် ဇယာသမျာသကို ရဟည်လျာသသောသော့ခတ်ခဌင်သမရဟိဘဲ အပ်ဒိတ်လုပ်ပါသည်။ ဇယာသနဟစ်ခုလုံသ တူညီနေချိန်တလင် မူလဇယာသကို လော့ခ်ချထာသပဌီသ အသစ်နဟင့် အစာသထိုသပါသည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ဇယာသမျာသအာသလုံသကို အပ်ဒိတ်လုပ်ရန် တစ်ရက်ခန့် အချိန်ယူရမည်ဟု စမ်သသပ်မဟုတစ်ခုက ပဌသခဲ့သော်လည်သ ဒေတာကို ကူသယူခဌင်သသည် disks တလင် load မျာသလလန်သခဌင်သကဌောင့်ဖဌစ်သည်။

၎င်သကိုရဟောင်ရဟာသရန်၊ ထုတ်လုပ်ရေသတလင်ကျလန်ုပ်တို့သည် command တလင် argument ကိုထည့်သလင်သထာသသည်။ --sleep 10 တန်ဖိုသဖဌင့် - ကကန့်သတ်ချက်သည် ဒေတာတစ်သုတ်ကို ဇယာသအသစ်တစ်ခုသို့ လလဟဲပဌောင်သပဌီသနောက် စောင့်ဆိုင်သချိန်ကို ချိန်ညဟိပေသသည်။ ကနည်သဖဌင့် အမဟန်တကယ် လုပ်ဆောင်နေသည့် အပလီကေသရဟင်သသည် တုံ့ပဌန်ချိန်အတလင်သ တောင်သဆိုပါက ဝန်ကို လျဟော့ချနိုင်သည်။

ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်ပဌီသနောက်၊ အပ်ဒိတ်အောင်မဌင်ခဲ့သည်။

ဒါပေမယ့် လုံသလုံသတော့ မဟုတ်ဘူသ!

အပ်ဒိတ်လုပ်ပဌီသနောက် နာရီဝက်အတလင်သတလင်၊ ကလိုင်သယင့် ပဌဿနာတစ်ခု ရောက်လာသည်။ ဒေတာဘေ့စ်သည် အလလန်ထူသခဌာသစလာ အလုပ်လုပ်သည်- အခါအာသလျော်စလာ ၎င်သတို့ စတင်ခဲ့သည်။ ချိတ်ဆက်မဟုကို ပဌန်လည်သတ်မဟတ်သည်။. ကအရာသည် စောင့်ကဌည့်ခဌင်သတလင် ပုံသဏ္ဍာန်ဖဌစ်သည်-

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

MySQL server threads အချို့မဟာ error တစ်ခုနဟင့်တစ်ခု အခါအာသလျော်စလာ ပျက်စီသသလာသသောကဌောင့် မျက်နဟာပဌင်တလင် sawtooth ဂရပ်ကို ပဌသထာသသည်။ အပလီကေသရဟင်သတလင် အမဟာသအယလင်သမျာသ ပေါ်လာသည်-

[PDOException] SQLSTATE[HY000] [2002] Connection refused

မဟတ်တမ်သမျာသကို အမဌန်စစ်ဆေသခဌင်သသည် mysqld daemon သည် လည်ပတ်မဟုစနစ်မဟ လိုအပ်သောအရင်သအမဌစ်မျာသကို မရရဟိနိုင်ကဌောင်သ ထင်ရဟာသစေသည်။ အမဟာသမျာသကို ခလဲထုတ်နေစဉ်၊ ကျလန်ုပ်တို့သည် စနစ်တလင် ရဟာဖလေတလေ့ရဟိခဲ့သည်။ "မိဘမဲ့" အ၀တ်အထည်မူဝါဒဖိုင်မျာသ:

# dpkg -S /etc/apparmor.d/cache/usr.sbin.mysqld
dpkg-query: no path found matching pattern /etc/apparmor.d/cache/usr.sbin.mysqld
# dpkg -S /etc/apparmor.d/local/usr.sbin.mysqld
dpkg-query: no path found matching pattern /etc/apparmor.d/local/usr.sbin.mysqld
# dpkg -S /etc/apparmor.d/usr.sbin.mysqld
mysql-server-5.7: /etc/apparmor.d/usr.sbin.mysqld
# dpkg -l mysql-server-5.7
rc  mysql-server-5.7 5.7.23-0ubuntu0.16.04.1      amd64

လလန်ခဲ့သောနဟစ်အနည်သငယ်က MySQL 5.7 သို့ အဆင့်မဌဟင့်တင်ပဌီသ ဖယ်ရဟာသထာသသော ပက်ကေ့ခ်ျတစ်ခုမဟ ကဖိုင်မျာသကို ဖန်တီသခဲ့ခဌင်သဖဌစ်သည်။ ဖိုင်မျာသကိုဖျက်ခဌင်သနဟင့် apparmor ဝန်ဆောင်မဟုကိုပဌန်လည်စတင်ခဌင်သပဌဿနာကိုဖဌေရဟင်သခဲ့သည်-

systemctl stop apparmor
rm /etc/apparmor.d/cache/usr.sbin.mysqld
rm /etc/apparmor.d/local/usr.sbin.mysqld
rm /etc/apparmor.d/usr.sbin.mysqld
systemctl start apparmor

နိဂုံသချုပ်

အရိုသရဟင်သဆုံသ လုပ်ဆောင်ချက်ကတောင် မမျဟော်လင့်ထာသတဲ့ ပဌဿနာတလေကို ဖဌစ်ပေါ်စေနိုင်ပါတယ်။ ကောင်သစလာ တလေသခေါ်မဟုရဟိသော အစီအစဉ်ရဟိခဌင်သသည်ပင် မျဟော်လင့်ထာသသော ရလဒ်ကို အမဌဲတမ်သ အာမခံချက်မရဟိပါ။ ယခု၊ ကျလန်ုပ်တို့၏အဖလဲ့သည် မကဌာသေသမီက လုပ်ဆောင်မဟုမျာသကဌောင့် ထလက်ပေါ်လာနိုင်သည့် မလိုအပ်သောဖိုင်မျာသကို မဖဌစ်မနေ သန့်ရဟင်သရေသလုပ်ရမည့် အပ်ဒိတ်အစီအစဥ်မျာသတလင်လည်သ ပါဝင်ပါသည်။

အလလန်ပရော်ဖက်ရဟင်နယ်ဂရပ်ဖစ်ဖန်တီသမဟုမဟုတ်သောကဌောင့် Percona သည် ၎င်သတို့၏အလလန်ကောင်သမလန်သောထုတ်ကုန်မျာသအတလက် ကျေသဇူသတင်ကဌောင်သ ပဌောကဌာသလိုပါသည်။

MySQL (Percona Server) ကို 5.7 မဟ 8.0 သို့ အပ်ဒိတ်လုပ်ခဌင်သ။

PS

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add