ProHoster > Блог > Whakahaerenga > Te whakaora i nga raraunga mai i nga ripanga XtraDB kaore he konae hanganga ma te whakamahi i te paita-a-paita tātari o te konae ibd
Te whakaora i nga raraunga mai i nga ripanga XtraDB kaore he konae hanganga ma te whakamahi i te paita-a-paita tātari o te konae ibd
prehistory
I tupono kua whakaekea te tūmau e te huaketo ransomware, na te "aitua waimarie," i waiho tetahi waahanga o nga konae .ibd (nga konae raraunga raw o nga ripanga innodb) kaore i pa, engari i taua wa ka whakamunatia nga konae .fpm ( kōnae hanganga). I tenei take, ka taea te wehewehe .idb ki:
i raro i te whakahokinga mai ma nga taputapu paerewa me nga kaiarahi. Mo enei keehi, he pai rawa atu riro;
nga ripanga kua whakamunatia. Ko te nuinga he ripanga nui enei, mo te mea (ki taku mohio) kaore i nui te RAM o nga kaiwhaiwhai mo te whakamunatanga katoa;
Ana, nga ripanga kua whakamunatia e kore e taea te whakaora.
I taea te whakatau ko tehea waahanga nga ripanga ma te whakatuwhera noa i roto i tetahi ētita tuhinga i raro i te whakawaehere e hiahiatia ana (i taku keehi ko UTF8) me te maataki noa i te konae mo te waahi o nga mara tuhinga, hei tauira:
I tua atu, i te timatanga o te konae ka taea e koe te kite i te maha o nga paita 0, me nga huaketo e whakamahi ana i te poraka whakamunatanga algorithm (te mea noa) ka pa ki a raatau ano.
I roto i taku keehi, ka waiho e nga kaiwhaiwhai he aho 4-paita (1, 0, 0, 0) i te mutunga o ia konae whakamunatia, he mea ngawari te mahi. Hei rapu i nga konae kaore i pangia, he nui te tuhinga:
def opened(path):
files = os.listdir(path)
for f in files:
if os.path.isfile(path + f):
yield path + f
for full_path in opened("C:somepath"):
file = open(full_path, "rb")
last_string = ""
for line in file:
last_string = line
file.close()
if (last_string[len(last_string) -4:len(last_string)]) != (1, 0, 0, 0):
print(full_path)
No reira, ka kitea nga konae no te momo tuatahi. Ko te tuarua he maha nga mahi a-ringa, engari ko nga mea i kitea kua ranea. Ka pai nga mea katoa, engari me mohio koe hanganga tino tika a (o te akoranga) i ara ake tetahi keehi me mahi ahau me tetahi teepu huri haere. Karekau he tangata i maumahara mena i hurihia te momo mara, kua taapirihia he pou hou.
Ko Wilds City, kaore i taea te awhina i tenei keehi, na reira ka tuhia tenei tuhinga.
Haere ki te kaupapa
He hanganga tepu mai i nga marama 3 ki muri kaore i te rite ki te ahuatanga o naianei (tetahi mara pea, me etahi atu). Hanganga ripanga:
CREATE TABLE `table_1` (
`id` INT (11),
`date` DATETIME ,
`description` TEXT ,
`id_point` INT (11),
`id_user` INT (11),
`date_start` DATETIME ,
`date_finish` DATETIME ,
`photo` INT (1),
`id_client` INT (11),
`status` INT (1),
`lead__time` TIME ,
`sendstatus` TINYINT (4)
);
i tenei keehi, me tango e koe:
id_point int(11);
id_user int(11);
date_start TE RANGI;
date_finish TE TIME.
Mo te whakaora, ka whakamahia he wetewete paita-a-paita o te konae .ibd, katahi ka huri ki te ahua ka taea te panui. I te mea ki te rapu i nga mea e hiahiatia ana, me tātari noa nga momo raraunga penei i te int me te wa raraunga, ma te tuhinga anake e whakaatu, engari i etahi wa ka korero ano matou ki etahi atu momo raraunga, ka awhina i etahi atu aitua rite.
Raruraru 1: ko nga mara me nga momo DATETIME me TEXT he uara NULL, a ka pekehia noa i roto i te konae, na tenei, kaore i taea te whakatau i te hanganga hei whakahoki mai i taku keehi. I roto i nga pou hou, he null te uara taunoa, a ka ngaro tetahi waahanga o te tauwhitinga na te tautuhinga innodb_flush_log_at_trx_commit = 0, no reira me whakapau te wa ki te whakatau i te hanganga.
Raruraru 2: me mahara ko nga rarangi kua mukua ma te DELETE ka noho katoa ki roto i te konae ibd, engari me te ALTER TABLE e kore e whakahoutia to raatau hanganga. Ko te mutunga, ka rereke te hanganga raraunga mai i te timatanga o te konae ki tona mutunga. Mena ka whakamahi koe i te OPTIMIZE TABLE, kare pea koe e pa ki tenei raru.
Kia tupato, ko te putanga DBMS e pa ana ki te ahua o te penapena raraunga, a ka kore pea tenei tauira e mahi mo etahi atu waahanga nui. I taku keehi, i whakamahia te putanga matapihi o mariadb 10.1.24. Ano, ahakoa i roto i te mariadb ka mahi koe me nga tepu InnoDB, he pono XtraDB, ka whakakore i te whakamahinga o te tikanga me InnoDB mysql.
tātari kōnae
I roto i te python, momo raraunga paita() he whakaatu raraunga Waehereao hei whakakapi i te huinga tau. Ahakoa ka taea e koe te tiro i te konae i roto i tenei puka, mo te pai ka taea e koe te huri i nga paita ki te ahua tau ma te huri i te huinga paita ki te rarangi auau (rarangi(example_byte_array)). Ahakoa he aha, he pai nga tikanga e rua mo te tātari.
I muri i te tirotiro i nga konae ibd maha, ka kitea e koe enei e whai ake nei:
I tua atu, ki te wehewehe koe i te konae ki enei kupu matua, ka whiwhi koe i te nuinga o nga poraka o nga raraunga. Ka whakamahia e matou te infimum hei wehewehe.
table = table.split("infimum".encode())
He tirohanga whakamere: mo nga ripanga he iti nga raraunga, kei waenga i te infimum me te teitei he tohu tohu ki te maha o nga rarangi o te poraka.
— tepu whakamatautau me te rarangi tuatahi
- tepu whakamatautau me nga rarangi e 2
Ka taea te pekehia te ripanga huinga haupae[0]. I muri i te tirotiro, kaore i kitea e au nga raraunga ripanga mata. Ko te nuinga, ka whakamahia tenei poraka ki te penapena i nga tohu me nga taviri.
Ka timata mai i te ripanga[1] me te whakamaoritanga ki te rarangi tau, kua kite koe i etahi tauira, ara:
He uara int enei e rongoa ana ki te aho. Ko te paita tuatahi ka tohu mena he pai, he kino ranei te tau. Ki taku take, he pai nga nama katoa. Mai i nga toenga 3 paita, ka taea e koe te whakatau i te tau ma te whakamahi i te mahi e whai ake nei. Hōtuhi:
def find_int(val: str): # example '128, 1, 2, 3'
val = [int(v) for v in val.split(", ")]
result_int = val[1]*256**2 + val[2]*256*1 + val[3]
return result_int
Hei tauira, 128, 0, 0, 1 = 1ranei 128, 0, 75, 108 = 19308.
He matua matua te ripanga me te piki-aunoa, ka kitea hoki i konei
I te whakatairite i nga raraunga mai i nga ripanga whakamatautau, ka kitea ko te ahanoa DATETIME he 5 paita ka timata ki te 153 (te nuinga pea e tohu ana i nga waahi o ia tau). I te mea ko te awhe DATTIME ko '1000-01-01' ki te '9999-12-31', ki taku whakaaro ka rereke pea te maha o nga paita, engari i taku keehi, ka taka nga raraunga i te waa mai i te 2016 ki te 2019, no reira ka whakaaro tatou e 5 paita nui.
Hei whakatau i te wa kaore he hēkona, ka tuhia nga mahi e whai ake nei. Hōtuhi:
E tino mohio ana ahau ki te whakapaua e koe te nui o te wa, ka taea te whakatika i tenei pohehe.
Panuku, he taumahi e whakahoki mai ai i tetahi ahanoa wa mai i te aho. Hōtuhi:
def find_data_time(val:str):
val = [int(v) for v in val.split(", ")]
day = day_(val[2])
hour = hour_(val[2], val[3])
minutes = min_(val[3], val[4])
year, month = year_month(val[1], val[2])
return datetime(year, month, day, hour, minutes)
I whakahaeretia ki te kite i nga uara tukurua mai i te int, int, datetime, datetime , te ahua nei koinei te mea e hiahia ana koe. I tua atu, karekau e rua nga wahanga o te raupapa i ia rarangi.
Ma te whakamahi i te korero auau, ka kitea e matou nga raraunga e tika ana:
Kia mahara mai i te wa e rapu ana ma te whakamahi i tenei korero, kaore e taea te whakatau i nga uara NULL i roto i nga mara e hiahiatia ana, engari mo taku keehi ehara tenei i te mea nui. Na ka haere matou i roto i nga mea i kitea e matou i roto i te kohanga. Hōtuhi:
result = []
for val in fined:
pre_result = []
bd_int = re.findall(r"128, d*, d*, d*", val)
bd_date= re.findall(r"(153, 1[6,5,4,3]d, d*, d*, d*)", val)
for it in bd_int:
pre_result.append(find_int(bd_int[it]))
for bd in bd_date:
pre_result.append(find_data_time(bd))
result.append(pre_result)
Ae, ko te mea katoa, ko nga raraunga mai i te rarangi hua ko nga raraunga e hiahiatia ana e matou. ###PS.####
Kei te mohio ahau kaore tenei tikanga e pai mo te katoa, engari ko te kaupapa matua o te tuhinga ko te akiaki i nga mahi, kaua ki te whakaoti i o raru katoa. Ki taku whakaaro ko te otinga tino tika me timata koe ki te ako i te waehere puna mariadb, engari na te iti o te wa, ko te tikanga o naianei te ahua tere.
I etahi wa, i muri i te tātari i te konae, ka taea e koe te whakatau i te hanganga tata me te whakahoki mai ma te whakamahi i tetahi o nga tikanga paerewa mai i nga hononga o runga. Ka tino tika tenei ka iti ake nga raru.