Mysql表数据的备份

场景:更新数据造成混乱,需要还原数据。

备份数据方式

1.备份到物理机

mysqldump -h 域名 -P 端口 -u用户 -p密码 库名 表名 > /路径/表名.{$date}.bak

mysqldump -u username -p'xxx' -T target_dir db_name tb_name [option];

其中option参数是以下几种可选参数:

--fields-terminated-by 'string' 字段分隔符

--fields-enclosed-by 'char' 字段引用符

--fields-optionally-enclosed-by 'char' 字段引用符,只在char,varchar,text等字段类型上生效

--fields-escaped-by 'char' 转义字符

--lines-terminated-by 'string' 记录结束符,即换行符

2.备份到数据库中

create table one_bak like one;  复制表结构
insert into one_bak select * from one; 复制表内容

insert into A (c1,c2) select col1,col2 from B;表结构不同或字段不同

3.select into outfile命令

select *  into outfile XX.sql from test1;

LOAD DATA INFILE "/home/mark/XX.sql" INTO TABLE test1;

 比较下备份表时,as与like的不同

as用来创建相同表结构 + 表数据但无索引    oracle支持 【create table A as select * from B where 1=2】只是表结构

like 创建表结构 + 索引 但无数据                       oracle不支持【create table A like B】

oracle 语法:select *  into A from B;  与上mysql方式比较看下即可

注意:一般分布操作备份完整结构+数据

1.create table A like B;

2.insert into A select * from B;

提醒:create table user_department_bak select * from user_department;

1.不复制索引【主键+普通索引都无】2.主键idAUTO_INCREMENT也没有【`department_id` bigint NOT NULL DEFAULT '0'】     原来【`department_id` bigint NOT NULL AUTO_INCREMENT,】

误删除数据或者操作前没有备份表数据

查询binlog时的步骤

1.show variables like '%log_bin%' # 查看binlog是否开启 【log_bin    ON】开启

show variables like '%datadir%'; # 查看binlog文件存放位置【datadir    /var/lib/mysql/】

上述也可写 

select @@basedir as baseDir from dual ;

select @@datadir as dataDir from dual ;

可执行查看语句

【 show master logs;show master status;show BINARY logs;

show binlog events in'binlog.000004'】看着难受可下述用mysqlbinlog工具查看

2.进如binlog文件目录,查看日志文件

cd  /var/lib/mysql/    查看binlog.000005 等名称文件。[有的名为mysql-bin.000014]

3.进入到mysqlbinlog目录  find / -name mysqlbinlog 【不知道先查下位置】

4.查看日志

mysqlbinlog --no-defaults -v --base64-output=decode-rows --database=sxgdb --start-datetime="2023-04-07 06:30:00" --stop-datetime="2023-04-07 06:40:00" /var/lib/mysql/binlog.000005 > 0407log.txt

参数:

--start-datetime="2023-04-07 06:30:00" 指定开始时间

--start-position=199 指定位于文件中的位置 [下一个事件已上一个事件结束位置为起点]

Mysql表数据的备份_第1张图片

你可能感兴趣的:(mysql,数据库,sql)