分享按钮

MYSQL数据备份

MYSQL / 1933人浏览 / 0人评论

数据库备份

逻辑备份和物理备份

逻辑备份的结果SQL语句,适用于所有存储引擎

物理备份是对数据库目录的拷贝,对于内存表只备份结构

全量备份和增量备份

全量备份是对整个数据库的一个完整备份

增量备份是在上次全量或增量备份基础上,对于更改数据进行备份

使用myslqdump进行备份

mysqldump [OPTIONS] database [tables]

mysqldump [OPTIONS] --database DB1[DB2..]

mysqldump [OPTIONS] --all databases [OPTIONS]

mysqldump 的常用参数

-u,--user=name

-p,--password [=name]

--single-transaction


-l,--lock-tables

-x,--lock-all-tables

--master-data =[1/2] 

MYSQL 新增一个账号

create user 'backup'@'localhost' identified by '123456';

给这个账号赋权

grant select,reload,lock tables,replication client,show view,event,process on *.* to 'backup'@'localhost';

备份进入 data/db_backup/  全库备份

mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers  --events mc_orderdb> mc_orderdb.sql

回车会提示输入密码  

查看备份的mc_orderdb是否包含了所有的表

grep "CREATE TABLE" mc_orderdb.sql;

备份单表

mysqldump -ubackup -p --master-data=2 --single-transaction --routines --triggers  --events mc_orderdb order_master> order_master.sql

备份mysql

mysqldump -ubackup -p --master-data=1 --single-transaction --routines --triggers  --events --all-databases > mc.sql

备份数据恢复

mysql -uroot -p -e"create database bak_orderdb"

mysql -uroot -p bak_orderdb<mc_orderdb.sql (需要删除mc_orderdb.sql 里面GTID部分)

误删数据恢复

全备恢复

mysql -uroot -p mc_orderdb < mc_orderdb.sql

查看二进制日志 

cd /home/mysql/sql_log

ls -lh

mysqlbinlog --base64-output = decode-rows -vv --start-position=84882 -- database=mc_orderdb mysql-bin.000011 | grep -B3 DELETE | more

实时二进制日志备份

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'ip' IDENTIFIDE BY "XXXX"

mkdir -p binlog_backup

mysqlbinlog --raw --read-from-remote-server \ --stop-never --host localhost

--port 3306 \ -u repl -p xxxx 二进制日志名


感谢博主,喝杯咖啡~