生产环境mysql linux 平台通用二进制包安装部署

              mysql 是开源关系型数据库,在互联网、中小企业广泛流行,有大量的用户案例。mysql 支持windows、linux、unix 操作系统,目前生产环境推荐部署在linux 平台。

            mysql 在linux 平台提供rpm、deb 二进制安装包以及通用linux二进制包,生产环境推荐使用通用二进制包,测试环境可以使用rpm、deb 二进制安装包。自mysql 被oracle 公司收购之后,mysql 演化成社区版和商业版,社区版本可以免费使用,需用户自身承担技术支持以及使用过程中的技术风险,商业版需付费使用,oracle 公司提供官方技术支持,二者之间存在少许功能差异,这里主要介绍mysql 社区版 linux 平台通用二进制包生产环境部署最佳实践。

 

     1、官网下载最新版本,这里下载mysql 8.0.30,将下载下来的压缩包上传至服务器:

https://dev.mysql.com/downloads/mysql/

 

1665468152673

屏幕截图 2022-10-11 141429

  2、建立mysql所需的用户以及目录,目录需位于lvm卷且独立磁盘空间便于后续容量扩充:

useradd mysql -s /sbin/nologin
mkdir /data                          --data目录需位于lvm且独立磁盘空间便于后续容量扩充
mkdir -p /data/mysql/mysql-8.0.30/   -- 存放mysql 二进制文件
mkdir -p /data/mysql/data            --存放mysql 数据文件
mkdir -p /data/mysql/my.cnf.d        --存放mysql 参数文件
chown -R mysql:mysql  /data

 

3、解压缩mysql压缩包至/data/mysql/mysql-8.0.30/:

tar -Jxvf mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar.xz --strip 1 -C /data/mysql/mysql-8.0.30/

屏幕截图 2022-10-11 141917

屏幕截图 2022-10-11 141917

 

4、建立mysql参数文件,参数值根据服务器配置以及实际环境调整:

cd /data/mysql/my.cnf.d/
touch mysql-server.cnf

mysql 常用参数(根据实际环境设置值)

[mysqld]
user=mysql
datadir=/data/mysql/data --mysql数据文件目录
socket=/tmp/mysql.sock --mysql scoket文件
log-error=/data/mysql/data/mysqld.log --mysql 错误日志文件
pid-file=/data/mysql/data/mysqld.pid --mysqld 进程pid 文件
log-bin=mysql-bin --开启mysql binlog
sync_binlog=1 --每次事务的binlog都持久化到磁盘
binlog_format=row --mysql binglog 格式为row
expire_logs_days=7 --binlog 保留7天,
character-set-server=utf8mb4 --mysql数据库字符集
lower_case_table_names=1 --数据库名、表名不区分大小写
skip-name-resolve --禁用DNS解析, ip解析成主机名
max_connections = 1000 --最大连接数
lock_wait_timeout=60 --mysql metadata lock 超时值为60s
innodb_buffer_pool_size = 4G --buffer pool 内存大小
innodb_buffer_pool_instances=2 --通过将buffer pool划分成多个区域来减小内部锁争用来提高MySQL吞吐量
innodb_undo_logs = 128 --undo 回滚段个数,默认128
innodb_undo_tablespaces = 4 --undo 表空间的数量
innodb_undo_log_truncate=on --开启自动清理undo log
innodb_log_files_in_group = 4 --redo log文件数量
innodb_flush_log_at_trx_commit=1 --每次事务的redo log都直接持久化到磁盘
innodb_log_file_size=1GB --指定redo log 文件大小
innodb_lock_wait_timeout=50 --innodb 行锁超时为50秒,默认值
innodb_file_per_table=on --开启表独立表空间
innodb_print_all_deadlocks=on --开启死锁日志记录
innodb_rollback_on_timeout=on --事务超时后回滚整个事务

[client]
socket=/tmp/mysql.sock --mysql客户端默认使用的socket

5、mysql初始化,将会生成root初始密码,在/data/mysql/data/mysqld.log 中可以找到:

/data/mysql/mysql-8.0.30/bin/mysqld  --defaults-file=/data/mysql/my.cnf.d/mysql-server.cnf  --initialize  --user=mysql --basedir=/data/mysql/mysql-8.0.30  --datadir=/data/mysql/data

6、启动mysql,设置开机mysql 服务自启动:

启动mysql 服务:

touch   /data/mysql/data/mysqld.pid
chown  mysql:mysql  /data/mysql/data/mysqld.pid
/data/mysql/mysql-8.0.30/bin/mysqld_safe --defaults-file=/data/mysql/my.cnf.d/mysql-server.cnf  &

设置开机自启动mysql服务:

修改文件/data/mysql/mysql-8.0.30/support-files/mysql.server 调整如下参数值并将文件复制到/etc/init.d目录

basedir=/data/mysql/mysql-8.0.30/
datadir=/data/mysql/data
mysqld_pid_file_path=/data/mysql/data/mysqld.pid

cp  /data/mysql/mysql-8.0.30/support-files/mysql.server  /etc/init.d

ln -s /data/mysql/my.cnf.d/mysql-server.cnf /etc/my.cnf  --创建/etc/my.cnf 链接文件指向mysql 参数文件

chkconfig mysql.server on  --设置开机自启动mysql server 服务

7、使用mysql,客户端连接工具可以使用mysql workbench:

修改linux root账号path 环境变量,增加mysql 二进制文件路径:

PATH=$PATH:$HOME/bin:/data/mysql/mysql-8.0.30/bin

执行mysql 命令行客户端提示如下错误:

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

解决方式:yum install libncurses*   --yum 安装缺失的依赖库

修改mysql root 初始密码,并限制root账号登录ip客户端:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql->alter user 'root'@localhost' identified by 'password';      --生产环境尽可能限制root账号登录客户端ip地址 密码设置复杂一些

mysql> flush privileges;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

posted @   踏雪无痕2017  阅读(629)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示