MySQL使用insert方式备份表

前两天公司开发要求测试环境数据库删除一条数据,无论是生成还是测试环境删除之前都要做备份,但是考虑到只是单个表,使用 mysqldump 有点大可不必,所以采用了 insert 来复制表。 首先创建一个与旧表相同结构的空表,包括主键和自增等(可以使用 describe table_name 查看表结构) create table new_table like old_table; 将旧表的数据...

MySQL+PXC高可用集群(多主)

MySQL高可用—PXC集群

percona xtradb cluster

percona:基于mysql数据库二次开发的数据库产品

xtradb:存储引擎

要搭建pxc集群,需要三台虚拟机。三台虚拟机之间不是主从的模式,而是各自为主,三者属于对等的关系,不分主从,这个叫多主架构

MHA+MySQL高可用

MHA+MySQL高可用

Master High Availability

MHA数据库高可用集群,是一套优秀的最为mysql高可用性环境下故障切换主从的软件,在故障切换的过程中,MHA能够做到在30s自动完成数据可的故障切换,并在切换的过程中最大程度保证数据的一致性,以达到真正意义上的高可用。

MHA的特点:

1.故障转移

2.保证数据的一致性

Ansible-Roles应用---安装MySQL

Ansible-Roles应用—安装MySQL

实验环境

192.168.1.1:Ansible

192.168.1.4:MySQL

192.168.1.5:MySQL

实验目的

使用Ansible的角色功能,安装MySQL服务

15、备份

备份

概念

备份是将一台服务器的数据,进行复制到另外一台或者多台服务器上的过程,虽然可以通过强化硬件来保证数据安全,但是如果因为宕机出现的数据丢失问题,在没有备份的情况下,无法恢复数据,所以备份可以有效避免数据丢失问题

备份的方式

1、mysqldump

备份库中多表 mysqldump -u user -p密码 要备份的库 要备份的表 表1 表2 > /path

备份多个库 mysqldump -u user -p密码 -B 要备份的库 库1 库2 > /path

option选项: -R:只导出存储过程和函数 -d:只备份表结构,不备份表数据 -t:只备份表数据,不备份表结构 -A:备份所有库 -B:备份多个库

14、日志

MYSQL 日志

概念

Mysql日志记录mysql的日常操作,以及发生的错误信息,不同的日志拥有不同的功能,从日志中可以解决很多问题,比如mysql瓶颈,用户操作信息,修改数据库的信息等等

mysql日志分类

mysql> show variables like 'log_%';
+----------------------------------------+---------------------+
| Variable_name                          | Value               |
+----------------------------------------+---------------------+
| log_bin                                | OFF                 | 是否开启二进制文件
| log_bin_basename                       |                     |
| log_bin_index                          |                     |
| log_bin_trust_function_creators        | OFF                 |
| log_bin_use_v1_row_events              | OFF                 |
| log_error                              | /var/log/mysqld.log |错误日志的路径
| log_output                             | FILE                |日志输出形式
| log_queries_not_using_indexes          | OFF                 |日志是否保存没有使用索引的查询语句
| log_slave_updates                      | OFF                 |是否记录从库更新
| log_slow_admin_statements              | OFF                 |
| log_slow_slave_statements              | OFF                 |
| log_throttle_queries_not_using_indexes | 0                   |
| log_warnings                           | 1                   |是否记录警告记录
+----------------------------------------+---------------------+

1、错误日志:

记录mysql运行时,停止时,所发生的问题

开启错误日志:在/etc/my.cnf中的添加或者查看log-error配置项,如果指定路径会和初始化路径冲突,不写路径默认存放在初始化指定的路径下

13、mysql用户权限

MYSQL用户权限

在mysql中维护了一个存放用户信息的表,user,该表位于mysql数据库中,用户之所以能登录mysql是因为匹配了该表中的用户信息,才能登录成功,否则登录失败

SELECT * FROM mysql.user\G用来查看用户权限的表

一旦删除此表,数据库将会瘫痪

1、用户列

包含user,host,password,使用用户,用户有权限的主机名,和密码(5.7.20之后使用authentication_string保存密码),当用户登录mysql时,之后匹配用户列的内容才能成功登录mysql,user和host列属于联合主键,用来确定用户身份的唯一性

2、权限列

规定了用户只能在给定权限的范围内进行活动,如果该用户没有权限,将不能执行指定的命令,在user表中,如果用户拥有该权限则该权限为Y,如果没有则为N,在priv权限列中,所有的字段使用ENUM枚举进行控制,只有Y和N两个选项,不存在空值

12、触发器

触发器

概念

属于一个特殊的存储过程,属于嵌入到mysql的一段程序,触发器有触发事件来接触,触发事件包含(insert、update、delete),一旦触发触发器,数据则会执行触发器中预先设置好的内容,不需要手动执行,整个过程全部自动完成

触发器属于隐性触发的过程,可能会因为触发触发器而造成的数据表的数据修改,而造成的与原数据不匹配的问题,所以生产环境中将会使用存储过程去替代触发器完成各项任务,在一个表中只能出现两个触发器,且触发时机一个为before,一个为after

11、事务

事务

概念

事务是多条sql语句的集合,要么都成功,要么都失败,且事务是基于存储引擎实现的。

创建的事务都是基于DML语言来操作的


特点

1、原子性(atomicity):一个事务必须被视为一个不可分割的单元

2、一致性(consistency):数据库从一种状态切换到另一张状态 如:银行转账过程中,来回转金额的数量不会改变

3、隔离性(isolation):事务在提交之前对其他事务不可见

4、持久性(durablity):一旦事务提交,永久保存到数据库

10、MYSQL函数

Mysql函数

运算函数

1、绝对值函数

ABS(x):用于给x求绝对值,一个负数的绝对值等于它的相反数,一个正数的绝对值等于它本身

例:

mysql> SELECT ABS(10.5);
+-----------+
| ABS(10.5) |
+-----------+
|      10.5 |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT ABS(-10.5);
+------------+
| ABS(-10.5) |
+------------+
|       10.5 |
+------------+
1 row in set (0.00 sec)

2、圆周率函数

PI():周长和直径的比值

9、视图

视图

概念

视图在mysql5.0版本之后退出,主要用于保证数据的安全性

属于一张虚拟表,是占用极小空间的逻辑存在的表,视图不存放数据,所有的数据来源于真实表。

视图可以从一个或者多个表中到处,来源于一个表叫做单表视图,来源于多个表为多表视图


视图的优点

简单化

安全性

逻辑结构独立性:可以帮助用户屏蔽因为真实表结构变化带来的影响

8、索引

索引


概念

索引是一个存在于磁盘中,对一列或者多列值进行排序的结构

用于提高查询速度,使用索引可以提高数据库中指定数据的查询速度,且索引是一个单独存在的内容,属于提高查询速度的最佳途径


索引算法

btree

hash

7、查询语句SELECT

一、查询语句SELECT

语法:

SELECT *|字段 FROM 表名 [WHERE 条件判断] [ORDER BY 字段] [GROUP BY 字段] [HAVING 条件判断] [LIMIT OFFSET COUNT]

查询顺序:

from,where,group by,having,having只能在group by后面使用,where不能查询聚合函数,而having可以,且运算顺序为如果两者同时存在,where在having之前进行筛选顺序

创建一个fruits表,进行查询练习

6、MYSQL运算符

mysql运算符!

一、算数运算符

​ + - * / %(求余运算)

mysql> CREATE TABLE test3(num INT);                /*创建一个表,表中有一个字段,类型为INT*/
Query OK, 0 rows affected (0.13 sec)

mysql> INSERT INTO test3 VALUES(40);            /*字段中插入一个数字40*/
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM test3;
+------+
| num  |
+------+
|   40 |
+------+
1 row in set (0.00 sec)
/*使用算数运算符来操作表中的INT字段*/
mysql> SELECT num,num+10,num-100,num*3,num/3,num%3 FROM test3;
/*使用算数运算符查看test3的num字段,以及字段中的值+10的结果,值-100的结果,值*3的结果,值/3的结果,值除以3之后的余数*/
+------+--------+---------+-------+---------+-------+
| num  | num+10 | num-100 | num*3 | num/3   | num%3 |
+------+--------+---------+-------+---------+-------+
|   40 |     50 |     -60 |   120 | 13.3333 |     1 |
+------+--------+---------+-------+---------+-------+
1 row in set (0.01 sec)
mysql> ALTER TABLE test3 MODIFY num DECIMAL(4,1);   /*修改数据类型为定点数据类型保留小数一位*/
Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> INSERT INTO test3 VALUES(40.2);        /*插入带有小数点的一个值40.2*/
Query OK, 1 row affected (0.00 sec)

mysql> SELECT  num%3 FROM test3;   
/*小数点后的数字不参与取余的运算,直接拿余数+小数位的数字,也就是40.2中40除以3余1,在加上剩下的0.2*/
+-------+
| num%3 |
+-------+
|   1.0 |
|   1.2 |
+-------+

二、比较运算符(用来判断真假命题,也就是返回值为1(真)或者0(假)

5、DML数据操纵语言

DML数据操纵语言(UPDATE)

UPDATE

语法:





正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0