一、优化 MySQL
1. 调整缓冲池大小
MySQL 的缓冲池用于缓存表和索引数据以减少磁盘 I/O。缓冲池大小默认为 128MB,但你可以根据你的系统资源和数据库工作负载来增加或减少缓冲池大小。
在 `my.cnf` 文件中,将以下行添加到 `[mysqld]` 部分以设置缓冲池大小:
```
innodb_buffer_pool_size = 1G
```
这会将缓冲池大小设置为 1GB,可以根据需要进行更改。
my.cnf文件在/etc/my.cnf使用vim打开编辑
2. 配置查询缓存
MySQL 的查询缓存可以缓存 SELECT 查询的结果,以避免重复查询。但是,查询缓存需要消耗大量内存,并且不适用于具有高并发查询的数据库。
如果你的数据库具有较高的并发查询,可以禁用查询缓存。在 `my.cnf` 文件中,将以下行添加到 `[mysqld]` 部分以禁用查询缓存:
```
query_cache_type = 0 配置项中的值=0 为关闭该选项 =1 为关闭该选项
query_cache_size = 0
```
3. 启用慢查询日志
慢查询日志用于记录执行时间超过阈值的查询,以便你可以识别和优化慢查询。你可以通过在 `my.cnf` 文件中添加以下行来启用慢查询日志:
```
slow_query_log = 1 #启用慢日志
slow_query_log_file = /var/log/mysql/mysql-slow.log #慢日志保存的目录
long_query_time = 2 #慢日志查询超过时2秒的查询记录到日志中
```
上述配置将慢查询日志保存在 `/var/log/mysql/mysql-slow.log` 文件中,并将执行时间超过 2 秒的查询记录到日志中。
4. 调整并发连接数
如果你的 MySQL 服务器同时处理大量连接,则需要调整并发连接数。在 `my.cnf` 文件中,将以下行添加到 `[mysqld]` 部分:
```
max_connections = 200
```
上述配置将最大连接数设置为 200,可以根据需要进行更改。
5. 配置字符集
为防止字符编码问题并保持与应用程序的兼容性,建议在 `my.cnf` 文件中配置字符集。以下是一个示例:
```
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci 注意:每个配置的编辑字段
[mysql]
default-character-set = utf8mb4
```
上述配置将客户端和服务器的字符集设置为 UTF-8,使用 `utf8mb4` 字符集和 `utf8mb4_unicode_ci` 排序规则。
6. 配置日志
为更好地排查故障和分析数据库行为,建议启用 MySQL 日志。以下是一个示例:
```
[mysqld]
log-error = /var/log/mysql/error.log
general_log_file = /var/log/mysql/mysql.log
general_log = 1
```
上述配置将错误日志记录到 `/var/log/mysql/error.log` 文件中,将通用日志记录到 `/var/log/mysql/mysql.log` 文件中。
这些是一些通用的优化建议,你可以根据你的系统和数据库工作负载进行某些微调。注意,对 MySQL 配置文件进行任何更改之前,务必备份原始文件。
配置完毕重启服务
systemctl restart mysqld
数据库备份
MySQL 5.7 数据库备份可以使用多种方法,以下是其中两种常用的方法:
1. 使用 mysqldump
`mysqldump` 是 MySQL 自带的备份工具,可以备份整个数据库或某些表,也可以备份单个查询的结果。使用以下命令生成整个数据库的备份:
```
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
```
此命令将整个数据库备份为一个 SQL 文件,并保存到指定的备份文件(可以自定义)中。你需要输入你的 MySQL 用户名和密码。
为了保障密码的安全,可以不使用明文密码做备份
mysqldump -u root -p --databases mydb > mydb.sql
安全备份完毕
如果你只想备份某些表,请使用以下命令:
```
mysqldump -u 用户名 -p 数据库名 表名1 表名2 > 备份文件.sql
```
如果你想备份单个查询的结果,请使用以下命令:
```
mysql -u 用户名 -p -e "查询语句" 数据库名 > 备份文件.sql
客户端远程连接