最近工作室来了几个新同事,帮他们把开发环境搭起来时发现,连装个MySQL 5.7都能翻车。有的装完找不到临时密码,有的服务死活起不来,还有的初始化之后data目录都没生成就以为成功了。想想也挺正常,官方安装向导虽然点几下就能完成,但每个界面背后的参数含义没搞清楚,换台机器、换个安装方式立马抓瞎。这篇就按我平时给团队新人和项目组同事讲的口径,从头到尾捋一遍:怎么下载安装包、怎么选安装方式、MSI和ZIP绿色版以及Linux部署分别怎么操作,每一步干什么、为什么这么干,尽量写得细一点。目标就一个,让你按着这份教程走完,MySQL 5.7能干净利落地跑起来。
1. 安装前需要搞清楚的三个问题
1.1 为什么现在还在用MySQL 5.7
先聊两句版本背景。MySQL 5.7是2015年发布的GA版本,距离现在确实有些年头了,但很多公司的存量系统、业务代码、迁移脚本都跑在5.7上,不是不想升,而是升级成本摆在那里。5.7本身算是MySQL历史上一个很关键的过渡版本,它把默认存储引擎彻底确定为InnoDB,加入了JSON数据类型、Generated Columns、查询优化器的大幅改进,还引入了Performance Schema的完善和sys schema,性能和稳定性相比5.6提升非常明显。
用5.7还有一个实际原因:它和8.0在认证方式、SQL模式、字符集默认值上有差异。8.0默认的认证插件是caching_sha2_password,一些老版本的语言驱动、中间件、客户端工具不支持;8.0还改了部分SQL语法和保留字,老项目迁移过去很可能踩兼容性坑。而5.6又太老,虚拟列、JSON这些常用能力都不具备。所以5.7处在了一个"功能够用、生态兼容好、踩坑资料多"的舒适位置。当然,如果是全新项目且控制力强,直接上8.0完全没问题,但如果你在维护老项目、或者需要和团队现有环境保持一致,5.7依然是当前阶段非常务实的选择。
1.2 装之前想清楚用哪种安装方式
MySQL 5.7在Windows和Linux上最常见的安装方式有这么几种,我习惯先帮人把方案定下来再动手,免得装到一半发现不是自己想要的环境。
| 安装方式 | 适用场景 | 特点 |
|---|---|---|
| Windows MSI安装向导 | 新手、单机开发环境 | 图形化,自动配服务和环境变量,省心但"黑盒"成分多 |
| Windows ZIP免安装版 | 开发/测试环境、需要快速多实例部署 | 解压即用,配置全在自己手里,方便迁移和克隆 |
| Linux通用二进制包 | 生产/测试服务器 | 可控性强,目录、权限、配置完全自定义 |
| Linux系统自带包管理器(yum/apt) | 快速部署、只求能用 | 安装最省事,但版本可能不是你想要的,目录结构也分散 |
我个人的建议是:Windows上如果只是开发自用,MSI向导最省事,但如果你以后要维护多套MySQL实例、或者给项目做环境标准化,ZIP绿色版更值得花半小时走一遍;Linux上建议优先用官方通用二进制包,版本确定、目录自己说了算,后面做备份和迁移都清楚。
1.3 动手之前先检查这几项
装之前先把环境检查一遍,真的能省掉后面很大一部分排查功夫。
第一,3306端口是不是被占了。命令行执行netstat -ano | findstr 3306(Windows)或ss -lntp | grep 3306(Linux),有输出说明端口被占用,需要先处理或者后面改端口。注意,这里占端口的可能不是MySQL残留,也可能是别的程序,比如某些开发工具内置的数据库组件。
第二,系统里有没有装过其他版本或残留的MySQL。如果有,先彻底卸载或者至少停掉旧服务,避免新装的服务起不来、配置互相干扰。检查Windows服务列表里有没有MySQL开头的服务,注册表里的残留也建议清干净。
第三,Windows用户确认一下运行库。MSI安装向导在依赖检查环节可能会提示缺少VC++运行库,直接根据提示装好再继续。这个坑几乎每周都有人踩,不是MySQL本身的问题,是系统环境缺组件。
第四,磁盘空间不用太多,数据目录留够预期空间就行。建议单独规划一个数据目录,不要放在C盘系统盘,避免系统重装或崩溃时数据跟着一起丢。
2. 下载安装包的正确姿势
2.1 官方下载流程与版本选择
下载MySQL 5.7的安装包,我建议认准官方下载入口。进入官网后,找到下载页面的MySQL Community Server,这一步要注意两个点。
第一是版本号别选错。社区版页面上默认会让你选最新版本,需要手动切换到5.7系列,选择最新的5.7.x小版本。小版本号一般选最高的就行,因为包含了很多安全修复和bug修复,同大版本下小版本升级带来的兼容性问题极小。
第二是操作系统和文件类型。Windows平台会给出两个安装包:一个是mysql-installer-web(在线安装器,体积小,安装时按需下载组件),一个是mysql-installer-community(离线完整包,包含了所有组件)。我建议下载离线完整版,现场演示、内网离线环境都能用。ZIP Archive那个绿色版我也建议顺手下载一份,后面会单独介绍怎么用它。Linux平台选择Linux-Generic,下载对应的glibc版本的tar.gz包即可。
下载页面上文件不少,新手容易懵。简单说一下:带"debug"的不要下,那是调试版;带"test"的是测试组件包,不需要;选基础包就行。下载完成后建议核对一下文件大小,和页面标注的字节数是否对得上,防止下载中断或损坏。
2.2 安装包文件结构说明
MSI安装包就是一个图形化安装程序,下载后双击就能跑。ZIP绿色版麻烦一点,解压后你会看到这样的目录结构:bin目录放的是可执行文件,包括mysqld(服务器程序)、mysql(客户端工具)、mysqldump(备份工具)等;share目录放错误消息和字符集支持文件;lib目录是运行库;docs目录是文档。需要说明的是,5.7版本的压缩包里默认没有data目录,也没有my.ini配置文件,这两个东西都要自己创建,这也是绿色版最核心的动手部分。
2.3 下载后的环境预处理
在开始安装之前,我习惯先把几件事处理掉。
Windows下如果装了杀毒软件,安装或注册服务时可能弹提示,直接放行即可,不存在安全问题,因为这是官方软件。如果系统开启了防火墙,安装MySQL服务时通常会弹窗询问是否允许3306端口访问,这个时候选"允许"就行,否则本地连接没问题,但局域网内其他机器连不上。
Linux下则需要确认系统里是否已经装了mysql相关的包,执行rpm -qa | grep mysql或dpkg -l | grep mysql检查。有的话先卸载干净,不然多个版本共存很容易出现库文件冲突。还要确认glibc版本是否匹配,执行ldd --version看看系统glibc版本,5.7官方包对glibc版本要求并不苛刻,CentOS 7以上的系统基本都能跑。
3. Windows MSI安装向导图解
3.1 安装类型与组件选择
双击MSI安装包后,第一个关键选择是Setup Type。安装向导通常会给三个选项:Developer Default(开发者默认)、Server only(仅安装服务器)、Custom(自定义)。这里我强烈建议选Server only或Custom。
Developer Default看着省事,但它会额外安装MySQL Workbench、Visual Studio插件等一系列组件。这些组件不是不好,而是多数人根本用不到,白白占磁盘空间和系统资源。如果你只需要一个数据库实例,选Server only就够了;如果你还想有个图形化工具管理数据,可以选Custom,然后在组件列表里手动勾选MySQL Server和MySQL Workbench两项。
组件选择页里还有几个容易忽略的选项。MySQL Server本身必选,它是核心服务;如果要通过ODBC/JDBC方式让其他程序连数据库,相关连接器组件可以勾上,但如果不是数据库开发场景,可以先不装,后面需要时再单独装也不迟。安装路径我建议放在比如D:\MySQL\这类自己规划的目录下,不要用默认的C盘路径,原因前面说过,方便后续维护和重装系统时保留数据。
3.2 端口、认证方式和root密码配置
组件选完之后进入配置环节,第一个窗口是Type and Networking。端口默认3306,一般不用改,除非端口被占或你有多实例需求。勾上"Show Advanced Options"可以打开更多细节选项,新手可以不勾,保持默认。安装向导会试图添加Windows防火墙规则,建议允许,否则后面远程连接时要自己手工加规则,多一事不如少一事。
接下来是root密码设置。这一步是整个安装过程中最重要的环节,也是新手最容易卡住的地方。MySQL 5.7安装向导要求root密码至少包含数字、大小写字母、特殊字符中的三类,且长度不少于8位。我见过很多人在这里设置一个非常复杂的密码然后彻底遗忘,或者设置一个过于简单的密码导致安装向导不让你过。我的建议是装好之后立刻用一个密码管理工具记录下来,至少也要写在自己本地笔记里,不要只存在脑子里。
同时,这一步还可以额外添加MySQL用户。如果你需要创建多个账号而不是所有连接都用root,可以在这里添加,也可以等装完后用SQL语句来创建,完全不必着急。认证方式这里要注意一点:5.7安装向导和8.0不同,8.0会让你选择认证插件,5.7默认就是mysql_native_password,这也正是老驱动能兼容5.7的原因。如果以后要升级8.0,最大的坑就在这个认证插件上。
3.3 Windows Service配置与应用执行
继续往下是Windows Service配置窗口。这里决定MySQL是否以Windows服务方式运行、服务名是什么、是否开机自启。
- Start the MySQL Server at System Startup:建议勾上,除非你刻意不想让数据库开机自动启动。
- Run Windows Service as Standard System Account:保持默认的NT Authority NetworkService账户就行,不建议用本地系统账户或自定义账户,权限过大或过小都可能带来麻烦。
- Windows Service Name:默认MySQL57或MySQL,可以自己改,但建议保持默认知名度更高,否则后续命令行操作时容易忘。
Apply Configuration这一步是整个向导的最后执行阶段,它会根据前面的配置生成配置文件、初始化数据目录、安装Windows服务、启动MySQL。这里如果报错,最常见的两个原因:一是前置检查没过(比如缺运行库),二是路径包含中文或特殊字符导致初始化失败。看到错误先别慌,回到前面的步骤修改路径或处理依赖,再重新执行Apply即可。
执行完成后会显示一个Finish页面,此时MySQL服务应该已经在运行了。可以在命令行输入net start查看Windows服务列表,确认包含你刚才设置的服务名。
4. Windows免安装版(ZIP)部署
4.1 目录规划与my.ini编写
ZIP免安装版是我个人非常推荐的方式,尤其在需要快速搭建多个环境或者想彻底搞清楚MySQL目录结构的时候。解压ZIP包后得到一个文件夹,比如mysql-5.7.44-winx64,我习惯把它改名或放到一个干净的路径下,比如D:\mysql57。
然后需要在根目录新建一个配置文件my.ini。MySQL在Windows下启动时,默认会按顺序查找配置文件位置,如果你没有配置文件,它会使用编译时的默认参数,数据目录默认就在安装目录下,字符集可能是latin1,跑起来会发现中文乱码,所以自己建配置文件是必须的。
一个最基础、能跑起来的my.ini长这样:
[mysqld] basedir = D:/mysql57 datadir = D:/mysql57/data port = 3306 character-set-server = utf8mb4 collation-server = utf8mb4_general_ci default-storage-engine = InnoDB定位到关键参数解释一下。basedir是MySQL安装根目录,datadir是数据目录,这两个路径建议都用正斜杠或双反斜杠,避免转义问题。port是服务监听端口。character-set-server和collation-server设置默认字符集,这里用utf8mb4而不是utf8,因为utf8mb4才是完整的UTF-8支持,能存emoji以及一些生僻字,utf8只是utf8mb4的子集。default-storage-engine指定默认存储引擎为InnoDB。
这里有一个非常隐蔽但又极其常见的坑:my.ini文件保存时编码一定要用ANSI或系统默认编码,不要用UTF-8带BOM的格式。如果配置文件里有中文注释并且保存为UTF-8 BOM,MySQL在启动时解析配置会报"unknown variable"错误,服务直接起不来。别问我怎么知道的,我帮人排查这个问题不下十次。所以更稳妥的做法是:my.ini里尽量不要写中文注释,要么用英文,要么干脆不写,路径用错了看日志也容易定位。
4.2 初始化数据目录
ZIP包解压后没有data目录,必须手动初始化。5.7的初始化命令和5.6完全不同,5.6直接运行mysqld就会自动创建数据目录并生成初始数据,5.7以后必须显式执行初始化命令。这个变化让很多从5.6时代过来的人栽了跟头。
用管理员权限打开命令行,进入MySQL的bin目录,执行:
mysqld --defaults-file=D:/mysql57/my.ini --initialize-insecure这里解释一下两个关键点。
第一,--initialize-insecure表示初始化数据目录,同时生成一个root用户且密码为空。相比另一个参数--initialize,它不会生成随机临时密码。为什么推荐用insecure?因为--initialize生成的临时密码会写在日志文件里,新手找不到日志或者复制密码时容易出错。而空密码可以直接登录,进去后再用SQL命令修改密码,整个过程完全可控。注意我说的是初始化时root密码为空,不代表最终密码为空,后面必须修改。
第二,--defaults-file参数用于指定配置文件路径。MySQL在Windows下读取配置文件的顺序其实有点迷,尤其是在同时存在多个配置文件或多个实例的时候,系统可能读到你意想不到的配置。在命令行里明确指定配置文件是最靠谱的做法。初始化完成后,检查data目录是否生成,里面应该有mysql、performance_schema、sys等文件夹,以及一堆.ibd和.opt文件,说明初始化成功。
4.3 注册Windows服务与启动
数据目录初始化成功后,接下来把mysqld注册成Windows服务,这样就能用net start启动、net stop停止,并且可以设置开机自启。
同样在管理员命令行下执行:
mysqld --defaults-file=D:/mysql57/my.ini --install MySQL57这条命令把mysqld注册为一个名为MySQL57的Windows服务。注意,服务注册完并不会自动启动,还需要手动启动:
net start MySQL57启动成功会提示"MySQL57 服务正在启动"以及"服务已经启动成功"。这时候可以用客户端工具验证连接:
mysql -uroot -p因为初始化时用了--initialize-insecure,root密码为空,直接回车就能登录。登录后第一步就是修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; FLUSH PRIVILEGES;修改完后退出重新登录,用新密码验证一次。这个流程走通,整个ZIP绿色版的部署就完成了。
这里额外补充一个服务注册顺序的问题。如果先执行net start再执行mysqld --install,会提示服务已存在或者失败,因为服务还没注册。反之,如果服务注册成功但启动失败,先用mysqld --remove MySQL57把服务移除,排查好问题再重新注册,不要频繁叠加,会让系统服务列表变乱。
5. Linux通用二进制部署
5.1 系统用户与目录准备
Linux下用官方通用二进制包部署MySQL 5.7,能让你对目录结构和配置有非常强的掌控力。我不太推荐直接用yum或apt装,因为系统源里的版本可能不是你预期的,而且目录分散,后面备份迁移时容易漏。
首先下载好Linux通用二进制包,比如mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz,建议放在/usr/local/src下。解压:
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ mv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql下一步是创建mysql系统用户,用于运行MySQL服务。强烈建议不要用root用户直接跑MySQL,因为root权限过大,万一数据库被入侵或者配置错误,影响范围是整个系统。创建专用用户是基本的安全底线:
groupadd mysql useradd -r -g mysql -s /bin/false mysql-r表示系统账号,-s /bin/false表示禁止这个用户登录shell,最小化权限。然后创建数据目录并设置属主:
mkdir -p /data/mysql chown -R mysql:mysql /data/mysql5.2 my.cnf配置
Linux下MySQL默认读取的配置文件是/etc/my.cnf,也支持在启动命令里指定--defaults-file。为了统一管理,我会在/etc下建一个my.cnf,指向自定义的数据目录。
一个基础生产可用的my.cnf配置参考如下:
[mysqld] basedir = /usr/local/mysql datadir = /data/mysql port = 3306 socket = /tmp/mysql.sock character-set-server = utf8mb4 collation-server = utf8mb4_general_ci pid-file = /data/mysql/mysql.pid log-error = /data/mysql/mysql.log这几个路径参数很重要。basedir是安装目录,datadir是数据目录,socket是本地连接用套接字文件路径,pid-file是进程PID文件路径,log-error是错误日志路径。把这些文件统一放在数据目录下,好处是查日志方便,备份数据目录时连日志一起带走,恢复环境时一眼就能看清楚全貌。
配置写好后同样要注意保存文件的编码,Linux下通常不存在BOM问题,但文件权限要注意,/etc/my.cnf一般root可写即可,MySQL启动时会用mysql用户读取,不会因为权限问题拒绝。
5.3 初始化、启动与开机自启
数据目录和配置准备好了,执行初始化命令:
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql这里同样用--initialize-insecure生成空密码的root账号,避免在日志里翻临时密码。--user=mysql让初始化进程以mysql用户身份运行,确保生成的数据目录文件属主都是mysql。
初始化成功后会看到data目录下生成一堆系统文件,同时/data/mysql/mysql.log里记录了初始化日志。注意看日志有没有"ERROR"级别的内容,有的话别急着往下走,先解决掉,比如目录权限不对、glibc版本不兼容这些都会在日志里体现。
启动MySQL有两种方式,我建议先学习用mysqld_safe启动,因为它会在mysqld进程挂掉后自动重启,适合排查启动问题:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &启动后确认进程状态和监听端口:
ps -ef | grep mysqld ss -lntp | grep 3306然后设置开机自启。把这行加入/etc/rc.local,并确保rc.local有执行权限:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &登录验证和改密码的操作和Windows绿色版完全一致:
/usr/local/mysql/bin/mysql -uroot -p空密码进入后立即修改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; FLUSH PRIVILEGES;Linux环境还有一个容易被忽略的步骤:把MySQL的bin目录加入PATH。在/etc/profile末尾追加:
export PATH=$PATH:/usr/local/mysql/bin执行source /etc/profile后,直接输入mysql、mysqldump等命令就能调用,不用每次敲完整路径。
6. 常见问题排查与避坑实录
6.1 服务启动失败的三步排查法
MySQL装好启动不了,是遇到最多的问题,没有之一。不管Windows还是Linux,我通常按以下三步来排查。
第一步,看错误日志。Windows的MSI安装和ZIP部署,错误日志默认写在数据目录下,文件名为.err后缀或my.ini里log-error指定路径。Linux下同样在配置里指定了log-error路径。日志是排查问题的第一手信息,里面写着拒绝启动的具体原因,比如权限问题、端口被占、配置文件路径错误、innodb引擎崩溃等。很多人一遇到启动失败就卸载重装,这是最浪费时间的行为,因为根本问题没有解决。
第二步,确认权限和数据目录状态。Windows下确认my.ini所在路径、basedir和datadir是否真实存在,服务账户对data目录是否有完整读写权限。Linux下确认数据目录属主和属组是mysql:mysql,执行chown -R mysql:mysql /data/mysql修复。如果你初始化时用root跑的,后面再切换成mysql用户启动,大概率会因为权限不够起不来。
第三步,检查端口占用和进程残留。在Windows命令行执行netstat -ano | findstr 3306,看占用端口的PID是什么,如果是之前残留的mysqld进程,任务管理器结束它再启动。Linux下执行ps -ef | grep mysqld,有残留进程就先kill掉,再启动新的实例。多实例部署时还要特别注意每个实例的端口和socket文件路径不能冲突。
提示:MySQL 5.7的默认配置文件查找顺序是/etc/my.cnf、/etc/mysql/my.cnf、basedir下my.cnf等。如果多个位置存在配置,MySQL会分段读取合并,容易产生"我以为用了这个配置,实际是另一个生效"的情况。排查问题时用
mysqld --print-defaults看看实际生效的配置参数,非常管用。
6.2 忘记root密码的应急处理
root密码忘了,最通用的方案是跳过授权表重启服务,然后重置密码。这个操作在Windows和Linux上流程一样。
第一步,停止MySQL服务。Windows执行net stop MySQL57,Linux用kill结束mysqld进程,或通过systemctl stop停止。
第二步,以跳过授权表方式启动。Windows命令行下执行:
mysqld --defaults-file=D:/mysql57/my.ini --skip-grant-tablesLinux下执行:
mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables --user=mysql &注意这里不要加--daemonize之类参数,要让进程在前台或后台保持运行,同时不要关闭当前窗口。此时MySQL不验证任何密码,随便输入内容都能登录。
第三步,连接MySQL并清空密码。打开另一个终端输入:
mysql -uroot -p提示输密码时直接回车,进入后执行:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;首先要执行FLUSH PRIVILEGES是为了让grant表重新生效,否则ALTer语句可能报错。改完密码后正常退出,然后重启一次MySQL服务,恢复到正常启动模式。记得把刚才直接以--skip-grant-tables启动的进程停掉,再以正常方式启动。
6.3 客户端远程连接不上数据库
数据库服务本身运行正常,但从别的机器连不上,这是最常见的网络层面问题。排查点按以下顺序来。
第一,服务是否监听在所有地址上。默认情况下MySQL只监听localhost,也就是只能本机连接。要允许远程访问,需要在my.ini或my.cnf的[mysqld]段设置:
bind-address = 0.0.0.0这表示监听所有网卡地址。改完必须重启MySQL服务才生效。
第二,账号的host权限。MySQL的用户权限是"账号@主机"维度。默认root只允许localhost连接,远程连不上往往不是网络问题,而是账号授权问题。需要执行:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; FLUSH PRIVILEGES;也可以创建专用账号,只给需要的库的权限,更安全。需要注意,修改权限后要执行FLUSH PRIVILEGES,让授权表立即生效。
第三,防火墙放行端口。Windows下检查防火墙规则,确保3306端口有入站规则;Linux下看iptables或firewalld状态,执行firewall-cmd --permanent --add-port=3306/tcp并reload,或临时用iptables加规则。
这三个点都确认无误还连不上,再用telnet或nc测试端口连通性,看是到不了服务端还是服务端根本没响应。
6.4 关于字符集的一个细节坑
有读者反馈按教程装完MySQL后,插入中文发现乱码。大部分原因是配置里没设置character-set-server,导致默认字符集是latin1。解决办法是改配置文件设置utf8mb4,然后重建数据库,或者用ALTER DATABASE修改已有库的字符集。还有一个小众但容易踩坑的情况:如果你的应用程序连接串里没有指定characterEncoding,即使服务端字符集是utf8mb4,客户端写入也可能乱码。所以字符集这件事是"服务端配置、连接串、表结构的字段字符集"三层都要对齐,缺一层都可能出问题。连接串里统一加上characterEncoding=utf8mb4是稳妥做法。
6.5 表数据备份与快速迁移建议
部署完成后,数据安全这件事一定要提前想好。MySQL 5.7最稳妥的逻辑备份方式是用自带的mysqldump。平时养成习惯,做结构变更或升级前先跑一次逻辑备份,成本很低。定时任务配合mysqldump做每日全量备份,备份文件通过binlog增量补齐,这是最基础的备份策略。对于数据量大的场景,可以考虑用xtrabackup做物理备份,但那是另一个话题了。至少在你文章里看到这行字的时候,先确认你的MySQL有没有做任何形式的备份,没有的话现在就去跑一次完整备份。
我个人在实际操作中的体会是:装MySQL这件事,看起来就是个"下载、下一步、完成"的体力活,但真正帮助你应对复杂问题的,永远是那些底层概念——数据目录在哪、配置文件在哪、日志在哪、进程和端口状态是什么样的。把这四样东西装进脑子里,以后再遇到MySQL起不来、连不上、参数改了不生效这类问题,就不会束手无策了。最后再分享一个我自己带人的习惯:先在非生产环境把ZIP绿色版完整装一遍,什么都不依靠安装向导,全部手工完成一遍,之后再回到MSI安装你会有一种"全都看透了"的感觉。这个内容后续还可以继续往深了扩展,比如主从架构怎么搭、my.cnf怎么按机器配置调优、慢查询日志怎么分析,那些都是建立在今天这套干净环境之上的。