opensuse下安装mysql8.4.5(glibc2.17)安装部署+xtrabackup(glibc2.28)备份
环境:
Os:opensuse leap 16
mysql:mysql-8.4.5-linux-glibc2.17
xtrabackup:8.4.0-5-Linux-x86_64.glibc2.28
1.下载安装介质
我这里下载的是 mysql-8.4.5-linux-glibc2.17-x86_64.tar.xz
查看操作系统的GLIBC库
localhost:/soft # strings /lib64/libc.so.6 | grep -E "^GLIBC" | sort -V -r | uniq
GLIBC_PRIVATE
GLIBC_ABI_DT_RELR
GLIBC_2.39
GLIBC_2.38
GLIBC_2.36
GLIBC_2.35
GLIBC_2.34
GLIBC_2.33
GLIBC_2.32
GLIBC_2.31
GLIBC_2.30
GLIBC_2.29
GLIBC_2.28
GLIBC_2.27
GLIBC_2.26
GLIBC_2.25
GLIBC_2.24
GLIBC_2.23
GLIBC_2.22
GLIBC_2.18
GLIBC_2.17
GLIBC_2.16
GLIBC_2.15
GLIBC_2.14
GLIBC_2.13
GLIBC_2.12
GLIBC_2.11
GLIBC_2.10
GLIBC_2.9
GLIBC_2.8
GLIBC_2.7
GLIBC_2.6
GLIBC_2.5
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.3
GLIBC_2.3.2
GLIBC_2.3
GLIBC_2.2.6
GLIBC_2.2.5
2.创建mysql用户和用户组
好像默认都已经存在mysql组和mysql账号
#groupadd mysql
#useradd -g mysql mysql
#passwd mysql
3.下载解压安装
[root@localhost soft]# tar -xvf mysql-8.4.5-linux-glibc2.17-x86_64.tar.xz
[root@localhost soft]# mv mysql-8.4.5-linux-glibc2.17-x86_64 /opt/mysql8
4.创建相应的目录
[root@rac02 mysql8]# cd /opt/mysql8
[root@localhost mysql8]# mkdir data ##数据文件目录
[root@localhost mysql8]# mkdir conf ## 配置文件目录
[root@localhost mysql8]# mkdir -p mysqllog/relaylog ##主从环境relaylog
[root@localhost mysql8]# mkdir -p mysqllog/logfile ##错误日志文件
[root@localhost mysql8]# mkdir -p mysqllog/binlog ##binlog文件
[root@localhost mysql8]# mkdir -p secure_file ##secure_file_priv参数指定路
[root@localhost mysql8]# mkdir audit ##审计目录
5.配置my.cnf配置文件
在conf目录下创建配置文件 my.cnf,配置文件内容如下
[mysqld]
port=3306
server-id=3
basedir=/opt/mysql8
datadir=/opt/mysql8/data
socket=/opt/mysql8/mysql.sock ##可以不需要指定,使用默认的/tmp/mysql.sock
max_connections = 1000
character_set_server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
interactive_timeout=86400
wait_timeout=86400
skip-external-locking
key_buffer_size= 128M
max_allowed_packet=32M
##query_cache_size=32M
read_buffer_size=2M
sort_buffer_size=1M
join_buffer_size= 128M
innodb_file_per_table= 1
innodb_open_files= 5000
innodb_buffer_pool_size= 32G
innodb_write_io_threads= 16
innodb_read_io_threads= 16
innodb_thread_concurrency = 0
innodb_purge_threads= 1
innodb_flush_log_at_trx_commit= 2
innodb_log_buffer_size=16M
##准备废弃innodb_log_file_size和innodb_log_files_in_group,使用innodb_redo_log_capacity代替
##innodb_log_file_size=512M
##innodb_log_files_in_group= 5
innodb_redo_log_capacity = 2GB
innodb_max_dirty_pages_pct= 90
innodb_lock_wait_timeout= 120
bulk_insert_buffer_size= 64M
myisam_sort_buffer_size=64M
myisam_max_sort_file_size= 10G
##myisam_repair_threads= 1
log_bin_trust_function_creators=1
event_scheduler=1
max_binlog_size=100M
binlog_format=row
log-bin=/opt/mysql8/mysqllog/binlog/binlog.bin
slow_query_log=on
slow_query_log_file=/opt/mysql8/mysqllog/logfile/slow-query.log
long_query_time=1
log_queries_not_using_indexes=on
log-error=/opt/mysql8/mysqllog/logfile/mysql-err.log
binlog_cache_size=4MB
##没有了skip-host-cache参数
##skip-host-cache
skip-name-resolve
##已经没有该参数了expire_logs_days=15
##15*24*60*60=1296000 15天
binlog_expire_logs_seconds=1296000
###skip-slave-start该参数去掉了,使用如下参数skip-slave-start,但是8.0.15还是使用该参数
skip_replica_start
relay-log-index=/opt/mysql8/mysqllog/relaylog/slave-relay-bin.index
relay-log=/opt/mysql8/mysqllog/relaylog/relaylog-binlog
replicate-ignore-db=information_schema,performance_schema,sys
##无该参数slave_net_timeout=60
replica_net_timeout=60
##language=/opt/mysql8/share/english
early-plugin-load=""
explicit_defaults_for_timestamp=true
##无该参数log_slave_updates=1,下面参数替代
log_replica_updates=1
gtid_mode=ON
enforce_gtid_consistency = ON
lower_case_table_names=1 ##需要在初始化的时候加上该参数 --lower-case-table-names=1
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO'
secure_file_priv=/opt/mysql8/secure_file
mysql_native_password=on
[client]
port = 3306
default-character-set = utf8mb4
[mysqldump]
quick
max_allowed_packet = 32M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
6.初始化数据库
root账户下
[root@localhost bin]# cd /opt/mysql8/bin
[root@localhost bin]# ./mysqld --initialize --lower-case-table-names=1 --user=mysql --basedir=/opt/mysql8 --datadir=/opt/mysql8/data --verbose
这里没有输出的
输出日志存在在如下的文件,临时密码也在该文件/var/log/mysql/mysqld.log
localhost:/var/log/mysql # pwd
/var/log/mysql
localhost:/var/log/mysql # more mysqld.log
2026-06-22T10:08:04.776141Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2026-06-22T10:08:04.777175Z 0 [ERROR] [MY-010083] [Server] --verbose is for use with --help; did you mean --log-error-verbosity?
2026-06-22T10:08:04.777257Z 0 [System] [MY-013169] [Server] /opt/mysql8/bin/mysqld (mysqld 8.4.5) initializing of server in progress as process 3507
2026-06-22T10:08:04.784971Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-06-22T10:08:05.464269Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-06-22T10:08:08.289012Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: cwM2*YH!xd.H
2026-06-22T10:08:12.685626Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
localhost:/var/log/mysql # pwd
/var/log/mysql
7.修改目录权限
产生错误日志文件
[root@localhost mha]#echo>/opt/mysql8/mysqllog/logfile/mysql-err.log
[root@localhost mha]# cd /opt
[root@localhost opt]# chown -R mysql:mysql /opt/mysql8
8.启动
/opt/mysql8/bin/mysqld_safe --defaults-file=/opt/mysql8/conf/my.cnf --user=mysql &
9.登陆数据库修改相应用户密码
[root@rac02 bin]# cd /opt/mysql8/bin
localhost:/opt/mysql8/bin # ./mysql -h localhost -uroot -P3306 --socket=/opt/mysql8/mysql.sock -p
./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
localhost:/ # find / -name libncurses.so*
find: File system loop detected; the following directory is part of the cycle: ‘/.snapshots/1/snapshot’
/.snapshots/2/snapshot/usr/lib64/libncurses.so.6
/.snapshots/2/snapshot/usr/lib64/libncurses.so.6.5
/.snapshots/3/snapshot/usr/lib64/libncurses.so.6
/.snapshots/3/snapshot/usr/lib64/libncurses.so.6.5
/.snapshots/4/snapshot/usr/lib64/libncurses.so.6
/.snapshots/4/snapshot/usr/lib64/libncurses.so.6.5
/.snapshots/5/snapshot/usr/lib64/libncurses.so.6
/.snapshots/5/snapshot/usr/lib64/libncurses.so.6.5
/usr/lib64/libncurses.so.6
/usr/lib64/libncurses.so.6.5
建立软连接
ln -s /usr/lib64/libncurses.so.6.5 /usr/lib64/libncurses.so.5
继续报错误
localhost:/opt/mysql8/bin # ./mysql -h localhost -uroot -P3306 --socket=/opt/mysql8/mysql.sock -p
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
localhost:/ # find / -name libtinfo.so*
find: File system loop detected; the following directory is part of the cycle: ‘/.snapshots/1/snapshot’
/.snapshots/2/snapshot/usr/lib64/libtinfo.so.6
/.snapshots/2/snapshot/usr/lib64/libtinfo.so.6.5
/.snapshots/3/snapshot/usr/lib64/libtinfo.so.6
/.snapshots/3/snapshot/usr/lib64/libtinfo.so.6.5
/.snapshots/4/snapshot/usr/lib64/libtinfo.so.6
/.snapshots/4/snapshot/usr/lib64/libtinfo.so.6.5
/.snapshots/5/snapshot/usr/lib64/libtinfo.so.6
/.snapshots/5/snapshot/usr/lib64/libtinfo.so.6.5
/usr/lib64/libtinfo.so.6
/usr/lib64/libtinfo.so.6.5
建立软连接
ln -s /usr/lib64/libtinfo.so.6.5 /usr/lib64/libtinfo.so.5
重新登录修改密码
[root@rac02 bin]# cd /opt/mysql8/bin
localhost:/opt/mysql8/bin # ./mysql -h localhost -uroot -P3306 --socket=/opt/mysql8/mysql.sock -p
alter user 'root'@'localhost' identified by 'mysql';
flush privileges;
##########################################xtrabackup########################################
1.下载安装介质
下载地址
https://www.percona.com/downloads/
我这里下载的安装介质是glibc2.28版本的
percona-xtrabackup-8.4.0-5-Linux-x86_64.glibc2.28.tar.gz
2.解压安装
localhost:/soft # tar -xvf percona-xtrabackup-8.4.0-5-Linux-x86_64.glibc2.28.tar.gz
localhost:/soft # mv percona-xtrabackup-8.4.0-5-Linux-x86_64.glibc2.28 /opt/xtrabackup-8.4.0-5
3.备份
localhost:/opt # /opt/xtrabackup-8.4.0-5/bin/xtrabackup --defaults-file=/opt/mysql8/conf/my.cnf --user=root --socket=/opt/mysql8/mysql.sock --password=mysql -P3306 --no-version-check --backup --target-dir=/tmp/xtrabackup_file
/opt/xtrabackup-8.4.0-5/bin/xtrabackup: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
解决办法:
zypper install -y gcc make perl zlib-devel
cd /soft
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make -j$(nproc)
make install
# 替换系统库(给系统用 libopenssl1_1)
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl11.conf
ldconfig -v
# 验证并创建软连接
localhost:/soft # openssl version
OpenSSL 1.1.1w 11 Sep 2023
localhost:/soft #ls -lh /usr/local/openssl/lib/libcrypto.so.1.1 /usr/local/openssl/lib/libssl.so.1.1
再次运行备份命令
/opt/xtrabackup-8.4.0-5/bin/xtrabackup --defaults-file=/opt/mysql8/conf/my.cnf --user=root --socket=/opt/mysql8/mysql.sock --password=mysql -P3306 --no-version-check --backup --target-dir=/tmp/xtrabackup_file
说明:
若安装的是percona-xtrabackup-8.4.0-2-Linux-x86_64.glibc2.17.tar.gz,备份报错误
localhost:/soft # /opt/xtrabackup-8.4.0-2/bin/xtrabackup --defaults-file=/opt/mysql8/conf/my.cnf --user=root --socket=/opt/mysql8/mysql.sock --password=mysql -P3306 --no-version-check --backup --target-dir=/tmp/xtrabackup_file01
/opt/xtrabackup-8.4.0-2/bin/xtrabackup: /lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by /opt/xtrabackup-8.4.0-2/bin/xtrabackup)
/opt/xtrabackup-8.4.0-2/bin/xtrabackup: /lib64/libssl.so.10: version `libssl.so.10' not found (required by /opt/xtrabackup-8.4.0-2/bin/xtrabackup)
解决办法:
zypper install -y gcc make perl zlib-devel
cd /soft
# 北外镜像(有 1.0.2u)
wget https://mirrors4.bfsu.edu.cn/macports/distfiles/openssl10/openssl-1.0.2u.tar.gz
# 解压编译
tar -zxvf openssl-1.0.2u.tar.gz
cd openssl-1.0.2u
./config --shared --prefix=/usr/local/openssl10 --openssldir=/usr/local/openssl10/ssl
make -j$(nproc)
make install
# 建软链接(解决 xtrabackup 缺 libcrypto.so.10)
cd /lib64
ln -sf /usr/local/openssl10/lib/libcrypto.so.1.0.0 libcrypto.so.10
ln -sf /usr/local/openssl10/lib/libssl.so.1.0.0 libssl.so.10
ldconfig
# 检查
ldd /opt/xtrabackup-8.4.0-2/bin/xtrabackup | grep -E "crypto|ssl"
浙公网安备 33010602011771号