生产环境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/
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/
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)
本文来自博客园,作者:踏雪无痕2017,转载请注明原文链接:https://www.cnblogs.com/oradba/p/16784013.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)