MySQL 查询与操作
增加数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2)
ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2);
查询数据
SELECT 表头名 FROM 库名.表名 WHERE 条件;
分组
select 表头名 from 库名.表名 where 条件 group by 表头名;
聚集函数
ORDER by sum min max count asc(升序) desc(降序)
分页查询
SELECT 表头名 FROM 库名.表名 LIMIT 数量 OFFSET 数量;
修改表信息
UPDATE 库名.表名 SET key=value WHERE 条件;
清空表
DELETE FROM 库名.表名;
权限
grant privileges On 库名.表名 to “用户名@主机名”;
SHOW GRANTS FOR 'username'@'host';
数据备份与恢复
备份 mysqldump -uroot -p密码 库名 > *.sql
恢复 mysql -uroot -p密码 库名 < *.sql
### 完全备份
xtrabackup -host=主机ip --user=用户名 --password=密码 --backup --target-dir=备份目录 --datadir=数据库目录
### 增量备份
xtrabackup -host=主机ip --user=用户名 --password=密码 --backup --target-dir=备份目录 --incremental-basedir=参考目录 --datadir=数据库目录
增量恢复 xtrabackup --copy-back-target-dir=/完全备份目录
差异备份 差异备份是指备份自上一次完全备份之后发生变化的数据。也用 xtrabackup。
Redis 默认端口为 6379
## 持久机制(备份)
- RDB:恢复快,但数据可能不完整。
- AOF:记录写操作,数据可靠性高。
MySQL 主从复制
1. 设置服务器 IP(解决主从不一致问题)。
2. 在主服务器上为从设置用户(权限)。
2.当从服务器连接到主服务器时,主服务器会创建一个日志转储线程,用于发送二进制日志的内容。
3.从服务器上的I/O线程负责连接到主服务器,请求更新的二进制日志,并将其保存到本地的中继日志(Relay Log)中。
4.从服务器上的SQL线程:SQL线程负责读取中继日志中的内容,将其解析成具体的操作,并在从服务器上执行,以确保数据的一致性。
5. 通过 `mysqldump` 恢复数据。
## MySQL 读写分离
1. 客户端连接到 MyCat。
2. MyCat 将读写请求分发到不同的主机。
- 写操作 -> Master
- 读操作 -> Slave