mysql 是开源关系型数据库,在互联网、中小企业广泛流行,有大量的用户案例。
mysql 支持windows、linux、unix 操作系统,目前生产环境推荐部署在linux 平台。
mysql 在linux 平台提供rpm、deb 二进制安装包以及通用linux二进制包,生产环境推荐使用通用二进制包,测试环境可以使用rpm、deb 二进制安装包。自mysql 被oracle 公司收购之后,mysql 演化成社区版和商业版,社区版本可以免费使用,需用户自身承担技术支持以及使用过程中的技术风险,商业版需付费使用,oracle 公司提供官方技术支持,二者之间存在少许功能差异,这里主要介绍mysql 社区版 linux 平台通用二进制包生产环境部署最佳实践。
1、官网下载最新版本,这里下载mysql 8.0.3,将下载下来的压缩包上传至服务器:
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
4、解压缩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/
5、建立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=/run/mysqld/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]
innodb_buffer_pool_size = 4G –指定buffer pool 内存大小
innodb_buffer_pool_instaces=2 –通过将buffer pool划分成多个区域来减小内部锁争用来提高MySQL吞吐量
innodb_undo_logs = 128 –指定undo 回滚段个数,默认128
innodb_undo_tablespaces = 4 –指定undo 表空间的数量
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 –指定事务超时后回滚整个事务
6、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
7、启动mysql,设置开机mysql 服务自启动:
启动mysql 服务:
mkdir -p /run/mysqld
chown -R mysql:mysql /run/mysqld
/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=/run/mysqld
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 服务
8、使用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->alter user ‘root’@’dba-pc’ 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)
原文地址:http://www.cnblogs.com/oradba/p/16784013.html