DataBases
简介
MariaDB
MySQL
数据类型
创建表
索引 index
主键 primary key
外键 foreign key
数据导入与导出
where条件判断
用户授权与密码
数据备份与恢复
数据热备
主从同步
读写分离
多实例
分库分表
集群-MHA
集群-PXC
存储引擎
本文档使用 MrDoc 发布
-
+
首页
数据备份与恢复
## 物理备份 缺点:跨平台性差、备份时间长、冗余备份、浪费存储空间 cp物理备份(数据库A) ```asp cp -r /var/lib/mysql /root/mysql.bak ``` tar物理备份(数据库A) ```asp tar -zcvf /root/mysql.tar.gz /var/lib/mysql/* ``` 关闭mysql(数据库B) ```asp systemctl stop mysqld ``` 删除数据库下的物理文件(数据库B) ```asp rm -rf /var/lib/mysql ``` 将数据库A的数据导入到数据库B(数据库B) ```asp cp -r /root/mysql.bak /var/lib/mysql ``` 将文件属主属组改为mysql用户 ```asp chown -R mysql:mysql /var/lib/mysql ``` 启动mysql(数据库B)此时与数据库A数据相同了 ```asp systemctl start mysqld ``` ## 逻辑备份 缺点:效率低、备份还原速度慢、锁表、备份过程中数据插入和更新操作被阻塞 全量备份 ```asp mysqldump -uroot -p'JCss%6!8' --all-databases > /mybak/alldb.sql ``` 全量恢复 ```asp mysql -uroot -p'JCss%6!8' < /root/alldb.sql ``` 单库备份 ```asp mysqldump -uroot -p'JCss%6!8' db1 > /mybak/db1.sql ``` 单库恢复 ```asp mysql -uroot -p'JCss%6!8' db1 < /root/db1.sql ``` 备份单个表 ```asp mysqldump -uroot -p'JCss%6!8' db1 t1 > /mybak/db1_t1.sql ``` 同时备份2个库(加-B参数) ```asp mysqldump -uroot -p'JCss%6!8' -B db1 db2 > /mybak/db1-db2.sql ``` 将备份的A数据库传给B数据库 ```asp scp /mybak/db1.sql root@192.168.1.16:/root ``` 在B数据库恢复单个库 ```asp mysql -uroot -p'JCss%6!8' db1 < /root/db1.sql ``` 恢复多个数据库不需要指定库名 ```asp mysql -uroot -p'JCss%6!8' < /root/db1-db2.sql ``` ## 增量备份与恢复 binlog日志:(使用mysql的binlog日志可以实现数据的增量备份与恢复 binlog日志:mysql服务日志文件的一种,记录除查询以外的所有sql命令,用于数据备份与恢复,配置mysql主从同步的必要条件 默认日志文件路径:/var/lib/mysql/主机名-bin.000001 默认索引文件路径:/var/lib/mysql/主机名-bin.index 修改主配置文件添加日志ID(1-255都可选,必须唯一,使用IP主机位即可)启动日志,并修改存储路径(不加=默认) ```asp vim /etc/my.cnf ``` ```asp [mysqld] server_id=16 log-bin=/mylog/plj ``` 创建指定的日志存放目录 ```asp mkdir /mylog ``` 修改所属主为mysql ```asp chown mysql /mylog/ ``` 重启服务(日志文件默认存满1G更换1个,手动重启服务也会自动生成) ```asp systemctl restart mysqld ``` 查看日志信息(-e参数可以不进入数据库执行命令) ```asp mysql -uroot -p'JCss%6!8' -e 'show master status;' ``` ```asp +------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | #File:日志存放路径 +------------+----------+--------------+------------------+-------------------+ #position:偏移量(除查看之外的命令都会增加值) | plj.000001 | 1198 | | | | +------------+----------+--------------+------------------+-------------------+ ``` 刷新日志1次 ```asp mysql -uroot -p'JCss%6!8' -e 'flush logs;' ``` 刷新日志2次 ```asp mysql -uroot -p'JCss%6!8' -e 'flush logs;' ``` 日志文件默认存满1G更换1个,手动刷新也会自动生成 ```asp mysql -uroot -p'JCss%6!8' -e 'show master status;' ``` 备份时候执行刷新日志,也会自动生成新的 ```asp mysqldump -uroot -p'JCss%6!8' --flush-logs db3 > /mybak/db3.sql ``` 删除编号4之前的日志 ```asp mysqldump -uroot -p'JCss%6!8' -e 'purge master logs to "plj.000004";' ``` 删除所有的日志重新生成编号1 ```asp mysql -uroot -p'JCss%6!8' -e 'reset master'; ``` 查看binlog日志内容(乱码版) ```asp mysqlbinlog /mylog/plj.000001 ``` **binlog日志的输出模式及修改** 查看binlog相关的变量 ```asp show variables like "%binlog%"; ``` ```asp +-----------------------------------------+----------------------+ | Variable_name | Value | +-----------------------------------------+----------------------+ | binlog_cache_size | 32768 | | binlog_checksum | CRC32 | | binlog_direct_non_transactional_updates | OFF | | binlog_error_action | ABORT_SERVER | | binlog_format | ROW | #默认模式变量名 | binlog_group_commit_sync_delay | 0 | | binlog_group_commit_sync_no_delay_count | 0 | | binlog_gtid_simple_recovery | ON | | binlog_max_flush_queue_time | 0 | | binlog_order_commits | ON | | binlog_row_image | FULL | | binlog_rows_query_log_events | OFF | | binlog_stmt_cache_size | 32768 | | innodb_api_enable_binlog | OFF | | innodb_locks_unsafe_for_binlog | OFF | | log_statements_unsafe_for_binlog | ON | | max_binlog_cache_size | 18446744073709547520 | | max_binlog_size | 1073741824 | | max_binlog_stmt_cache_size | 18446744073709547520 | | sync_binlog | 1 | +-----------------------------------------+----------------------+ ``` 查看相关变量名里的设置 ```asp show variables like "binlog_format"; ``` ```asp +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | #报表模式:statement、行模式:row、混合模式:mixed +---------------+-------+ ``` 修改主配置文件,指定新的日志模式为混合模式 ```asp vim /etc/my.cnf ``` ```asp [mysqld] binlog_format="mixed" ``` 重启服务加载配置文件 ```asp systemctl restart mysqld ``` 再次查看 ```asp show variables like "binlog_format"; ``` ```asp +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | MIXED | +---------------+-------+ ``` 再次查看日志可以查看增、删、改的命令了 ```asp mysqlbinlog /mylog/plj.000002 ``` binlog日志恢复数据 备份选项可以根据一下2点:mysqlbinlog 偏移量/时间点 /目录/日志文件名 | mysql -uroot -p密码 偏移量:--start-position=111 --stop-position=222 时间点:--start-datetime="yyyy-mm-dd hh:mm:ss" --stop-datetime="yyyy-mm-dd hh:mm:ss" 将A数据库的日志文件传输给B数据库 ```asp scp /mylog/plj.000002 root@192.168.1.16:/root/ ``` B数据库使用日志文件进行增量数据恢复 ```asp mysqlbinlog /root/plj.000002 | mysql -uroot -p'JCss%6!8' ``` B数据库指定偏移量恢复指定范围的数据 ```asp mysqlbinlog --start-position=321 --stop-position=758 /root/plj.000002 | mysql -uroot -p'JCss%6!8' ```
done
2024年5月11日 11:14
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码