时间:2021-07-01 10:21:17 帮助过:2人阅读
mysqldump DB_NAME [tbname1] [tbname2]
# mysqldump -uroot -pYOUR_PASSWORD DB_NAME > test.sql mysql> create database test2; mysqldump -uroot -pYOUR_PASSWORD test2 < test.sql
备份所有的库
mysqldump --all-databases > test.sql
备份指定的多个库
--databases tb1 tb2 .....
恢复
mysql < test.mysql mysql database_name < test.sql
备份前要加锁
mysqldump --lock-all-tables: 请求锁定所有表之后在备份, 对 MyISAM, InnoDB, Aria 做温备 mysqldump --lock-tables tables_name [table1] [table2]
如果是 innodb
mysqldump --single-transaction: 能够对 InnoDB 存储引擎实现热备, 这时候就不用 lock-all-tables
备份代码
--events: 备份事件调度器代码 --routines: 备份存储过程和存储函数 --triggers: 备份触发器
备份时滚动日志:
--flush-logs: 备份前, 请求到锁之后滚动日志
复制时的同步位置标记
--master-data={0|1|2} 0 表示不记录 (默认) 1 表示记录为 change master 语句 2 表示记录为注释的 change master 语句 dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master. It causes the dump output to include a CHANGE MASTER TO statement that indicates the binary log coordinates (file name and position) of the dumped server. These are the master server coordinates from which the slave should start replicating after you load the dump file into the slave
使用 mysqldump 备份
请求锁: –lock-all-tables 或使用–single-transaction 进行 innodb 热备
滚动日志: –flush-logs
选定要备份的库 –databases
记录二进制文件及位置 –master-data
手动请求全局锁
> flush tables with read lock > flush logs; (shell 下: mysqladmin flush-logs) > unlock tables
恢复:
建议: 关闭二进制日志, 关闭其他用户的写操作 set sql_bin_log = 0;
应该用 source test.sql
备份策略: 基于 mysqldump
备份:
mysqldump+二进制日志文件
周日做一次完全备份, 备份的同时滚动日志
周一至周六: 备份二进制日志
恢复: 完全备份+各二进制文件至此刻的事件
对于 MySQL 配置文件, 以及与 MySQL 相关的 OS 配置文件在每次修改后都应该直接进行备份
步骤:
mysqldump 和 基于快照的备份
标签: