programing

서로 다른 RHEL 호스트에서 생성된 MariaDB 시간대 정보 SQL 파일 간의 차이

goodsources 2023. 6. 10. 09:03
반응형

서로 다른 RHEL 호스트에서 생성된 MariaDB 시간대 정보 SQL 파일 간의 차이

우리는 를 사용하여 마리아DB에 시간대 데이터를 설치하고 싶습니다.이 프로세스에는 대략 다음 단계가 포함됩니다.

  1. 디렉터리의 파일에서 SQL 파일 생성/usr/share/zoneinfo Hat 7)의 경우(Red Hat Enterprise 리눅스 7).
  2. 마리아에 표준 시간대 정보를 설치하기 위해 SQL 파일 실행DB

NAT의 작업 환경에는 테스트 가상 시스템 및 서버에서 실행되는 MariaDB의 여러 인스턴스가 포함되어 있습니다.그리고 VM에서 생성된 SQL 파일과 서버를 비교했을 때 텍스트 차이를 발견했습니다.그래서 조심하기 위해서는 서버 변경을 하기 전에 이유를 찾아야 합니다.

또한 VM이 정상인 동안 SQL 파일을 생성하는 동안 서버에서 다음 오류가 발생했습니다.우리는 오류가 얼마나 중요한지 확신할 수 없습니다.

[root@server test-tzinfo]# mariadb-tzinfo-to-sql /usr/share/zoneinfo > zoneinfo-hostname.sql
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
[root@server test-tzinfo]#

질문:.

우리는 MariaDB와 RHEL의 이 부분이 처음이라 어떠한 힌트나 제안을 해주시면 감사하겠습니다.마리아DB에 타임존 정보를 설치할 수 있는 다른 방법이 있는지도 알려주시기 바랍니다.

저는 증기위해키시가추다, 을▁the다▁adding니▁to,추를 추가합니다.mysql이 부분의 MariaDB와 비슷하기 때문에 태그를 지정합니다.

기술 세부 정보:

『 』의 전체 입니다.diff ./zoneinfo-server.sql ./zoneinfo-vm.sql의 줄이 샘플로서 : 10,000줄의 줄이 필요합니다.

8,9d7
< END IF|
< \d ;
14a13,19
> ELSE
> TRUNCATE TABLE time_zone;
> TRUNCATE TABLE time_zone_name;
> TRUNCATE TABLE time_zone_transition;
> TRUNCATE TABLE time_zone_transition_type;
> END IF|
> \d ;
11583,11584c11588,11589
< ,(@time_zone_id, -880218000, 2)
< ,(@time_zone_id, -769395600, 3)
---
> ,(@time_zone_id, -880218000, 3)
> ,(@time_zone_id, -769395600, 4)
11774,11775c11779,11781
< ,(@time_zone_id, 2, -14400, 1, 'EWT')
< ,(@time_zone_id, 3, -14400, 1, 'EPT')
---
> ,(@time_zone_id, 2, -18000, 0, 'EST')
> ,(@time_zone_id, 3, -14400, 1, 'EWT')
> ,(@time_zone_id, 4, -14400, 1, 'EPT')

...

> ,(@time_zone_id, 2108595600, 7)
> ,(@time_zone_id, 2121901200, 6)
> ,(@time_zone_id, 2140045200, 7)
17726,17729c17736,17741
< ,(@time_zone_id, 2, 3600, 0, 'CET')
< ,(@time_zone_id, 3, 7200, 1, 'CEST')
< ,(@time_zone_id, 4, 7200, 1, 'CEST')
< ,(@time_zone_id, 5, 3600, 0, 'CET')
---
> ,(@time_zone_id, 2, 7200, 1, 'CEST')
> ,(@time_zone_id, 3, 3600, 0, 'CET')
> ,(@time_zone_id, 4, 10800, 1, 'CEMT')
> ,(@time_zone_id, 5, 10800, 1, 'CEMT')
> ,(@time_zone_id, 6, 7200, 1, 'CEST')
> ,(@time_zone_id, 7, 3600, 0, 'CET')

...

> ,(@time_zone_id, 2121901200, 6)
> ,(@time_zone_id, 2140045200, 7)
24206,24209c24213,24218
< ,(@time_zone_id, 2, 3600, 0, 'CET')
< ,(@time_zone_id, 3, 7200, 1, 'CEST')
< ,(@time_zone_id, 4, 7200, 1, 'CEST')
< ,(@time_zone_id, 5, 3600, 0, 'CET')
---
> ,(@time_zone_id, 2, 7200, 1, 'CEST')
> ,(@time_zone_id, 3, 3600, 0, 'CET')
> ,(@time_zone_id, 4, 10800, 1, 'CEMT')
> ,(@time_zone_id, 5, 10800, 1, 'CEMT')
> ,(@time_zone_id, 6, 7200, 1, 'CEST')
> ,(@time_zone_id, 7, 3600, 0, 'CET')
24456,24523c24465
<  (@time_zone_id, -1956609120, 2)
< ,(@time_zone_id, -1668211200, 1)

...

< ,(@time_zone_id, -68680800, 3)
< ,(@time_zone_id, -54770400, 5)
---
>  (@time_zone_id, -1830383032, 1)
24526,24531c24468,24469
<  (@time_zone_id, 0, -5280, 0, 'LMT')
< ,(@time_zone_id, 1, 0, 1, '+00')
< ,(@time_zone_id, 2, -3600, 0, '-01')
< ,(@time_zone_id, 3, -3600, 0, '-01')
< ,(@time_zone_id, 4, 0, 1, '+00')
< ,(@time_zone_id, 5, 0, 0, 'GMT')
---
>  (@time_zone_id, 0, -968, 0, 'LMT')
> ,(@time_zone_id, 1, 0, 0, 'GMT')
29142c29080

...

> ,(@time_zone_id, 2108595600, 9)
> ,(@time_zone_id, 2121901200, 8)
> ,(@time_zone_id, 2140045200, 9)
30684,30691c30627,30634
<  (@time_zone_id, 0, 4772, 1, 'NST')
< ,(@time_zone_id, 1, 1172, 0, 'AMT')
< ,(@time_zone_id, 2, 4772, 1, 'NST')
< ,(@time_zone_id, 3, 1172, 0, 'AMT')
< ,(@time_zone_id, 4, 1200, 0, '+0020')
< ,(@time_zone_id, 5, 4800, 1, '+0120')
< ,(@time_zone_id, 6, 4800, 1, '+0120')
< ,(@time_zone_id, 7, 3600, 0, 'CET')
---
>  (@time_zone_id, 0, 0, 0, 'WET')
> ,(@time_zone_id, 1, 3600, 0, 'CET')
> ,(@time_zone_id, 2, 7200, 1, 'CEST')
> ,(@time_zone_id, 3, 3600, 0, 'CET')
> ,(@time_zone_id, 4, 7200, 1, 'CEST')
> ,(@time_zone_id, 5, 3600, 1, 'WEST')
> ,(@time_zone_id, 6, 0, 0, 'WET')
> ,(@time_zone_id, 7, 0, 0, 'WET')
30693,30696c30636
< ,(@time_zone_id, 9, 7200, 1, 'CEST')
< ,(@time_zone_id, 10, 7200, 1, 'CEST')
< ,(@time_zone_id, 11, 3600, 0, 'CET')
< ,(@time_zone_id, 12, 3600, 0, 'CET')
---
> ,(@time_zone_id, 9, 3600, 0, 'CET')
31160,31161c31100,31101
< ,(@time_zone_id, -37242000, 3)
< ,(@time_zone_id, 57722400, 5)
---
> ,(@time_zone_id, -37242000, 4)
> ,(@time_zone_id, 57722400, 6)
31180,31294c31120,31234
< ,(@time_zone_id, 354675600, 4)
< ,(@time_zone_id, 372819600, 5)

...

> ,(@time_zone_id, 2108595600, 6)
> ,(@time_zone_id, 2121901200, 5)
> ,(@time_zone_id, 2140045200, 6)
34190,34192c34144,34146
< ,(@time_zone_id, 3, 3600, 0, 'BST')
< ,(@time_zone_id, 4, 3600, 1, 'BST')
< ,(@time_zone_id, 5, 0, 0, 'GMT')
---
> ,(@time_zone_id, 3, 0, 0, 'GMT')
> ,(@time_zone_id, 4, 3600, 0, 'BST')
> ,(@time_zone_id, 5, 3600, 1, 'BST')
34516a34471,34612
> INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('Europe/Kyiv', @time_zone_id);
> INSERT INTO time_zone_transition (Time_zone_id, Transition_time, Transition_type_id) VALUES
>  (@time_zone_id, -1441159324, 1)
> ,(@time_zone_id, -1247536800, 2)

...

> ,(@time_zone_id, 2108595600, 12)
> ,(@time_zone_id, 2121901200, 13)
> ,(@time_zone_id, 2140045200, 12)
> ;
> INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
>  (@time_zone_id, 0, 7324, 0, 'KMT')
> ,(@time_zone_id, 1, 7200, 0, 'EET')
> ,(@time_zone_id, 2, 10800, 0, 'MSK')
> ,(@time_zone_id, 3, 3600, 0, 'CET')
> ,(@time_zone_id, 4, 7200, 1, 'CEST')
> ,(@time_zone_id, 5, 7200, 1, 'CEST')
> ,(@time_zone_id, 6, 14400, 1, 'MSD')
> ,(@time_zone_id, 7, 10800, 0, 'MSK')
> ,(@time_zone_id, 8, 14400, 1, 'MSD')
> ,(@time_zone_id, 9, 10800, 1, 'EEST')
> ,(@time_zone_id, 10, 7200, 0, 'EET')
> ,(@time_zone_id, 11, 10800, 1, 'EEST')
> ,(@time_zone_id, 12, 7200, 0, 'EET')
> ,(@time_zone_id, 13, 10800, 1, 'EEST')
> ;
> INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
> SET @time_zone_id= LAST_INSERT_ID();
35001,35002c35097,35098
< ,(@time_zone_id, -37242000, 3)
< ,(@time_zone_id, 57722400, 5)
---
> ,(@time_zone_id, -37242000, 4)
> ,(@time_zone_id, 57722400, 6)
35021,35135c35117,35231
< ,(@time_zone_id, 354675600, 4)
< ,(@time_zone_id, 372819600, 5)

...

< ,(@time_zone_id, 2, 36000, 0, '+10')
137553,137558d137538
< INSERT INTO time_zone_transition (Time_zone_id, Transition_time, Transition_type_id) VALUES
<  (@time_zone_id, -1743674400, 1)
< ,(@time_zone_id, -1606813200, 0)
< ,(@time_zone_id, -907408800, 1)
< ,(@time_zone_id, -770634000, 0)
< ;
137561,137562d137540
< ,(@time_zone_id, 1, 32400, 0, '+09')
< ,(@time_zone_id, 2, 36000, 0, '+10')
138990,138991c138968,138969
< ,(@time_zone_id, -880218000, 2)
< ,(@time_zone_id, -769395600, 3)
---
> ,(@time_zone_id, -880218000, 3)
> ,(@time_zone_id, -769395600, 4)
139181,139182c139159,139161
< ,(@time_zone_id, 2, -14400, 1, 'EWT')
< ,(@time_zone_id, 3, -14400, 1, 'EPT')
---
> ,(@time_zone_id, 2, -18000, 0, 'EST')
> ,(@time_zone_id, 3, -14400, 1, 'EWT')
> ,(@time_zone_id, 4, -14400, 1, 'EPT')
140144a140124
> UNLOCK TABLES;
140153,140154c140133,140134
< ALTER TABLE time_zone_transition ENGINE=Aria;
< ALTER TABLE time_zone_transition_type ENGINE=Aria;
---
> ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
> ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;

정보를 조금 더 추가하자면, VM을 다음으로 다운그레이드한 후tzdata.noarch 2022a-1.el7zoneinfo 데이터의 서버와 일치하기 위해 아래의 몇 줄로 차이가 줄었습니다.MariaDB-client주 버전과 부 버전은 같지만 패치 번호는 다릅니다.

$ diff zoneinfo-vm-2022a-1.sql zoneinfo-server.sql
7a8,9
> END IF|
> \d ;
13,19d14
< ELSE
< TRUNCATE TABLE time_zone;
< TRUNCATE TABLE time_zone_name;
< TRUNCATE TABLE time_zone_transition;
< TRUNCATE TABLE time_zone_transition_type;
< END IF|
< \d ;
140150d140144
< UNLOCK TABLES;
140159,140160c140153,140154
< ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
< ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
---
> ALTER TABLE time_zone_transition ENGINE=Aria;
> ALTER TABLE time_zone_transition_type ENGINE=Aria;

mariadb-tzinfo-to-sqlMySQL 버전에서 Galera 및 Embedded 모드로 작동할 수 있도록 크게 수정되었습니다.

에는 두 , 의 마리아DB입니다. 서로 다른 버전의 MariaDBmariadb-client가 된 패키지mariadb-tzinfo-to-sql프로그램 및 차이 영역 정보.

이는 경고일 뿐 생성된 SQL에는 영향을 주지 않습니다.이러한 파일은 미리 필터링되므로 최신 버전에서는 표시되지 않습니다(MDEV-25577).

Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.

주변의 몇 가지 작은 차이점IF의 문장과 부진술과의분작시mentsALTER TABLE임베디드 서버(MDEV-28263)에서 작동하도록 변경한 내용입니다.

않것는의 존재하지 것.EST서버 중 하나에서 변경된 것을 제거했습니다.time_zone_id순서.모든 테이블을 결합하는 데 사용되는 내부 전용 표현입니다.

또한 표시됩니다.zoneinfo일부 숫자를 변경하여 다른 순서로 읽는 파일.보시다시피, 이 차이들은 읽기 어렵습니다.

두 서버 모두에서 zoneinfo 패키지의 버전을 확인하여 후자를 확인하고 해당 패키지를 사용할 것을 권장합니다.이론적으로 이것들은 동일한 출처를 기반으로 합니다.

이 문제의 다른 원인은 KB 문서에 따라 MariaDB 미러에 있습니다.이는 에서 생성됩니다.mariadb:10.6컨테이너(Ubuntu 포커스 베이스 이미지 및 그에 따른 zoneinfo 패키지를 가지고 있음).

언급URL : https://stackoverflow.com/questions/73698681/differences-between-mariadb-time-zone-info-sql-files-generated-on-different-rhel

반응형