02 数据库基本操作

数据库的基本概念

字段:表的标题

记录:文件中的一行内容

表:文件

库:文件夹

数据库管理软件:本质就是一个基于网络通信的套接字软件socket

数据库服务器:运行数据库管理软件服务端的计算机

数据库管理软件分为两大类

关系型:MySQL、oracle、db2、sqlserver

非关系型:key:value--->查询速度快mongodb、redis、memcache

数据库的优化

统一字符编码

#1. 修改配置文件
[mysqld]
default-character-set=utf8mb4 
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

#mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

#2. 重启服务
#3. 查看修改结果:
\s
show variables like '%char%';

忘记密码修改重启

vi /etc/my.cnf
[mysqld] #下面加上:
skip-grant-tables

update mysql.user set password=password("123") where user="root" and host="localhost";
flush privileges;

基础SQL语句

# 增
MariaDB [(none)]> create database db1 charset utf8mb4;

# 改
MariaDB [(none)]> alter database db1 charset gbk;

# 查
MariaDB [(none)]> show create database db1;

# 删
MariaDB [(none)]> drop database db1;

# 增
MariaDB [(none)]> create table db1.t1(id int,name varchar(16));

# 改
MariaDB [(none)]> alter table t1 modify name varchar(20);

# 查
MariaDB [db1]> show create table t1;
MariaDB [(none)]> desc t1;

# 删
MariaDB [(none)]> drop table t1;

记录

# 增
MariaDB [(none)]> insert db1.t1 values(1,"baim0"),(2,"tom"),(3,"jack");
MariaDB [(none)]> insert db1.t1(name,id) values(5,"lili");
MariaDB [(none)]> insert db1.t1(id) values(5);

# 改
MariaDB [(none)]> update db1.t1 set name="JACK" where id=3;

# 查
MariaDB [db1]> select * from db1.t1;
MariaDB [db1]> select id,name from db1.t1;
MariaDB [db1]> select id,name from db1.t1 where id=1;
MariaDB [db1]> select id,name from db1.t1 where id<3;

# 删
MariaDB [(none)]> delete from db1.t1 where id=3;
# 清空
MariaDB [(none)]> delete from db1.t1;# 不要这么干
MariaDB [(none)]> truncate db1.t1;	#把表所有状态还原成初始状态

MySQL数据备份

使用mysqldump实现逻辑备份

#语法:
# mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql

#示例:
#单库备份
mysqldump -uroot -p123 db1 > db1.sql
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql

#多库备份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql

#备份所有库
mysqldump -uroot -p123 --all-databases > all.sql

恢复逻辑备份

#方法一:
[root@egon backup]# mysql -uroot -p123 < /backup/all.sql

#方法二:
mysql> use db1;
mysql> SET SQL_LOG_BIN=0;
mysql> source /root/db1.sql

#注:如果备份/恢复单个库时,可以修改sql文件
DROP database if exists school;
create database school;
use school;

备份脚本

备份计划:
1. 什么时间 2:00
2. 对哪些数据库备份
3. 备份文件放的位置

备份脚本:
[root@egon ~]# vim /mysql_back.sql
#!/bin/bash
back_dir=/backup
back_file=`date +%F`_all.sql
user=root
pass=123

if [ ! -d /backup ];then
mkdir -p /backup
fi

# 备份并截断日志
mysqldump -u${user} -p${pass} --events --all-databases > ${back_dir}/${back_file}
mysql -u${user} -p${pass} -e 'flush logs'

# 只保留最近一周的备份
cd $back_dir
find . -mtime +7 -exec rm -rf {} \;

手动测试:
[root@egon ~]# chmod a+x /mysql_back.sql 
[root@egon ~]# chattr +i /mysql_back.sql
[root@egon ~]# /mysql_back.sql

配置cron:
[root@egon ~]# crontab -l
2 * * * /mysql_back.sql

数据库的迁移

务必保证在相同版本之间迁移
# mysqldump -h 源IP -uroot -p123 --databases db1 | mysql -h 目标IP -uroot -p456
posted @ 2021-06-29 20:53  BaiM0  阅读(66)  评论(0编辑  收藏  举报