mysql线上安装部署

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 线上部署考虑因素: 版本选择,5.1、5.5还是5.6?5.1官方已不再维护,不建议5.5是现在线上使用最多的版本5.6最新的稳定版,已发布3年多,现在使用的也很多分支选择,官方社区版?persona server ? Mariadb ?...

线上部署考虑因素:
版本选择,5.1、5.5还是5.6?

5.1官方已不再维护,不建议
5.5是现在线上使用最多的版本
5.6最新的稳定版,已发布3年多,现在使用的也很多
AI 代码解读

分支选择,官方社区版?persona server ? Mariadb ?

官方版 推荐使用
persona server 管理性能上有改进,并且完全兼容mysql
Mariadb 是mysql原班人马开发的
AI 代码解读

安装方式,包安装?二进制包安装源码安装?

线上推荐使用二进制包安装
AI 代码解读

路径配置,参数配置(尽量模板化、标准化)

一个实例多个库或多个实例单个库?

如果只部署一个实例,因为mysql是单进程的,对多核的利用不充分,导致资源浪费
多实例的方式,是现在主流的线上部署方式
AI 代码解读

二进制安装mysql
1,下载软件安装包:

[root@miles software]# wget http://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
[root@miles software]# ll
total 305520
-rw-r--r--. 1 root root 312845162 Nov  2 16:09 mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
AI 代码解读

2.解压放到指定目录(比如Usmoca)
[root@miles software]# tar zxf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz

[root@miles software]# mv mysql-5.6.27-linux-glibc2.5-x86_64 /usr/local/

[root@miles local]# mv mysql-5.6.27-linux-glibc2.5-x86_64/ mysql5.6.27
3.将MySQL目录放到PATH中

[root@miles bin]# vi /etc/profile
export MYSQL_HOME=/usr/local/mysql5.6.27
export PATH=$MYSQL_HOME/bin:$PATH
export C_INCLUDE_PATH=$MYSQL_HOME/include
export LIBDIR=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib:$MYSQL_HOME/lib
export LD_RUN_PATH=/usr/local/lib

[root@miles bin]# source /etc/profile
AI 代码解读

4,初始化实例,编辑配置文件并启动

初始化实例
[root@miles scripts]# pwd
/usr/local/mysql5.6.27/scripts
[root@miles scripts]# ./mysql_install_db  -h  
--basedir=path       The path to the MySQL installation directory.
--datadir=path       The path to the MySQL data directory.
                       If missing, the directory will be created, but its
[root@miles scripts]# ./mysql_install_db  --basedir=/usr/local/mysql5.6.27/  --datadir=/data/mysql/
生成的实例的数据文件
[root@miles mysql]# pwd
/data/mysql
[root@miles mysql]# ll
total 110604
-rw-rw----. 1 root root 12582912 Dec  1 20:11 ibdata1
-rw-rw----. 1 root root 50331648 Dec  1 20:11 ib_logfile0
-rw-rw----. 1 root root 50331648 Dec  1 20:11 ib_logfile1
drwx------. 2 root root     4096 Dec  1 20:11 mysql
drwx------. 2 root root     4096 Dec  1 20:11 performance_schema
drwx------. 2 root root     4096 Dec  1 20:11 test

编辑配置文件
[root@miles mysql]# cp /usr/local/mysql5.6.27/my.cnf ../
[root@miles mysql]# cd ..
[root@miles data]# vi my.cnf 
basedir =/usr/local/mysql5.6.27
datadir =/data/mysql/
port =3333
server_id =3333
socket =/data/mysql.sock

join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M  

character-set-server=utf-8
max_connections=2000

log_bin=/data/mysql/mysql-bin
expire_logs_days=10
max_binlog_size=100M
binlog_format=ROW

innodb_flush_log_trx_commit=2
sync_binlog=0

tmpdir=/data/mysql/
log-error=/data/mysql/error.log

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
port =3333
socket =/data/mysql/mysql.sock

[mysqld_safe]
ledir=/usr/local/mysql5.6.27/bin
nice=0
user=mysql

[mysqldump]
quick
quote-names
max_allowed_packet=16M
default-character-set=utf8

[mysql]
default-character-set=utf8
"my.cnf" 62L, 1428C written

启动mysql
[root@miles data]# /usr/local/mysql5.6.27/bin/mysqld_safe --defaults-file=/data/my.cnf  &

[root@miles ~]# ps -ef |grep mysql
root       3083   1545  0 07:59 pts/1    00:00:00 /bin/sh /usr/local/mysql5.6.27/bin/mysqld_safe --defaults-file=/data/my.cnf
mysql      3431   3083  0 07:59 pts/1    00:00:04 /usr/local/mysql5.6.27/bin/mysqld --defaults-file=/data/my.cnf --basedir=/usr/local/mysql5.6.27 --datadir=/data/mysql/ --plugin-dir=/usr/local/mysql5.6.27/lib/plugin --user=mysql --log-error=/data/mysql/error.log --pid-file=/data/mysql//miles.pid --socket=/data/mysql.sock --port=3333
AI 代码解读

5,账户安全设置

[root@miles ~]# mysql -uroot --socket=/data/mysql.sock
mysql> select user,host,password from mysql.user;
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | localhost |          |
| root | miles     |          |
| root | 127.0.0.1 |          |
| root | ::1       |          |
|      | localhost |          |
|      | miles     |          |
+------+-----------+----------+
6 rows in set (0.01 sec)


mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.01 sec)

mysql> delete from mysql.user where host <>'localhost';
Query OK, 3 rows affected (0.00 sec)

mysql> select user,host,password from mysql.user;
+------+-----------+----------+
| user | host      | password |
+------+-----------+----------+
| root | localhost |          |
+------+-----------+----------+
1 row in set (0.00 sec)


mysql> set password for root@'localhost' = password('beijing');
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 可以看到test数据库存在安全隐患,任何用户都可以在test进行操作
mysql> select * from mysql.db \G
*************************** 1. row ***************************
                 Host: %
                   Db: test
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
*************************** 2. row ***************************
                 Host: %
                   Db: test\_%
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
2 rows in set (0.00 sec)

mysql> delete from mysql.db;
Query OK, 2 rows affected (0.00 sec)

mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
AI 代码解读

编译安装MySQL
1.下载Mysql源码安装包

[root@miles software]# ll
total 32548
-rw-r--r--. 1 root root 33327156 Dec  2 11:58 mysql-5.6.27.tar.gz
AI 代码解读

2 . 安装必要包( make cmake bison-devel ncurses-devel build-essential)

[root@miles software]# yum install make cmake bison ncurses build-essential
AI 代码解读

3.Cmake配置mysq编译选项,可以定制需要安装的功能,编译选项参考:
cmake 使用说明

[root@miles mysql-5.6.27]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3307   \
-DMYSQL_UNIX_ADDR=/data/mysql.sock  \
-DWITH_INNOBASE_STORAGE_ENGINE=1    \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1   \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1  \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
AI 代码解读

4 . make & & make Install

[root@miles mysql-5.6.27]# make && make install
AI 代码解读

以下两部与二进制安装相同,请参照上文
5.初始化实例,编辑配置文件并启动
6.账户安全设置

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
1
0
0
1
分享
相关文章
MySQL原理简介—3.生产环境的部署压测
本文介绍了Java系统和数据库在高并发场景下的压测要点: 1. 普通系统在4核8G机器上每秒能处理几百个请求 2. 高并发下数据库建议使用8核16G或更高配置的机器 3. 数据库部署后需进行基准压测,以评估其最大承载能力 4. QPS和TPS的区别及重要性 5. 压测时需关注IOPS、吞吐量、延迟 6. 除了QPS和TPS,还需监控CPU、内存、磁盘IO、网络带宽 7. 影响每秒可处理并发请求数的因素包括线程数、CPU、内存、磁盘IO和网络带宽 8. Sysbench是数据库压测工具,可构造测试数据并模拟高并发场景 9. 在增加线程数量的同时,必须观察机器的性能,确保各硬件负载在合理范围
172 72
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
280 26
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
110 5
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
202 3
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
849 1
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等