赞
踩
场景:更新数据造成混乱,需要还原数据。
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用来创建相同表结构 + 表数据但无索引 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 指定位于文件中的位置 [下一个事件已上一个事件结束位置为起点]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。