700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Mysqldump逻辑备份恢复与binglog日志恢复

Mysqldump逻辑备份恢复与binglog日志恢复

时间:2018-11-23 18:27:56

相关推荐

Mysqldump逻辑备份恢复与binglog日志恢复

前言

环境:cetos7

数据库:Mysql7.4

Mysqldump简介

mysqldump 是 MySQL 自带的逻辑备份工具。

它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。语法:

远程库: mysqldump-h服务器-u数据库用户名-p数据库密码 要备份的数据库名 > 备份文件.sql

本地库: mysqldump-u数据库用户名-p数据库密码 要备份的数据库名 > 备份文件.sql命令参数:

-A, --all-databases #备份所有库-B, --databases #备份多个数据库-F, --flush-logs #备份之前刷新binlog日志-set, --default-character #指定导出数据时采用何种字符集,如果数据表不是采用默认的latin1字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。-d, --no-data, #不导出任何数据,只导出数据库表结构。-f, --force #即使在一个表导出期间得到一个SQL错误,继续。--lock-tables #备份前,锁定所有数据库表 #此项默认数据库是开启的,备份时默认锁表。--single-transaction # 此项解锁 ,数据库备份时不锁表,保证数据的一致性和服务的可用性

备份数据库

1. 备份所有库mysqldump -u数据库用户名 -p'数据库密码' -A > /opt/$(date +%F).sql # 设置备份文件名为当前系统时间2. 备份指定库mysqldump -u数据库用户名 -p'数据库密码' -B 库名1 库名2 库名3.... > /opt/$(date +%F).sql

恢复备份库

恢复停止binlog日志,应为这等于是在执行sql语句,无需记录日志1. 恢复所有库mysql -u数据库名称 -p'数据库密码' < /备份的库文件.sql2. 恢复指定库步骤一.创建一个新库,create database new; 假设创建一个new的新库。步骤二.mysql -u数据库名称 -p'数据库密码' new < /备份的库文件.sql

备份数据表

1. 备份指定表mysqldump -u数据库用户名 -p'数据库密码' 库名 表名 > /备份文件.sql2. 备份多个表mysqldump -u数据库用户名 -p'数据库密码' 库名 表名1 表名2... > /备份文件.sql3. 只备份表结构mysqldump -u数据库用户名 -p'数据库密码' -d 库名 表名 > /备份文件.sql4. 只导出表数据步骤一.mysql> show variables like "secure_file_priv"; ----查询导入导出的目录,可修改。修改完要在/etc/f 里[mysqld] 追加secure_file_priv=/新的路径,然后重启。步骤二.登陆数据查看数据mysql> show databases; #找到test库mysql> use test #进入test库mysql> select * from t3 into outfile '/sql/test.t3.bak'; #导出t3表的数据步骤三.数据的导入mysql> delete from t3; #先将原来表里面的数据清除掉,保证是空表,只保留表结构mysql> load data infile '/sql/test.t3.bak' into table t3;如果将数据导入别的表,需要创建这个表并创建相应的表结构。

恢复数据表

方法一. mysql -u数据库用户名 -p'数据库密码' 新建一个库 < 备份的库.sql方法二.创建一个库create table nwe;进入库use nwe;执行mysql> source 备份的库; -------加路径和备份的文件

通过binlog日志恢复

vim /etc/f #修改配置文件,开启数据库binlog日志log-bin=/var/log/sql-bin/mylogserver-id=1[root@mysql-server ~]# mkdir /var/log/sql-bin #创建日志目录[root@mysql-server ~]# chown mysql.mysql /var/log/sql-bin #给予日志目录mysql权限[root@mysql-server ~]# systemctl restart mysqld# 重启数据库开启日志mysql> flush logs;# 刷新binlog日志会截断产生新的日志文件[root@mysql-server sql-bin]# mysqlbinlog mylog.000001 #查看日志文件 at1 log_pos 20 为结束恢复 日志中at1 到log_pos 20 的操作[root@mysql-server sql-bin]# mysqlbinlog --start-position 1 --stop-position 20 mylog.000001 | mysql -u数据库用户名 -p'数据库密码'在数据库中 binlog日志的其他操作:1.查看所有binlog日志列表mysql> show master logs;2.查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值mysql> show master status;3.刷新log日志,自此刻开始产生一个新编号的binlog日志文件mysql> flush logs;注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;4.重置(清空)所有binlog日志mysql> reset master;5.查询第一个(最早)的binlog日志:mysql> show binlog events;6.指定查询 mysql-bin.000002 这个文件:mysql> show binlog events in 'mysql-bin.000002';7.指定查询 mysql-bin.000002 这个文件,从pos点:8224开始查起:mysql> show binlog events in 'mysql-bin.000002' from 8224;8.指定查询 mysql-bin.000002 这个文件,从pos点:8224开始查起,查询10条mysql> show binlog events in 'mysql-bin.000002' from 8224 limit 10;9.指定查询 mysql-bin.000002 这个文件,从pos点:8224开始查起,偏移2行,查询10条mysql> show binlog events in 'mysql-bin.000002' from 8224 limit 2,10\G;

======================================================================================================================================================================================================================================================================================================

辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:*☆

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。