MySQL 备份

MySQL 备份

开启二进制日志
在 /etc/my.cnf 的 [mysqld] 配置域中添加如下配置内容

log-bin=/var/log/mysql/mysql-bin

/var/log/mysql/mysql-bin 是二进制日志文件的前缀。
例如完整的日志可能是
/var/log/mysql/mysql-bin-000001

备份用户需要的完整权限
select
reload # 允许使用该 FLUSH 语句,告诉服务器将授权表重新加载到内存中

lock tables
show view
event
trigger

process # 允许显示有关服务器内执行的线程的信息(即有关会话正在执行的语句的信息)

replication client # 读取二进制日志的位置信息,

普通文件方式
简单数据的导入和导出

编辑配置文件 my.cnf 添加如下配置项

[mysqld]
secure_file_priv = 保存到本地目录
例如

secure_file_priv = /tmp
配置完成后需要重启服务

本地目录需要给 mysql 用户授予读写权限

登录到服务器,可以验证配置项是否生效

SELECT @@GLOBAL.secure_file_priv;
或者
SHOW VARIABLES LIKE “secure_file_priv”;
假如没有使用此配置项,查询到的值为 NULL。

mysql> SELECT @@GLOBAL.secure_file_priv;
±--------------------------+
| @@GLOBAL.secure_file_priv |
±--------------------------+
| NULL |
±--------------------------+
1 row in set (0.00 sec)

执行下面的导入导出语句时就会报如下错误

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
导出
select * from school.class into outfile “/tmp/class2.db”;
导入
导入到数据文件中的列必须和表中的一一对应。包含 id 列的值。

实例文件

5,云计算1809
6,云计算1901
7,云计算1902
导入语句

载入外部“形式整齐”的数据(csv 格式的文件,没有域之家用逗号隔开):
load data infile ‘文件完整名(含路径)’ into table 表名
fields terminated by ‘域分隔符’ optionally enclosed by ‘"’
ignore 1 lines;
optionally enclosed by ‘"’ 用于识别域值的界定符
ignore 1 lines; 忽略第一行

MySQL 逻辑备份 mysqldump
逻辑备份特点
备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库。
效率相对较低
在日常工作中,我们会使用 mysqldump 命令创建SQL格式的转储文件来备份数据库。或者我们把数据导出后做数据迁移,主从复制等操作。mysqldump是一个逻辑备份工具,复制原始的数据库对象定义和表数据产生一组可执行的SQL语句。 默认情况下,生成insert语句,也能生成其它分隔符的输出或XML格式的文件。

特点
自动记录position位置。
show master status\G;
可用性,一致性
锁表机制

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

/查看帮助/
mysqldump --help
常见参数
–single-transaction 备份前启用一个事务,保证数据一致性。
仅对 InnoDB 存储引擎有效。还有需要保证没有其他的连接正在使用以下语句: ALTER TABLE, CREATE TABLE,DROP TABLE, RENAME TABLE, TRUNCATE TABLE

-l, --lock tables 对于不支持事务的存储引擎的表备份使用此选项,比如 MySAM, 可以保证备份期间的数据一致性。会依次对正在备份的每个数据库中的所有表进行锁表操作,此时只可以读。和 --single-transaction 互斥。

-x, --lock-all-tables 锁定所有数据库中的所有表。这是通过在整个转储期间采用全局读锁来实现。

有几个选项控制mysqldump如何 处理存储的程序(存储过程和函数,触发器和事件):

–events:备份事件计划程序事件

–routines:备份存储过程和函数

–triggers:备份表的触发器

–triggers默认情况下启用 该选项,以便在转储表时,它们伴随着它们具有的任何触发器。

默认情况下要禁用这些选项。需要明确设置这些选项:
–skip-events, --skip-routines, --skip-triggers。

日常用法
备份所有库

// 先配置用户名和密码
shell> vi ~/.mysql_user
[mysqldump]
user=root
password=123

shell> mysqldump --defaults-file=~/.mysql_user -h172.16.153.10 --all-databases > date +%FT%H_%M_%Sdump_all.sql

不包含 INFORMATION_SCHEMA,performance_schema,sys

备份指定的多个库

// 为了考虑篇幅,请自行添加指定用户名密码参数和指定服务器的参数
// --defaults-file=~/.mysql_user -hip
shell> mysqldump --databases db1 db2 db3 > date +%FT%H_%M_%Sdump_all.sql

备份指定库的指定几个表

shell> mysqldump db1 t1 t3 t7 > dump.sql
其他参数

–master-data=0|1|2

服务器的二进制日志必须打开

0 不记录二进制日志文件及位置:

1 以CHANGE MASTER TO 的方式记录位置,可用于恢复后直接启动从服务器:

2 以CHANGE MASTER TO 的方式记录位置,但默认被注释:

–dump-slave 用于在slave上dump数据,建立新的slave。因为我们在使用mysqldump时会锁表,所以大多数情况下,我们的导出操作一般会在只读备库上做,为了获取主库的Relay_Master_Log_File(二进制日志)和Exec_Master_Log_Pos(主服务器二进制日志中数据所处的位置),需要用到这个参数,不过这个参数只有在5.7以后的才会有

–no-data, -d 不导出任何数据,只导出数据库表结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值