开发者

Mysql8.4.3LTS中离线部署的实现示例

开发者 https://www.devze.com 2025-03-27 13:52 出处:网络 作者: JavaOpsPro
目录一、部署环境资源配置二、下载地址版本选择三、部署详情1. 上传安装包2. 解压软件包3. 安装mysqlUbuntu24.04 中关于libaio的坑四、快速部署脚本一、部署环境
目录
  • 一、部署环境
    • 资源配置
  • 二、下载地址
    • 版本选择
  • 三、部署详情
    • 1. 上传安装包
    • 2. 解压软件包
    • 3. 安装mysql
    • Ubuntu24.04 中关于libaio的坑
  • 四、快速部署脚本

    一、部署环境

    软件:mysql8.4.3LTS

    系统:ubuntu24.04

    资源配置

    资源分配的大小与业务系统的体量有关系;所以没有固定

    CPU: 2核

    内存: 4 GB

    磁盘: 50 GB sda[系统盘] 50GB, 默认分区

    sdc[数据盘] 100GB 挂载点 /dcdata

    二、下载地址

    MySQL :: Download MySQL Community Server

    Mysql8.4.3LTS中离线部署的实现示例

    版本选择

    由于我的操作系统比较新, 通过 ldd --v编程ersion 命令查看glibc版本为2.39,所以选择了 glibc 2.28的版本

    **注:**如果操作系统支持的话还是选择新的;但是考虑兼容性和维护性,我个人的部署脚本中目前选择的还是glibc2.17的包;

    演示使用的是glibc2.28版本的包,后续我也将这个版本的Mysql部署到开发和测试环境中使用,组员一起体验他的稳定性和性能。

    三、部署详情

    1. 上传安装包

    将安装包上传到服务器中,使用root用户安装,上传路径

    /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz

    Mysql8.4.3LTS中离线部署的实现示例

    2. 解压软件包

    安装包上传后,执行解压到/dcsm目录下

    # 新建dcsm文件夹
    mkdir /dcsm
    tar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsm
    cd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql

    3. 安装mysql

    3.3.1 创建mysql用户与用户组

    查询系统中是否存在mysql用户

    cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c
    
    groupadd mysql && useradd -r -g mysql -s /bin/false mysql
    

    Mysql8.4.3LTS中离线部署的实现示例

    3.3.2 授权安装文件夹

    # 创建相关文件夹
    mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib
    
    # 授权
    chown -R mysql:mysql /dcsm/mysql && chown -R mysql:mysql /dcdata/mysql 
    
    

    Mysql8.4.3LTS中离线部署的实现示例

    3.3.3 安装libaio依赖 (坑)

    这个依赖是和你操作系统版本有关系的;

    ubuntu24.04 中关于libaio的坑

    该系统在安装后自带libaio

    Mysql8.4.3LTS中离线部署的实现示例

    虽然whereis搜不到libaio.so.1 这个文件; 但系统中确实安装了 libaio;

    这也是我后续初始化依然报错的原因;解决办法就是建立超链接,让mysql在初始化的时候找到这个命令

    ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
    

    Mysql8.4.3LTS中离线部署的实现示例

    这里介绍查找方法;

    找一台和你镜像一样,或者操作系统版本一样的可以联网的机器;

    apt search libaio

    Mysql8.4.3LTS中离线部署的实现示例

    /var/cache/apt/archives/ 下找到这个离线deb包; 在离线环境下就可以直接dpkg -i 安装这个依赖包了

    注:如果不安装此依赖,后续初始化mysql数据库时会提示缺少此依赖,官网教程中也特意提到要安装这个依赖。

    3.3.4 初始化Mysql数据库

    cd /dcsm/mysql 
    
    # 初始化
    bin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-errojavascriptr=/dcdata/mysql/log/mysqld.log

    Mysql8.4.3LTS中离线部署的实现示例

    注:这是ubuntu24.04 上的坑。系统的 libaio.so.1 软连接的地址不存在;

    解决方法就是重新建立一个软链接

    ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
    

    3.3.5 编辑my.cnf

    /etc/my.cnf

    [mysqld]
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    #innodb_buffer_pool_size = 128M
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    basedir=/dcsm/mysql
    datadir=/dcdata/mysql/data
    socket=/dcdata/mysql/lib/mysql.sock
    port=3306
    log-error=/dcdata/mysql/log/mysqld.log
    pid-file=/dcdata/mysql/run/mysqld.pid
    
    # 开启远程,类似dblink
    federated
    log_bin_trust_function_creators=1
    # 时间跟随本地
    log_timestamps=system
    # 允许最大连接数
    max_connections=2000
    # 关闭binlog日志
    skip-log-bin
    
    [mysql]
    socket=/dcdata/mysql/lib/mysql.sock

    3.3.6 配置环境变量

    ### 添加到系统服务中
    cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql  && chmod +x /etc/init.d/mysql
    
    ### 配置到环境变量中
    echo "/dcsm/mysql/lib" >>/etc/ld.so.conf &&
    echo "#MYSQL ENVIRONMENT" >>/etc/profile && 
    echo "export PATH=/dcandroidsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile && 
    source /etc/profile

    3.3.7 启动mysql

    ### 重新加载systemd的配置信息
    systemctl daemon-reload
    systemctl start mysql
    

    Mysql8.4.3LTS中离线部署的实现示例

    设置开机启动

    systemctl enable mysql

    3.3.8 登录mysql

    获取初始化密码

    grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}'
    

    Mysql8.4.3LTS中离线部署的实现示例

    3.3.8.1 创建root

    创建mysql账号root,并设置密码

    mysql --connect-expired-password -uroot -p

    然后输入上述密码;

    连上mysql后,修改root密码,

    ALTER USER ‘root'@‘localhost' IDENTIFIED WITH mysql_native_password BY ‘MyNewpass';

    Mysql8.4.3LTS中离线部署的实现示例

    原因参考:[MySQL8.0.34 开始被弃用mysql_native_password插件](https://dev.mysql.com/doc/refman/8.4/en/native-pluggable-authentication.html#:~:text=MySQL client programs in MySQL 8.4 (and later),what is desired%2C like this%3A %24> mysql --default-auth%3Dmysql_native_password)

    3.3.8.2 Plugin ‘mysql_native_password’ is not load 两种解决办法

    重新启动该插件(不推荐)

    具体做法就是修改my.cnf 文件

    Mysql8.4.3LTS中离线部署的实现示例

    重启mysql,即可生效;

    使用官方推荐方式

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    3.3.8.3 授权

    use mysql; update user set host = '%' where user ='root'; flush privileges;
    

    至此部署完成~

    四、快速部署脚本

    该脚本适用于快速部署使用,请注意安装包版本与系统版本;

    我用的是ubuntu24.04, mysql8.4.3tls

    vim deploy_mysql.sh

    #!/bin/bash
    
    ### 假设安装包已上传到/root下
    
    ### 解压软件包
    mkdir /dcsm
    tar -xvf /root/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz -C /dcsm
    cd /dcsm && mv mysql-8.4.3-linux-glibc2.28-x86_64/ mysql
    
    ### 创建 mysql 用户与用户组
    if [ $(cat /etc/passwd | cut -f1 -d':' | grep -w "mysql" -c) -eq 0 ]; then
        groupadd mysql && useradd -r -g mysql -s /bin/false mysql
    fi
    
    ### 授权安装文件夹
    mkdir -p /dcdata/mysql/log && mkdir -p /dcdata/mysql/data && mkdir -p /dcdata/mysql/run && mkdir -p /dcdata/mysql/lib
    chown -R mysql:mysql /dcsm/mysql && chown -R mysql:myjavascriptsql /dcdata/mysql
    
    ### 建立软链接
    ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1
    
    ### 初始化 Mysql
    cd /dcsm/mysql
    
    bin/mysqld --initialize --user=mysql --basedir=/dcsm/mysql --datadir=/dcdata/mysql/data --log-error=/dcdata/mysql/log/mysqld.log
    
    # 3.3.5 编辑 my.cnf
    cat <<EOF > /etc/my.cnf
    [mysqld]
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    #innodb_buffer_pool_size = 128M
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    basedir=/dcsm/mysql
    datadir=/dcdata/mysql/data
    socket=/dcdata/mysql/lib/mysql.sock
    port=3306
    log-error=/dcdata/mysql/log/mysqld.log
    pid-file=/dcdata/mysql/run/mysqld.pid
    
    # 开启远程,类似 dblink
    federated
    log_bin_trust_function_creators=1
    # 时间跟随本地
    log_timestamps=system
    # 允许最大连接数
    max_connections=2000
    # 关闭 binlog 日志
    skip-log-bin
    
    [mysql]
    socket=/dcdata/mysql/lib/mysql.sock
    EOF
    
    ### 配置环境变量
    cp /dcsm/mysql/support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql
    echo "/dcsm/mysql/lib" >>/etc/ld.so.conf
    echo "#MYSQL ENVIRONMENT" >>/etc/profile
    echo "export PATH=/dcsm/mysql/bin:/dcsm/mysql/lib:\$PATH" >>/etc/profile
    source /etc/profile
    
    ### 启动 mysql
    systemctl daemon-reload
    systemctl start mysql
    systemctl enable mysql
    
    ### mysql修改密码 并允许远程
    initial_password=$(grep 'temporary password' /dcdata/mysql/log/mysqld.log | awk '{print $NF}')
    mysql --connect-expired-password -uroot -p"$initial_password" <<EOF
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    use mysql; update user set host = '%' where user ='root'; flush privileges;
    EOF
    
    source /etc/profile
    

    脚本授权

    chmod +x deploy_mysql.sh

    执行部署

    ./deplo编程客栈y_mysql.sh

    Mysql8.4.3LTS中离线部署的实现示例

    连接成功;

    Mysql8.4.3LTS中离线部署的实现示例

     到此这篇关于Mysql8.4.3LTS中离线部署的实现示例的文章就介绍到这了,更多相关Mysql8.4.3LTS 离线部署内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号