作業系統遷移實戰之在openEuler上部署MySQL資料庫

語言: CN / TW / HK

寫在前面的話

系統遷移中庫體遷移是一件讓人挺“頭禿”的事兒。簡單的需求(照原樣再複製一份到XXX環境)可不意味著它的過程簡單……好在openEuler社群這邊提供了工具x2openEuler,能夠提前評估將MySQL移植到openEuler作業系統的相容性,再實時資料搬遷,減少很多準備工作和時間。想著可能也有朋友遇到同樣的需求,這裡我想分享下經驗,也希望大家能夠一起交流交流

1.簡要介紹

本文主要用於在openEuler 20.03 sp1 作業系統上部署MySQL資料庫。本次實踐主要使用x86_64架構虛擬機器,通過評估工具x2openEuler評估MySQL 5.7.21軟體移植到openEuler作業系統的相容性,再實施資料搬遷。如果您使用其他版本的MySQL,可以參考參考。

2.環境

專案 說明
伺服器 TaiShan 200伺服器
CPU 華為鯤鵬920處理器
Raid卡 SAS3508
網路卡 Mellanox SP333
-- TM210
-- TM280
磁碟容量 500GB以上

OS | 軟體 | 版本 | 備註 |------| --------| ---------| OS | Centos 7.6.1810 | 當前mysql叢集伺服器 OS | openEuler 20.03 SP1 | 遷移目標伺服器

軟體包 | 軟體 | 版本 | |--------| -------------| mysql5 | 5.7.21 mysql5-common | 5.7.21 mysql5-embedded | 5.7.21 mysql5-embedded-devel | 5.7.21 mysql5-errmsg | 5.7.21 mysql5-libs | 5.7.21 mysql5-server | 5.7.21 mysql5-test | 5.7.21

3.軟體相容性評估

openEuler社群提供了 x2openEuler 工具 ,針對已經編譯好的二進位制程式,進行主要完成軟體包、介面級評估,明確應用軟體是否需要移植適配,是否有依賴的軟體包待引入;同時評估軟體呼叫的介面原型在兩個系統中是否有差異。 注:已經編譯好的二進位制程式,難以保障全部相容新OS,嚴重時會引發才記憶體風險,往往這種問題很難通過驗證的方式識別出來,遷移前針對軟體相容性評估尤為重要。

3.1獲取mysql的RPM包並解壓到/opt/mysql目錄下

wget –P /opt http://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
cd /opt/
mkdir mysql
tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar -C mysql

3.2下載x2openEuler工具到/opt/mysql

下載指引:http://www.openeuler.org/zh/other/migration/

3.3部署工具

cd /opt/mysql
rpm -ivh x2openEuler-2.0.0-1.x86_64.rpm

注意:安裝rpm時需要使用root使用者,且目前需要網路(用於下載安裝依賴) 注意:根據提示安裝依賴包如bzip2-devel等

su x2openEuler
x2openEuler redis-db -init

依次錄入redis資料庫的ip:127.0.0.1 埠:6379 資料庫索引號(0-16):0 密碼(工具會對密碼加密處理):如果redis密碼沒有設定或者為空時,直接回車即可.

x2openEuler init source_centos7.6-openEuler20.03-LTS-SP1.tar.gz

備註:x2openEuler使用rpm安裝完成後會在/opt/x2openEuler目錄下帶有source_centos7.6-openEuler20.03-LTS-SP1.tar.gz這個預設資源包,需要支援centos8.2到openEuler20.03-LTS-SP1的評估,則需獲取對應的靜態資源包匯入,如對應的資源包為source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,匯入此包命令:x2openEuler init source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,請示情況選擇對應的資源包

3.4掃描mysql

x2openEuler scan /opt/mysql/
注意要分析的移植檔案需要有能夠讓x2openEuler使用者可以讀取的許可權
掃描完成後會在/opt/x2openEuler/output目錄生成html格式的報告

4.評估結果分析

軟體相容性評估報告分三塊內容展示軟體相容性,分別是依賴包相容性、C/C++介面相容性、java介面相容性,依賴包相容性反映了軟體包安裝過程中的直接依賴,非100%表明無法正確安裝;介面相容性反映的是單個軟體執行過程中對其他軟體包、動態庫或系統介面的呼叫變化,非100%表明在某個功能呼叫時可能會觸發異常,未呼叫到時可能表現正常;部分結果建議人工複核,最終軟體包使用建優先順序建議 openEuler已移植包>openEuler上人工重編譯包>centos軟體包。

4.1報告分析

開啟html報告,逐行分析,得出結論:在openEuler上直接使用centos的mysql包存在風險,風險如下: 1個待確認介面表明mysql系列軟體包會呼叫到libaio.so.1.0.1,其函式引數數量從4變為5,直接影響了功能,在某個功能呼叫時可能會觸發異常;

另外,報告顯示需要確認3個依賴軟體包,經過人工確認屬於mysql系列包自閉環的依賴,故軟體包安裝無影響。 在這裡插入圖片描述 在這裡插入圖片描述

4.2分析結果建議

建議:由於函式呼叫風險,建議直接使用在openEuler官方編譯移植過的mysql-5.7.21系列軟體包
http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/x86_64/Packages/mysql5-5.7.21-3.oe1.x86_64.rpm
http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/x86_64/Packages/mariadb-common-10.3.9-9.oe1.x86_64.rpm
http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/x86_64/Packages/mysql5-common-5.7.21-3.oe1.x86_64.rpm
http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/x86_64/Packages/mysql5-server-5.7.21-3.oe1.x86_64.rpm
http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/x86_64/Packages/mysql5-errmsg-5.7.21-3.oe1.x86_64.rpm
http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/x86_64/Packages/mecab-0.996-2.oe1.x86_64.rpm

5.安裝資料庫mysql

5.1安裝mysql並配置密碼

1)安裝mariadb及mysql相關服務。

rpm -ivh mysql5-5.7.21-3.oe1.x86_64.rpm mariadb-common-10.3.9-9.oe1.x86_64.rpm mysql5-common-5.7.21-3.oe1.x86_64.rpm mysql5-server-5.7.21-3.oe1.x86_64.rpm mecab-0.996-2.oe1.x86_64.rpm mysql5-errmsg-5.7.21-3.oe1.x86_64.rpm

2) 啟動mysql。

systemctl start mysqld

3)mysql狀態查詢。

systemctl status mysqld 狀態為running則啟動成功:

[email protected] ~# systemctl status mysqld
● mysqld.service - MySQL 5.7 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)

  Active: active (running) since Thu 2021-09-09 10:23:25 CST; 1 day 4h ago

 Process: 103715 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)

 Process: 103738 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, sta>

 Process: 103773 ExecStart=/usr/libexec/mysqld --daemonize --basedir=/usr --pid-file=/run/mysqld>

 Process: 103803 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)

 Main PID: 103775 (mysqld)

  Tasks: 37

  Memory: 188.4M

  CGroup: /system.slice/mysqld.service

      └─103775 /usr/libexec/mysqld --daemonize --basedir=/usr --pid-file=/run/mysqld/mysqld.

4) 登入並修改預設密碼。

mysql -uroot -p

  • a. 預設沒有密碼,按回車即可登入。
[email protected] /# mysql -uroot -p

Enter password: 

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.21 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. 
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
  • b. 設定密碼。

alter user 'user'@'localhost' identified by 'passward';

mysql> alter user 'root'@'localhost' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql>

flush privileges必須執行,否則設定不生效。

5) 驗證密碼。

退出後重新登入,檢視密碼是否修改成功。

[email protected] /# mysql -uroot -p

Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3Server version: 5.7.21 MySQL Community Server (GPL) 
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

6.總結

根據評估結果再去實施搬遷,整體還是比較好操作,如若評估結果有疑問,可以向openEuler社群郵件列表([email protected])諮詢。

參考資料:

openEuler官網 http://www.openeuler.org/zh/other/migration/

x2openEuler 使用者指南 http://docs.openeuler.org/zh/docs/20.03_LTS_SP1/docs/thirdparty_migration/x2openEuleruseguide.html

openEuler社群郵件列表 http://www.openeuler.org/zh/community/mailing-list/