1.备份

mysql数据库自带备份工具(逻辑备份)

语法:mysqldump -u用户名 -p -B 数据库名>备份文件名.sql

--compact                //参数,适合调试查看。去注释
-B                        //多库备份,在数据库名后加空格接另一个数据库名,(保留库名)
-F                       //刷新binlog日志,分割mysqlbinlog
--master-data=1          //显示binlog 开始位置,类似-F  ,执行
--master-data=2          // 显示文件名,位置点,便于恢复。  注释
-x                       //锁表
-l                       //只读锁表
-t                       //只备份数据
--single-transaction     //适合innodb事务数据备份

.

[root@A-host ~]# mysqldump -uroot -p123456 -S /data/3306/mysql.sock d3306>/opt/d3306.sql  

[root@A-host ~]# grep -Ev "#|\*|--|^$|\/*" /opt/d3306.sql    

[root@A-host ~]# mysqldump -uroot -p123456 -B d3306>/opt/d3306_B.sql   一般需要加-B,保留数据库的名称

[root@A-host ~]# grep -Ev "#|\*|--|^$|\/*" /opt/d3306_B.sql

[root@A-host ~]# mysqldump -uroot -p123456 -A -B --events |gzip>/opt/d3306_yasuo.sql.gz //备份并压缩

备份单个表

语法:mysqldump -u用户名 -p 数据库名 库表>备份文件名.sql

备份表结构

语法:mysqldump -u用户名 -p -d 数据库名 库表>备份文件名.sql

只备份数据

语法:mysqldump -u用户名 -p -t 数据库名 库表>备份文件名.sql

备份全部数据库

语法:mysqldump -u用户名 -p -A -B>备份文件名.sql

备份整库并分割Binlog数据库

语法:mysqldump -u用户名 -p -A -B -F>备份文件名.sql

[root@A-host ~]# mysqldump -uroot -p123456 -A -B -F --events |gzip >/opt/d3306_yasuo.sql.gz //备份并压缩

生产场景

MyISAM引擎备份命令:

mysqldump -uroot -p123456 -A -B -F --master-data=2 -x --events|gzip>/opt/d3306_yasuo.sql.gz

Innodb引擎备份命令:

mysqldump -uroot -p123456 -A -B -F --master-data=2 --events --single-transaction|gzip>/opt/d3306_yasuo.sql.gz

2.恢复

语法:mysql -u用户名 -p 数据库名<备份文件名.sql

方法1:

[root@A-host ~]# mysql -uroot -p123456 d3306</opt/d3306.sql            #加-B导出的数据,无需再指定d3306数据库名

方法2:

登录进入数据库

mysql>source /opt/d3306.sql

方法3:

mysqlbinlog增量恢复
(前提:my.conf 必须打开log-bin=mysql-bin)
binlog日志用来记录mysql内部增删改查等对mysql有更新的内容的记录。

[root@A-host ~]# mysqlbinlog --hlep

[root@A-host ~]# mysqlbinlog /data/3306/mysql-bin.000001  //查看

[root@A-host ~]# mysqlbinlog -d d3306 /data/3306/mysql-bin.000001 >1.txt //查看d3306库日志(拆库)

指定开始位置和结束位置恢复

mysqlbinlog /data/3306/mysql-bin.000001 --start-position=510 --stop-position=1312 -r pos.sql  //-r 与> 一致

指定开始和结束时间恢复

mysqlbinlog /data/3306/mysql-bin.000001 --start-datatime='2018-8-20 14:42:54' --stop-datatime='2018-8-20 14:43:54' >time.sql

备份出erp数据库

mysqldump -uerp -p123456 -d erp >/backup/devbak.sql

数据库操作记录

.mysql_history



企业级MySQL分库分表备份策略以及实战操作精讲视频课程

http://edu.51cto.com/course/808.html