一.alter 修改 create 创建 drop 删除
1、总览库
show databases;
2、创建库db01 设置字符集utf8mb4
create database db01 charset utf8mb4;
3、查看数据库db01字符集
show create database db01;
4、查看建表语句
show create table city;
5、删除数据库
drop database db01;
6、修改字符集
alter database xuexiao charset utf8mb4;
7、查看字符集表格
show charset;
8、删除表t1 (*****禁用)
drop table t1;
9、查看学生表的列信息
10、在学生表中追加一列(默认在最后加) 后面注意跟随定义属性信息
alter table xuesheng ADD weibo varchar(64) comment '微博号';
11、在学校库的学生表中在sname列后追加一列微信(后面注意定义的属性信息)
alter table school.xuesheng add weixin varchar(64) comment'微信' after sname;
12、 在学生表的第一列前面加一列(int为属性)
13、删除学生表中的num列
alter table xuesheng drop num;
14、属性信息 修改学生表中 sname这一列里面的属性信息
alter table xuesheng modify sname;
15、修改学生表中 sname 列的名字为 sn 并修改属性信息
alter table xuesheng change sname sn varchar(32) ;
16、过滤学生表中id列小于5的
17、(复制结构一样的空表)
create table ceshi like xuesheng;
18、 查看引擎
select @@default_storage_engine;
19、表名字
alter table;
20、 修改表的存储引擎 (也可以整理碎片)
engine innodb;
常见表,并定义列的属性
create table xuesheng
| 列1 属性(数据类型、约束、其他属性) ,
列2 属性,
列3 属性
)
二、DQL应用数据查询语句
1、 from子句 select 列1,列2 from 表
where 过滤条件 select * from city where countrycode='chn';
2、group by +常用聚合函数
ax():最大值 min():最小值 avg():平均值 sum():总和 count():个数;
3、group by + 聚合函数公式(类似于组)
select countrycode sum(population) from city group by countrycode
4、having (比较大小)
select district sum(population) from city where countrycode='chn' group by district having sum(population) <1000000
统计中国每个省的总人口数,将总人口数小于100w
5、order by + limit( 实现先排序,by后添加条件列 )
select * from city where countrycode='chn' order by population desc limit 5 , 5 ; (desc 代表从大到小。limit 5 , 5表示忽略前5行从第6行开始取5行,前5行就是limit 5)
查看中国所有的城市,并按人口数进行排序(从大到小)并取第5行到第10行
6、distinct:去重复
select disyinct(countrycode) from city;
7、join 多表连接查询
四个表 1,2,3,4 要查询的内容 需要1表和2表有关联就要用到join on
他俩必须有相同项才可以
同理 要查询的内容需要这四张表同时工作的话,
那就是 1表和2表关联 join on 然后是他们关联的那列,
然后2表和3表关联join on 关联的内容 ,
然后是3表和4表相关联join on 关联的内容,
然后就可以查出来要查询的内容了
8、设置权限和密码
grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';
所有权限 数据库.表信息 用户信息 允许访问的网段信息 设置密码信息
revoke all on wordpress.* from 'wordpress'@'localhost' ;
三、建索引原则
(1) 必须要有主键,如果没有可以做为主键条件的列,创建无关列
(2) 经常做为where条件列 order by group by join on, distinct 的条件(业务:产品功能+用户行为)
(3) 最好使用唯一值多的列作为索引,如果索引列重复值较多,可以考虑使用联合索引
(4) 列值长度较长的索引列,我们建议使用前缀索引.
(5) 降低索引条目,一方面不要创建没用索引,不常使用的索引清理,percona toolkit(xxxxx)
(6) 索引维护要避开业务繁忙期
四、mysqldump,mysqlbinlog全备()
- mysqldump 全备
mysqldump -uroot -p -A -R -E --triggers --master-data=2 --single-transaction --set-gtid-purged=OFF >/data/backup/full.sql;
(--master-data=2 可以在备份好的文件里 大约20行的位置查看到开始备份之前pos号码起始位置信息)
- 准备恢复
查看备份文件/data/backup/full.sql下面binlog日志文件以及pos起始信息
利用pos号码查找 gtid信息起始位置 到最后结束的位置(如果有删除的操作,比如最后误删除了数据库或者表,就查找到他的上一次)
进入数据库 show binlog evens in 'mysql-bin.000005' limt 15;
- 截取到恢复数据gtid 并输出到一个以.sql结尾的文件里
mysqlbinlog --skip-gtids --include-gtids='e56bba59-603b-11e9-9f86-000c29613223:22-25' /data/backup/mysql-bin.000003
>/data/backup/binlog.sql
- 恢复
set sql_log_bin=0; 临时关闭
- 先恢复全备
source /data/backup/full.sql; 全备恢复
source /data/backup/binlog.sql; 当天数据恢复
五、xbk增量全被操作
1.全被
innobackupex --user=root --password=456 --no-timestamp /data/backup/full &>/data/backup/full.log
(--on-timestamp 加上后可以指定文件的名字,如果不加会默认会在目录下生成一个以时间为名字的。)
2.增量
innobackupex --user=root --password=456 --no-timestamp --incremental --incremental-basedir=/data/backup/full /data/backup/inc1 &>/data/backup/inc1.log
3.增量
innobackupex --user=root --password=456 --no-timestamp --incremental --incremental-basedir=/data/backup/inc1 /data/backup/inc2 &>/data/backup/inc2.log
===================================(以下为出现问题后的操作)
4.查看全备及增量的 xtrabackup_checkpoints 文件看lsn能否对上
cat full/xtrabackup_checkpoints
cat inc1/xtrabackup_checkpoints
cat inc2/xtrabackup_checkpoints 对面lsn号
5.查看事故前一天增量的gtid号 方便后期找回
cat inc2/xtrabackup_binlog_info
6.全备整理
innobackupex --apply-log --redo-only /data/backup/full
7.合并inc1到full中
innobackupex --apply-log --redo-only --incremental-dir=/data/backup/inc1 /data/backup/full
8.合并inc2到full中
innobackupex --apply-log --incremental-dir=/data/backup/inc2 /data/backup/full(少了一个--redo-only是因为inc2是最后一天备份的)
(有几次增量备份就合并几次)
9.最后一次整理备份全部
innobackupex --apply-log /data/backup/full
10.截取周二 23:00 到drop 之前的 binlog
mysqlbinlog --skip-gtids --include-gtids='1afe8136-601d-11e9-9022-000c2928f5dd:7-9' /data/binlog/mysql-bin.000009 >/data/backup/binlog.sql
11.进行恢复
[root@db01 backup]# mkdir /data/mysql/data2 -p
[root@db01 full]# cp -a * /data/mysql/data2 (覆盖形式的恢复)
innobackupex --copy-bak /data/backup/full (此方法目标目录必须为空)
[root@db01 backup]# chown -R mysql. /data/*
[root@db01 backup]# systemctl stop mysqld
vim /etc/my.cnf
datadir=/data/mysql/data2
systemctl start mysqld
Master [(none)]>set sql_log_bin=0;
Master [(none)]>source /data/backup/binlog.sql
12、查看 gtid日志路径
Master [(none)]>Master [(none)]>show binlog events in 'mysql-bin.000012';
13、source 恢复数据的目标路径
mysqlbinlog --skip-gtids --include-gtids='6799bcdc-55bf-11e9-8e74-000c2978b5d1:14-17' /data/binlog/mysql-bin.000012 >/data/backup/bin.sql
change master to
master_host='10.0.0.220',
master_user='repl',
master_password='123' ,
MASTER_AUTO_POSITION=1;
grant replication slave on . to repl@'10.0.0.%' identified by '123';
六、
Mysql忘记密码
Mysql_safe --skip-grant-tables --skip-networking
--skip-grant-tables 在连接层关闭验证模块,所有验证表不加载内存
--skip-networking 关闭tcp/ip协议,跳过网络
Mysql 登陆修改密码
Flush privileges 手动加载授权表
Alter user root@’localhost’ identified by ‘123’;
show status like 'innodb_row_lock%'; 查询锁
网友评论