參考Percona官網資訊: Installing Percona Server 8.0.12-2rc1 Installing Percona Server on Debian and Ubuntu
首先列出我的測試環境
1. 機器規格: Google Cloud Platform的n1-highmem-32規格虛擬機(32 CPU, 208 GB RAM)
2. 作業系統: Debian Linux 9.5
3. MySQL資料庫原先版本: Percona Server for MySQL 5.7
下載Percona Server for MySQL 8.0用的testing repositories套件
wget https://repo.percona.com/apt/percona-release_0.1-8.$(lsb_release -sc)_all.deb
安裝
dpkg -i percona-release_0.1-8.$(lsb_release -sc)_all.deb
啟動testing repositories
percona-release enable ps-80 testing
更新APT local cache
apt-get update
升級必須停止MySQL的運作
service mysql stop
修改my.cnf
[mysqld]
binlog_format = ROW
back_log = 2000
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
connect_timeout = 15
datadir = /var/lib/mysql
default_storage_engine = InnoDB
innodb_buffer_pool_instances = 32
innodb_buffer_pool_size = 166G
innodb_change_buffering = all
innodb_checksum_algorithm = crc32
innodb_data_file_path = ibdata1:64M;ibdata2:64M:autoextend
innodb_doublewrite = 1
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_flush_neighbors = 0
innodb_io_capacity = 6400
innodb_io_capacity_max = 12800
innodb_log_buffer_size = 64M
innodb_log_file_size = 64M
innodb_log_files_in_group = 2
innodb_lru_scan_depth = 4000
innodb_print_all_deadlocks = 1
innodb_purge_threads = 4
innodb_read_io_threads = 8
innodb_write_io_threads = 8
key_buffer_size = 32M
log-bin = mysqld-bin
long_query_time = 1
loose-innodb_sync_array_size = 16
loose-performance_schema = 0
max_allowed_packet = 64M
max_connect_errors = 4294967295
max_connections = 4096
max_prepared_stmt_count = 1048560
open_files_limit = 15000
server-id = 1
skip_name_resolve
sql_mode =
slow_query_log = 0
sync_binlog = 0
table_open_cache = 15000
thread_cache_size = 1024
tmpdir = /tmp
transaction_isolation = REPEATABLE-READ
user = mysql
wait_timeout = 60
default_time_zone = SYSTEM
init_connect = 'SET collation_connection = utf8mb4_unicode_ci,NAMES utf8mb4'
安裝Percona Server for MySQL 8.0, 這裡還未有版號
apt-get install percona-server-server
有些5.7的設定值同樣無法用在8.0, 可以看error.log的錯誤訊息刪除該設定值
執行mysql_upgrade
mysql_upgrade -u root -p
重新啟動
service mysql restart
進入MySQL console
mysql -u root -p
檢視MySQL Server版號
SHOW VARIABLES LIKE "%version%";
會顯示這樣的訊息
+-------------------------+-------------------------------------------------------+
| Variable_name | Value |
+-------------------------+-------------------------------------------------------+
| innodb_version | 8.0.12-2 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1,TLSv1.2 |
| version | 8.0.12-2 |
| version_comment | Percona Server (GPL), Release '2', Revision '321bbc1' |
| version_compile_machine | x86_64 |
| version_compile_os | debian-linux-gnu |
| version_compile_zlib | 1.2.8 |
| version_suffix | |
+-------------------------+-------------------------------------------------------+
10 rows in set (0.01 sec)
升級過程有許多Warning, Error記錄在/var/log/mysql/error.log, 可經由這些資訊將問題排除, 讓伺服器正常啟動。Percona Server for MysQL 8.0預設字集utf8mb4_0900_ai_ci, 也建議將資料庫轉成utf8mb4_0900_ai_ci字集。