1)备份数据库
[root@localhost ~]# systemctl stop mysqld //停止MySQL服务 [root@localhost ~]# mkdir /backup //新建文件夹,用于存放备份 [root@localhost ~]# tar zcf /backup/mysql-$(date +%F).tar.gz /usr/local/mysql/data //用tar命令将MySQL服务的根目录复制到指定目录。 [root@localhost ~]# ll /backup //查看备份成功的tar包 -rw-r--r--. 1 root root 741234 7月 23 17:00 mysql-2019-07-23.tar.gz2)模拟故障
[root@localhost ~]# mkdir /bak [root@localhost ~]# mv /usr/local/mysql/data /bak3)恢复数据库
[root@localhost ~]# tar zxf /backup/mysql-2019-07-23.tar.gz -C / //将tar包解压到指定路径,包中已经包含路径,所以只打“/”即可! [root@localhost ~]# ls /usr/local/mysql/ //查看是否存在data目录 bin data include man my-new.cnf README share support-files COPYING docs lib my.cnf mysql-test scripts sql-bench [root@localhost ~]# systemctl start mysqld //启动mysql服务物理冷备份到这里已经完成!
mysqldump备份与恢复
通过mysqldump命令可以将指定的库、表或全部的库导出为SQL脚本,便于该命令在不同版本的MySQL服务器上使用。
1)备份数据库
实验环境,mysql管理员没有密码,如果有密码使用“”-p”选项
备份文件是可以查看的,可以使用“cat”、“more”、“grep”等文本工具进行查看。
2)模拟故障并恢复数据库
[root@localhost ~]# mysql -u root -e 'drop table mysql.user;' [root@localhost ~]# mysql -u root -e 'show tables from mysql;' //“-e”选项用来不进入数据库的情况下输入SQL语句并显示结果 +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | innodb_index_stats | | innodb_table_stats | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | +---------------------------+ //确认user表已经不存在当备份文件中只包含表的备份,执行导入操作时必须指定库名,且目标库必须已经存在;
若备份文件已经包括完整的库信息,则执行导入操作时无需指定库名。
当然,备份整个mysql数据库的SQL语句文件,可以恢复任意一个库或表。
mysql增量备份与恢复