Mysql备份与恢复

来源:这里教程网 时间:2026-03-01 15:40:26 作者:
1.热备类型
1.1 mysqldump
Mysql官方自带,单线程、逻辑备份,生产上用的少 ,一致性读
1.2 mysqlpump
Mysql官方自带,多线程、逻辑备份,无法获取Blog日志等
1.3 mydumper
Mysql社区开源免费,多线程,逻辑备份,会启动FTWRL,锁表
1.4 xtrabackup
percona开源免费,多线程,物理备份,非官方,会启动FTWRL, 推荐使用,速度快
物理备份优先逻辑备份,逻辑备份为辅
2.备份原理
mysqldump
prompt session1>set tx_isolation='repeatable-read';   -重复读
prompt session1>start transaction with consistent snapshot;  --快照模式
备份:mysqldump -uroot -p wmp --single-transaction --master-data=2 > /root/wmpback.sql
导入:source  /root/wmpback.sql
通过一致性快照,实现备份
source ...  导入数据
mysqldump   --查看帮助
mysqldump --help  
diff back.sql back2.sql   --查看区别
mysql> show variables like '%gen%'  --查看日志是否开启
+------------------+---------------------------+
| Variable_name    | Value                     |
+------------------+---------------------------+
| general_log      | OFF                       |
| general_log_file | /var/lib/mysql/Jeames.log |
+------------------+---------------------------+
mysql> show variables like '%out%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 10       |
| delayed_insert_timeout      | 300      |
| have_statement_timeout      | YES      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| innodb_status_output        | OFF      |
| innodb_status_output_locks  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| log_output                  | FILE     |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 60       |
| wait_timeout                | 28800    |
+-----------------------------+----------+
mysql> set global log_output='TABLE';   --日志输出到表里
mysql> set global general_log = ON;  
此时Mysql数据库会有一个表general_log
mysql> select event_time,thread_id,left(argument,64) from general_log limit 200;
show variables like '%sec%';
+--------------------------+-----------------------+
| Variable_name            | Value                 |
+--------------------------+-----------------------+
| require_secure_transport | OFF                   |
| secure_auth              | ON                    |
| secure_file_priv         | /var/lib/mysql-files/ |
+--------------------------+-----------------------+
以上路径可以修改
pe -ef | grep mysql
kill -9 

相关推荐