关键词:
数据库MySQL的使用
数据库基本介绍
- 数据库的优点:
- 将数据持久化到本地
- 提供结构化查询功能
- 数据库的存储特点:
- 数据存放到表中,然后将表存放到库中
- 一个库中可以有多张表,每张表有唯一的表名标识
- 表中有一个或者多个列字段
- 表中可以存放多行数据
- 数据库的分类:
- 关系型数据库:
- MySQL
- Oracle
- DB2
- SQL Server
- 非关系型数据库:
- 键值存储的数据库:
- Redis
- Memcached
- MemcacheDB
- 列存储的数据库:
- HBase
- Cassandra
- 面向文档的数据库:
- MongDB
- CouchDB
- 图形数据库:
- Neo4J
- 键值存储的数据库:
- 关系型数据库:
- SQL语言的分类:
- 数据查询语言DQL :
- select
- from
- where
- 数据操作语言DML :
- insert
- update
- delete
- 数据定义语言DDL :
- create
- alter
- drop
- truncate
- 数据控制语言DCL :
- grant
- revoke
- 事务控制语言TCL :
- commit
- rollback
- 数据查询语言DQL :
MySQL数据库基本介绍
MySQL数据库安装
Windows
- 下载MySQL安装包
- 打开MySQL数据库安装包:
- 接受MySQL数据库协议:
- 选择自定义custom安装类型:
- 选择需要安装的功能:
- 完成这些准备工作后,点击安装Install按钮开始安装MySQL数据库:
- 可以在界面上查看安装进度:
- 出现以下界面说明MySQL数据库安装成功:
- MySQL数据库安装完成后,可以进行MySQL数据库实例配置:
- 选择详细配置Detailed Configuration的配置类型:
- 在服务器类型中,选择Developer Machine :
- 选择数据库的作用为Multifunctional Database :
- 选择安装数据库引擎的文件的磁盘:
- 根据数据库链接数选择合适的类型:
- 配置MySQL数据库的网络选项:
- 配置MySQL数据库默认的角色:
- 进行MySQL数据库的Windows安装配置:
- 进行MySQL数据库的安全配置,配置root用户密码:
- MySQL数据库实例配置项配置完成后,点击执行Execute按钮:
- 执行完成以后,点击完成Finish按钮:
- MySQL数据库实例执行完成后,开始进行SQLyog的安装:
- 选择需要安装的SQLyog功能:
- 配置SQLyog的安装路径,配置完成后点击安装按钮:
- 可以在界面上查看SQLyog的安装进度:
- SQLyog安装完成后,点击下一步按钮:
- 这时 ,MySQL数据库最终安装完成:
Linux
- 安装完成Linux系统:
- 使用SecureCRT等工具连接Linux系统,进入控制台:
- 删除Linux系统自带的MySQL数据库:
# 查询系统中安装的MySQL数据库名称
rpm -qa | grep mysql
# 删除系统中安装的MySQL数据库
rpm -e MySQL数据库名称 --nodeps
- 安装依赖包:
yum -y install numactl perl libaio wget
- 下载MySQL数据库服务器安装包:
wget https://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-server-5.6.49-1.el6.x86_64.rpm
- 查看MySQL数据库服务器安装包:
ll MySQL-server-5.6.49-1.el6.x86_64.rpm
- 安装MySQL数据库服务器:
rpm -ivh MySQL-server-5.6.49-1.x86_64.rpm
- 启动数据库服务:
service mysql start
- 查看初始化的数据库密码:
cat /root/.mysql.secret
- 使用初始化的密码登录MySQL数据库:
mysql -uroot -p初始密码
- 修改MySQL数据库密码:
SET password=password('root');
- 远程授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';
- 刷新权限:
FLUSH PRIVILEGES;
- 退出MySQL数据库:
EXIT;
- 开放Linux防火墙:
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
- 设置MySQL数据库服务自启动
chkconfig --add mysql
chkconfig mysql on
MySQL数据库操作
- MySQL的启动:
net start mysql
- MySQL的停止:
net stop mysql
- MySQL的登录:
mysql -h主机名 -P端口号 -u用户名 -p密码
- MySQL的退出:
EXIT;
MySQL数据库备份恢复
数据库导出
- 导出数据库中的表:
-- mysqldump -u数据库名称 -p数据库密码 数据库名称 数据库的表名称 > 文件保存路径
mysqldump -uroot -proot oxford user_info > E:/oxford/user_info.sql
- 导出整个数据库:
-- mysqldump -u数据库名称 -p数据库密码 数据库名称 > 文件保存路径
mysqldump -uroot -proot oxford > E:/oxford/oxford.sql
数据库导入
- 导入数据库中的表:
-- mysql -u数据库名称 -p数据库密码
-- use 数据库名称;
-- source 文件保存的路径
mysql -uroot -proot
USE oxford;
SOURCE E:/oxford/user_info.sql
- 导入整个数据库:
-- mysql -u数据库名称 -p数据库密码 < 文件保存的路径
mysql -uroot -proot < E:/oxford/oxford.sql
MySQL数据库控制语言
- 授权权限列表:
- 数据权限:
- SELECT
- INSERT
- UPDATE
- DELET
- FILE
- 结构权限:
- CREATE
- ALTER
- INDEX
- DROP
- CREATE TEMPORARY TABLES
- SHOW VIEW
- CREATE ROUTINE
- ALTER ROUTINE
- EXECUTE
- CREATE VIEW
- EVENT
- TRIGGER
- 管理权限:
- GRANT
- SUPER
- PROCESS
- RELOAD
- SHUTDOWN
- SHOW DATABASE
- LOCK TABLES
- REFERENCES
- REPLICATION CLIENT
- REPLICATION SLAVE
- CREATE USER
- 数据权限:
- 创建用户:
-- 这里的IP地址可以设置为localhost表示本机,使用%表示允许所有IP地址登录.默认允许所有IP地址访问
CREATE USER 用户名@IP地址 IDENTIFIED BY 密码
- 删除用户:
DROP USER 用户名@IP地址
- 授权用户:
-- 如果是所有的数据库就使用*.*,如果是所有的权限就使用ALL或者ALL PRIVILEGES
GRANT 权限1,权限2... ON 数据库名.* TO 用户名@IP地址 IDENTIFIED BY 密码;
- 撤销授权:
-- 如果是所有的数据库就使用*.*,如果是所有的权限就使用ALL或者ALL PRIVILEGES
REVOKE 权限1,权限2,... ON 数据库名.* FROM 用户名@IP地址 IDENTIFIED BY 密码;
- 刷新授权:
FLUSH PRIVILEGES;
- 查看授权:
-- 这里的IP地址可以设置为localhost表示本机,使用%表示允许所有IP地址登录,默认允许所有IP地址登录
SHOW GRANTS FOR 用户名@IP地址;
- 修改密码:
-- 修改密码
SET PASSOWRD=PASSWORD("oxford");
-- 授权用户
GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY oxford;
-- 刷新授权
FLUSH PRIVILEGES;
- 如果忘记登录密码,可以通过以下方式设置新密码登录:
- 在MySQL的配置文件中的mysqld的参数组下添加skip-grant-tables, 表示跳过授权
- 这样重启MySQL再次登录后就不需要密码,进入MySQL账户后修改密码,修改后刷新授权,就可以使用新的密码登录了
- 修改密码完成后,删除配置文件中的skip-grant-tables选项,重新启动MySQL服务
- 使用修改后的新密码即可登录MySQL
MySQL的数据类型
数值型
类型 | 字节 |
---|---|
TINYINT | 1 |
SMALLINT | 2 |
MEDIUMINT | 3 |
INT(INTEGER) | 4 |
BIGINT | 8 |
- 都是可以设置有符号和无符号.默认是有符号的,通过unsigned设置为无符号
- 如果超过字节范围,会抛出out of range异常,插入临界值,也就是这个类型的最大值或者最小值
- 可以不指定长度,会有一个默认长度,这个长度代表显示的最大宽度,如果不够则在左边使用0来填充,需要配置zerofill使用,默认为无符号整型
- 如果对数据没有特殊要求,数值类型推荐使用INT(INTEGER) 类型
浮点型
- 定点数:
- DEC(M,D) : M+2字节
- DECIMAL(M,D) : M+2字节
- 浮点数:
- FLOAT(M,D) : 4字节
- DOUBLE(M,D) : 8字节
- 浮点型特点:
- M表示整数部位和小数部位的个数之和 ,D代表小数部位的个数
- 如果超过字节范围,会抛出out of range异常,并且插入临界值,也就是这个类型的最大值或者最小值
- M和D可以省略.对于定点数,M默认为10,D默认为0
- 如果对数据的精度要求较高,浮点类型推荐使用定点数
字符型
类型 | 说明 |
---|---|
BINARY | 二进制 |
VARBINARY | 二进制字符串 |
ENUM | 枚举 |
SET | 集合 |
TEXT | 文本 |
BLOB | 二进制大型对象 |
CHAR(M) | 固定长度的字符 |
VARCHAR(M) | 可变长度的字符 |
- 固定长度的字符CHAR(M), 最大长度不能超过M. 这里M可以省略不写,默认值为1
- 可变长度的字符VARCHAR(M), 最大长度不能超过M. 这里M不可以省略
- 如果对数据没有特殊要求,字符类型推荐使用VARCHAR(M)
日期型
类型 | 说明 |
---|---|
YEAR | 年份 |
DATE | 日期 |
TIME | 时间 |
DATETIME | 日期时间 |
TIMESTAMP | 日期时间 |
- TIMESTAMP会受到时区,语法模式,版本的影响,更能反映出当前时区的真实时间 .DATETIME只能反映出插入时当时时区的时间
- TIMESTAMP支持的时间范围比较小 .DATETIME支持1000-1-1至9999-12-31的时间范围
- TIMESTAMP的属性受到MySQL版本和SQLMode的影响很大
- 如果对数据没有特殊要求,日期类型推荐使用DATETIME
MySQL数据库约束
- 数据库约束: 数据的一种限制,用于限制数据库表中的数据,保证数据的准确性和可靠性
- 数据库约束分类:
- NOT NULL : 非空.这个字段必须填写有值
- UNIQUE : 唯一.这个字段的值不能重复
- DEFAULT : 默认值.这个字段不手动插入有默认的值
- CHECK : 检查. 这个约束在MySQL中不支持
- PRIMARY KEY : 主键.这个字段的值非空且唯一
- FOREIGN KEY : 外键.这个字段的值引用了另外一个表的字段
- 主键:
- 一个表中至多只能有一个主键
- 主键不可以为空
- 具有唯一性
- 支持组合键,但是不推荐使用
- 唯一:
- 一个表中可以有多个唯一
- 唯一可以为空
- 具有唯一性
- 支持组合键,但是不推荐使用
- 外键:
- 外键用于限制两个表之间的关系从表的字段值引用了主表的字段值
- 外键的字段列和主表被引用的字段列的类型要一致,意义一致.名称可以不同
- 主表中被引用的列要求是一个键key, 通常就是使用主键
- 插入数据时,先插入主表. 删除数据时,先删除从表
- 可以通过以下两种方式来删除主表的记录:
- 级联删除:
ALTER TABLE user_info ADD CONSTRAINT fk_user_major FOREIGN KEY(majorid) REFERENCE major(id) ON DELETE CASCADE;
- 级联置空:
ALTER TABLE user_info ADD CONSTRAINT fk_user_major FOREIGN KEY(majorid) REFERENCE major(id) ON DELETE SET NULL;
- 可以通过以下两种方式来删除主表的记录:
MySQL数据库事务
- 数据库事务: 一条或者多条SQL语句组成一个执行单位,这一组SQL语句要么都执行,要么都不执行
- 数据库事务的特点 : ACID
- 原子性 Atomicity : 一个事务是不可分隔的整体,要么都执行,要么都不执行
- 一致性 Consistency : 一个事务的执行不能破坏数据库数据的完整性和一致性
- 隔离性 Isolation : 一个事务不会受到其余事务的干扰,多个事务是相互隔离的
- 持久性 Durability : 一个事务如果提交成功,就会永久的持久化到本地
- 数据库事务的分类:
- 隐式事务:
- 隐式事务没有明显的开始和结束,本身就是一条事务,可以自动提交
- 比如INSERT,UPDATE,DELETE语句
- 显式事务:
- 显式事务具有明显的开始和结束
-- 1. 开启事务 -- 开启事务之前首先关闭自动提交 SET autocommit=0; -- 开启事务机制 START TRANSACTION; -- 2. 编写一组逻辑SQL语句,可以是INSERT,UPDATE,DELETE语句 -- 设置回滚点,可以设置也可以不设置 SAVEPOINT 回滚点名称; -- 3. 结束事务 -- 提交事务 COMMIT; -- 回滚事务 ROLLBACK; -- 回滚事务到指定的回滚点 ROLLBACK TO 回滚点名称;
- 隐式事务:
事务并发
- 事务并发问题发生时机: 读问题.多个事务同时操作同一个数据库的相同数据时可能会导致事务并发问题
- 事务并发问题有以下几种: 一个事务对数据进行修改,增加操作,另一个事务对相同的数据进行读操作
- 脏读: 一个事务读取到另一个事务还未提交的UPDATE数据,导致多次查询结果不一致
- 不可重复读: 一个事务读取到另一个事务已经提交的UPDATE数据,导致多次查询结果不一致
- 幻读: 一个事务读取到另一个事务已经提交的INSERT数据,导致多次查询结果不一致
- 可以通过设置隔离级别来解决数据库事务的并发问题
隔离级别 | 说明 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|---|
READ UNCOMMITTED | 读未提交 | × | × | × |
READ COMMITTED | 读已提交 | √ | × | × |
REPEATABLE READ | 可重复读 | √ | √ | × |
SERIALZABLE | 序列化 | √ | √ | √ |
- 注意点:
- MySQL中默认的隔离级别为可重复读REPEATABLE READ
- Oracle中默认的隔离级别为读已提交READ COMMITTED
- 查看数据库的隔离级别:
SELECT @@tx_isloation;
- 设置数据库的隔离级别:
SET SESSION|GLOBAL TRANSACTION ISLOATION LEVEL 隔离级别;
丢失更新
- 丢失更新: 写问题
- 多个事务同时对同一个数据库的相同数据进行修改和增加操作时导致的问题
- 丢失更新问题的解决方法:
- 悲观锁:
- 认为两个事务更新操作一定会发生丢失更新
- 通过在SQL语句后面添加FOR UPDATE来实现行级上锁.也称为行级锁
SELECT * FROM t_account t WHERE t.id='Chova' FOR UPDATE;
- 乐观锁:
- 认为两个事务更新操作不一定会发生丢失更新,使得事务进行并发修改,不会对事务进行锁定
- 可以通过给数据库中的表添加自增的version字段或者时间戳timestamp,这样在进行数据修改时,数据库检测version字段或者时间戳timestamp是否和原来的一致.如果一致就进行修改操作,如果不一致就抛出异常或者重新查询
- 悲观锁:
- 注意点:
- 账户交易类场景推荐使用悲观锁
- 数据库性能高,并发度不高的场景悲观锁和乐观锁都可以使用
- 交易减库存的场景推荐使用乐观锁,保证并发度
MySQL数据库变量
- MySQL数据库变量分类:
- 系统变量
- 全局变量
- 会话变量
- 自定义变量
- 用户变量
- 局部变量
- 系统变量
全局变量
- 全局变量:
- 服务器层面上的,
- 必须拥有super权限才能够为系统变量赋值
- 作用域为整个服务器,针对于所有的会话连接有效,不能跨重启
-- 查看所有系统变量
SHOW GLOBAL VARIABLES;
-- 查看满足指定条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%char%';
-- 查看指定的系统变量的值
SELECT @@global 系统变量名称;
-- 赋值某个系统变量
SET GLOBAL 系统变量名称=值;
--
SET @@global 系统变量名称=值;
会话变量
- 会话变量:
- 服务器为每一个连接的客户端提供的系统变量
- 作用域为当前的会话连接
-- 查看所有会话变量
SHOW [SESSION] VARIABLES;
-- 查看满足指定条件的部分会话变量
SHOW [SESSION] VARIABLE LIKE '%char%';
-- 查看指定的会话变量的值
SELECT [SESSION] 会话变量名称;
-- 赋值某个会话变量
SET [SESSION] 会话变量名称=值
用户变量
- 用户变量:
- 用户变量只对当前会话连接生效
- 位置可以在begin和end里面,也可以放在begin和end外面
-- 声明用户变量并赋值
SET @变量名=值;
--
SET @变量名:=值;
--
SELECT @变量名:=值;
-- 更新用户变量的值
SET @变量名=值;
--
SET @变量名:=值;
--
SELECT @变量名:=值;
--
SELECT 值 INTO @变量名 FROM 表;
-- 查看用户变量的值
SELECT 用户变量名称;
MySQL数据库事件
- 数据库事件:
- MySQL 5.1以后推出事件调度器Event Scheduler
- 事件调度器Event Scheduler和事件触发器trigger不同,事件调度器Event Scheduler和Linux Crontab计划任务类似,用于定时触发
- 数据库事件的特点:
- 数据库事件是一组SQL集合.也就是MySQL中的定时器,到指定的时间就会执行
- 事件由一个特定的线程也就是事件调度器来管理.事件不能直接调用,要通过单独的或者调用存储过程使用,在某一个特定的时间点,触发相关SQL语句和存储过程
语法操作
- 创建事件:
- MySQL事件调度器event_scheduler负责调用事件.默认是关闭的
- 这个事件调度器会不断监视一个事件是否需要调用.如果要创建事件,必须首先打开事件调度器
-- 开启事件调度器
SET GLOBAL event_scheduler=ON;
--
SET @@global.event_scheduler=ON;
--
SET GLOBAL event_scheduler=1;
--
SET @@global.event_scheduler=1;
DELIMITER $
CREATE EVENT 事件名称
ON SCHEDULE 执行时间和频率
DO
BEGIN
...
END$
DELIMITER;
- 执行时间和频率有两种形式:
- AT : 关键字只会执行一次
AT CURRENT_TIMESTAMP; AT YYYY-MM-DD HH:MM:SS
- EVERY : 关键字指定的时间间隔执行
EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
- 可以使用STARTS关键字指定开始时间,这是一个可选项:
STARTS CURRENT_TIMESTAMP;
STARTS YYYY-MM-DD HH:MM:SS;
- 可以使用ENDS关键字指定结束时间,这是一个可选项:
ENDS CURRENT_TIMESTAMP;
ENDS YYYY-MM-DD HH:MM:SS;
- 可以设定事件EVENT的生命周期,这是一个可选项:
ON COMPLETION NOT PRESERVE;
ON COMPLETION PRESERVE;
- 可以设定事件EVENT的状态,这是一个可选项:
-- 表示系统尝试执行这个事件.默认选项
ENABLE;
-- 表示系统尝试关闭这个事件
DISABLE;
- 可以设定事件EVENT的备注,这是一个可选项:
COMMENT '备注';
-- 关闭事件调度器
SET GLOBAL event_scheduler=OFF;
--
SET @@global.event_scheduler=OFF;
--
SET GLOBAL event_scheduler=0;
--
SET @@global.event_scheduler=0;
- 删除事件:
DROP EVENT 事件名称;
- 修改事件: 先对事件进行删除,然后再重新创建新的事件.等同于修改事件的操作
- 查看事件:
SHOW EVENTS;
- 调用事件:
-- 启用指定的事件
ALTER EVENT 事件名称 ENABLE;
-- 禁用指定的事件
ALTER EVENT 事件名称 DISABLE;
- 注意点:
- 默认创建事件存储在当前库中.也可以创建事件到指定的库中
- 通过SHOW EVENT语句只能查看到当前库中创建的事件
- 事件执行完就释放.比如立即执行事件,在执行完成后,事件就会自动删除,多次调用事件或者等待执行事件可以查看到
- 如果存在两个事件需要在同一时刻调用 ,MySQL会确定事件的调用顺序,如果需要执行调用顺序,需要确保两个事件执行时间差至少为1秒
- 对于递归调度的事件,结束的日期不能在开始日期之前
- 事件中可以包含SELECT语句,但是语句的执行结果消失就类似于未执行过
MySQL数据库分布式操作
MySQL主从复制
- MySQL主从复制:
- MySQL主从复制允许将来自主服务器的MySQL数据库服务器的数据复制到另一个或者多个从服务器的MySQL数据库服务器中
- MySQL主从复制允许将来自主服务器的MySQL数据库服务器的数据复制到另一个或者多个从服务器的MySQL数据库服务器中
- 只需要在主服务器创建数据库,创建表,添加数据.从节点会自动获取主节点中的内容,从节点和主节点内容保持同步.这就是主从复制的相关内容
主节点配置
- 打开MySQL数据库配置文件:
vi /usr/my.cnf
- 在配置文件中的mysqld的分组下面添加以下配置
# 日志名称
log-bin=mysql-bin
# 日志格式: row, statement, mixed
binlog-format=row
# 服务器ID标识
server-id=1
# 刷新写事务日志
innodb_flush_log_at_trx_commit=1
# 执行写入一次就同步一次
sync_binlog=1
# 即时更新master_info
sync_master_info=1
- 重启MySQL数据库服务器:
service mysql restart
- 登录MySQL数据库:
mysql -uroot -proot
- 授权远程:
GRANT REPLICATION ON slave ON *.* ON 'root'@'%' IDENTIFIED BY 'root';
- 刷新权限:
FLUSH PRIVILEGES;
- 查看主节点状态:
SHOW master STATUS\\G;
从节点配置
- 打开MySQL数据库配置文件:
vi /usr/my.cnf
- 在配置文件中的mysqld的分组下面添加以下配置:
# 日志名称
log-bin=mysql-bin
# 日志格式: row, statement, mixed
binlog-format=row
# 服务器ID标识
server-id=2
# 是否只读
read_only=1
- 停止并删除旧配置的MySQL数据库:
- 这里不能直接重启MySQL数据库服务器
- 因为两者的auto.cnf的server-uuid是一样的,后续配置可能会失败
- 所以需要删除从库中的server-uuid, 在启动时重新自动生成一个新的server-uuid
service mysql stop
rm -f /var/lib/mysql/auto.cnf
- 重新启动MySQL数据库服务器:
service mysql start
- 登录MySQL数据库:
mysql -uroot -proot
- 执行如下语句:
CHANGE MASTER TO
-- 主节点IP地址
MASTER_HOST='192.168.166.168',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
-- MASTER_LOG_FILE就是主节点show master status中的File
MASTER_LOG_FILE='mysql-bin.000001',
-- MASTER_LOG_POS就是主节点show master status中的Position
MASTER_LOG_POS=396;
- 启动从节点:
START slave;
- 查看从节点状态:
- 检查Master_Log_File和Read_Master_Log_Pos是否和主节点中的信息一致
- Slave_IO_Running和Slave_SQL_Running是否为YES
SHOW slave STATUS\\G;
MySQL读写分离
- MySQL数据库读写分离:
- 通过在一主一从的的基础配置上,添加一个proxysql实现MySQL读写分离
- proxysql支持MySQL协议的数据库代理,程序不会访问MySQL数据库,而是访问proxysql的代理程序
- 用户请求发送到proxysql, 如果是写请求就传递给主节点.如果是读请求就传递给从节点组中,这样的读写分离可以分担主数据库的IO压力
- 一主两从实现读写分离:
从节点配置
- 停止运行的MySQL服务:
service mysql stop
- 删除旧的MySQL的自动配置信息:
rm -f /var/lib/mysql/auto.cnf
- 打开MySQL的数据库配置文件:
vi /usr/my.cnf
- 在配置文件中的mysqld的分组下添加以下配置:
# 日志名称
log-bin=mysql-bin
# 日志格式: row, statement, mixed
binlog-format=row
# 服务器ID标识
server-id=2
# 是否只读
read_only=1
- 启动MySQL数据库服务器:
service mysql start
- 登录MySQL数据库服务器:
mysql -uroot -proot
- 执行如下语句:
CHANGE MASTER TO
-- 主节点IP地址
MASTER_HOST='192.168.166.168',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
-- MASTER_LOG_FILE就是主节点show master status中的File
MASTER_LOG_FILE='mysql-bin.000001',
-- MASTER_LOG_POS就是主节点show master status中的Position
MASTER_LOG_POS=mysql数据库备份(增量备份与恢复)(代码片段)
文章目录前言一、MySQL增量备份1.增量备份的特点2.二进制日志对备份的意义2.增量备份示例二、MySQL增量恢复1.增量恢复的场景2.丢失完全备份之后更改的数据的恢复步骤3.完全备份之后丢失所有数据的恢复步骤4.基于时间点与位置... 查看详情
使用mysqldump工具对mysql数据库实现完全备份和还原(代码片段)
1>启动数据库二进制日志查看sql_log_bin是否启用MariaDB[(none)]>showvariableslike‘sql_log_bin‘;+---------------+-------+|Variable_name|Value|+---------------+-------+|sql_log_bin|ON|+---------------+-------+1rowin 查看详情
mysql的原始监控方式(代码片段)
对于当前数据库的监控方式有很多,分为数据库自带、商用、开源三大类,每一种都有各自的特色;而对于MySQL数据库,由于其有很高的社区活跃度,监控方式更是多种多样,不管哪种监控方式最核心的就是监控数据,获取得到... 查看详情
mysql自带工具使用介绍(代码片段)
MySQL数据库不仅提供了数据库的服务器端应用程序,同时还提供了大量的客户端工具程序,如mysql,mysqladmin,mysqldump等等,都是大家所熟悉的。虽然有些人对这些工具的功能都已经比较了解了,但是真正能将这些工具程序物尽其... 查看详情
mysql日志管理备份与恢复(代码片段)
...、二进制日志4、慢查询日志5、查看日志6、实例操作二、数据库备份的重要性与分类1、数据备份的重要性2、从物理与逻辑的角度,备份分为:3、从数据库的备份策略角度,备份可分为:三、常见的备份方法1、物... 查看详情
mysql日志管理备份与恢复(代码片段)
...备份与恢复2.1数据备份的重要性2.2造成数据丢失的原因2.3数据库备份的分类2.3.1从物理和逻辑角度分1)物理备份2)逻辑备份2.4数据库的备份策略2.5MySQL完全备份2.5.1物理冷备份与恢复2.1.2专用备份工具mydump和mysqlhotocopy2.1.3M... 查看详情
mysql完全备份主从复制级联复制半同步(代码片段)
mysql完全备份1,启用二进制日志,并于数据库分离,单独存放vim/etc/my.cnf添加log_bin=/data/bin/mysql-bin创建/data/bin文件夹并授权chownmysql.mysql/data/bin2,完成备份数据库mysqldump-A--single-transaction--master-data=2|xz>/data/all.sql.xz3,对数据库 查看详情
mysql完全备份主从复制级联复制半同步(代码片段)
mysql完全备份1,启用二进制日志,并于数据库分离,单独存放vim/etc/my.cnf添加log_bin=/data/bin/mysql-bin创建/data/bin文件夹并授权chownmysql.mysql/data/bin2,完成备份数据库mysqldump-A--single-transaction--master-data=2|xz>/data/all.sql.xz3,对数据库 查看详情
mysql备份与恢复(代码片段)
一、MySQL完全备份与恢复1.数据库备份的重要性提高系统的高可用性和灾难可恢复性在生产环境中,数据的安全性至关重要任何数据的丢失都可能产生严重的后果在使用数据库的过程中,有多种原因造成数据的丢失:... 查看详情
mysql------事务(代码片段)
事务一、概念数据库事务(DatabaseTransaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面... 查看详情
mysql的备份还原(mysqldump)(代码片段)
...开启的前提下,并且二进制日志文件和完全备份存放在与数据库文件不同的磁盘上,否则当磁盘发生损坏数据将无法进行恢复。开启二进制日志开启二进制日志需要将MySQL中的sql_log_bin和log_bin这两个选项1.开启sql_log_bin系统中默认... 查看详情
安装seafileserver7.1.3不完全避坑指南(代码片段)
...户端的Python版本,所以无法包含在安装包中。MySQL/Mariadb数据库配置是第二个坑。有些系统安装的MySQL/Mariadb数据库,默认配置是不允许root用户通过网络连接服务器的,而安装脚本配置数据库一项有两个选项,分别是自动创建和使... 查看详情
mysql基础知识和常用命令总结(代码片段)
...用游标使用触发器管理事务处理全球化和本地化安全管理数据库维护改善性能.模式可以用来描述数据库中特定的表以及整个数据库,和其中表的关系行(row)表中的一个记录必须先使用use命令打开数据库,才能读取其中的数据。m... 查看详情
mysql数据库的恢复-mysql数据库的恢复(代码片段)
...、使用source命令使用source命令恢复,首先必须登录到数据库,然后通过命令恢复,操作如下:source备份数据库的路径+恢复的数据库名二、使用mysql命令mysql命令恢复,又称为非交互式恢复数据库,既无需... 查看详情
spring注解开发--spring新注解(完全替换spring配置文件使用配置类)(代码片段)
...置文件开发1.1新注解介绍1.2使用新注解进行开发1.2.1新建数据库配置文件创建数据源文件:jdbc.propertiesjdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc 查看详情
mysql开发进阶篇系列47xtrabackup(完全备份恢复,恢复后重启失败总结)(代码片段)
一.完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup--copy-back选项,它将备份复制到服务器的datadir目录下。下面是通过--target-dir 指定完全备份文件的目录,还原到datadir目录下。 xtrabackup--copy-back--target-dir=/data/backups... 查看详情
完全卸载mysql(代码片段)
问题描述:今天想换个mysql版本,报错如下:Theservicealreadyexists!Thecurrentserverinstalled:"G:\\ProgramFiles\\mysql-8.0.27-winx64\\bin\\问题原因:电脑装过mysql没有卸载干净。解决办法:等确认以前装过的所有的旧版的东西... 查看详情
3-在django中使用使用数据库(代码片段)
数据库设置在上一章节中学习了如何创建Django项目,在Django项目中创建web应用,以及如何在Django主程序的URL中引用web应用中的URL。下面来了解如何在Django中使用数据库。Django中想要使用数据库,首先要了解mysite/mysite/settings.py中... 查看详情