最近工作重點轉向信創領域後就開始研究國産化作業系統對各種資料庫的适配方案,期間發現一些很有價值的内容,特意整理成文章分享出來。
此文檔講述如何在國産麒麟作業系統KylinOS V10 SP2上安裝MySQL 8.0.28的第一篇:使用MySQL RPM包安裝。
一: 準備作業系統
1.1 首先确認作業系統版本是KylinOS V10 SP2
麒麟作業系統V10 SP2使用的安裝媒體是Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso,執行以下指令檢視版本:
cat /etc/kylin-release
cat /proc/version
1.2. 檢查系統是否自帶MySQL或MariaDB
通過以下指令檢查是否安裝:
rpm -qa | grep mariadb
如果系統已經安裝了其它版本的MySQL或者MariaDB則要将其删除,執行以下指令删除:
rpm -e {mariadb-server,mariadb,mariadb-errmessage,mariadb-common}
1.3 檢查SSL包是否安裝
rpm -qa | grep ssl
如果系統未安裝openssl相關元件則需要将其安裝,這裡缺少openssl-devel,用yum安裝之,這樣它會自動安裝依賴包,執行以下指令安裝:
yum install openssl-devel
二: 準備MySQL安裝包
最新社群版MySQL 8.0.28可與Kylinos V10 SP2相容,因為Kylinos V10 SP2就是基于CentOS 8開發而來,确切說是基于華為Euler系統,而MySQL 8.0.28是可以相容CentOS 8 的。
2.1 下載下傳MySQL安裝包
打開MySQL官網下載下傳頁面: https://dev.mysql.com/downloads/mysql/
選擇MySQL 8.0.28版本,作業系統選擇RedHat Enterprise Linux 8 64 bit,如下圖:
在下方安裝包清單處,選擇mysql-8.0.28-1.el8.x86_64.rpm-bundle.tar下載下傳,如下圖:
2.2 解壓MySQL安裝包
将MySQL 8.0.28上傳到/root/Documents目錄,并解壓,如下圖:
tar xvf mysql-8.0.28-1.el8.x86_64.rpm-bundle.tar
三: 安裝MySQL
3.1 安裝MySQL
隻需要安裝以下必選元件即可,注意必須按照先後順序安裝,如下清單:
mysql-community-common-8.0.28-1.el8.x86_64.rpm
mysql-community-client-plugins-8.0.28-1.el8.x86_64.rpm
mysql-community-libs-8.0.28-1.el8.x86_64.rpm
mysql-community-client-8.0.28-1.el8.x86_64.rpm
mysql-community-icu-data-files-8.0.28-1.el8.x86_64.rpm
mysql-community-server-8.0.28-1.el8.x86_64.rpm
mysql-community-devel-8.0.28-1.el8.x86_64.rpm
使用以下指令安裝每個rpm包:
rpm -ivh mysql-community-common-8.0.28-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.28-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.0.28-1.el8.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.0.28-1.el8.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.28-1.el8.x86_64.rpm
安裝過程如下圖:
3.2 啟動MySQL
安裝完成後MySQL服務預設并未啟動,可以通過以下指令檢視到狀态:
systemctl status mysqld
接下來要啟動MySQL,通過執行以下指令啟動:
systemctl start mysqld
再次檢視MySQL服務狀态,看到MySQL服務成功啟動:
systemctl status mysqld
四: 配置MySQL
MySQL安裝完成後需要對MySQL做基礎配置,包括首次登入修改使用者密碼、資料檔案位置調整、redo log大小與數量調整、undo 表空間調整、ibdata表空間調整、binlog+errorlog+slowlog+pid+socket等檔案調整、性能參數調整,這些調整都可以通過修改my.cnf參數檔案實作。
4.1 首次登入
在MySQL安裝完成第一次啟動MySQL服務後,會自動為MySQL的root使用者生成一個随機初始化密碼,并在MySQL的errorlog檔案中記錄下來,我們要找到它并用它登入MySQL,修改root使用者密碼後才能執行任何其它操作:
- 找到初始化密碼
grep password /var/og/mysqld.log
下圖綠色方框中即為初始化密碼
- 使用上面的初始化密碼登入MySQL
mysql -uroot -p
回車後,在下圖綠色框中輸入密碼,成功登入MySQL
- 修改root密碼
使用初始化密碼登入MySQL後隻能執行修改密碼的操作,其它任何操作是不能執行的,使用以下指令修改密碼:
SQL>alter user user() identified by 'LaoGeDB123!';
密碼修改成功後,執行以下指令檢視MySQL基本資訊:
SQL>status
4.2 修改my.cnf參數檔案
my.cnf預設會在/etc目錄下自動生成,需要編輯此檔案以調整各種檔案配置和性能配置參數。
- 在修改前要關閉MySQL服務
systemctl stop mysqld
- 編輯/etc/my.cnf檔案
vim /etc/my.cnf
按如下内容編輯my.cnf
[mysql]
socket=/data/mysql/data/mysqld.sock
[mysqld]
###base config###
server-id=211
datadir=/data/mysql/data
socket=/data/mysql/data/mysqld.sock
pid-file=/data/mysql/data/mysqld.pid
log-error=/data/mysql/log/mysqld.log
###query config###
join_buffer_size = 128M
sort_buffer_size = 16M
read_buffer_size = 16M
read_rnd_buffer_size = 8M
###open table config###
table_open_cache=2000
table_open_cache_instances=16
###connection config###
max_connections=2000
thread_cache_size=200
###binlog config###
log_bin=/data/mysql/log/binlog
log_bin_index=/data/mysql/log/binlog.index
binlog_format=ROW
max_binlog_size=1G
binlog_cache_size=16M
binlog_expire_logs_seconds=604800
enforce_gtid_consistency=ON
gtid_mode=ON
###general log config###
general_log=OFF
general_log_file=/data/mysql/log/mysqld.gnl
###slow query config###
log_output=FILE
long_query_time=1
slow_query_log=ON
slow_query_log_file=/data/mysql/log/mysqld.slow
###innodb redo log config###
innodb_log_file_size=1G
innodb_log_files_in_group=3
innodb_log_buffer_size=16M
innodb_log_group_home_dir=/data/mysql/redo
innodb_redo_log_archive_dirs=/data/mysql/arch
###innodb undo log config###
#innodb_max_undo_log_size=1G
#innodb_undo_tablespaces=2
innodb_undo_directory=/data/mysql/undo
###innodb config###
#innodb_data_file_path=ibdata1:12M:autoextend
#innodb_temp_data_file_path=ibtmp1:12M:autoextend
#innodb_temp_tablespaces_dir=./#innodb_temp/
#innodb_autoextend_increment=64
innodb_buffer_pool_size=8G
innodb_open_files=10000
open_files_limit=10000
編輯完儲存退出。
- 移動MySQL資料檔案
my.cnf配置檔案中調整了undo、redo、binlog等檔案的存放位置,是以需要将MySQL安裝後預設資料目錄下的檔案移動到與my.cnf對應的目錄下。
首先,建立與my.cnf中配置對應的目錄
mkdir /data/mysql/{data,redo,undo,arch,log} -p
其次,移動檔案到對應的目錄
mv /var/lib/mysql/undo* /data/mysql/undo
mv /var/lib/mysql/ib_logfile* /data/mysql/redo
mv /var/lib/mysql/* /data/mysql/data
最後,修改目錄權限
chown mysql.mysql /data/mysql -R
4.3 啟動MySQL服務
systemctl start mysqld
五: 測試MySQL
5.1 檢視MySQL服務狀态
systemctl status mysqld
5.2 登入MySQL
mysql -uroot -p
一切正常,至此安裝完成。