无论建站采用的虚拟主机、VPS、还是服务器,甚至有些服务商提供全管理型服务器,为了确保网站数据、项目数据的安全。如何保证在发生数据丢失后能够更快速的恢复数据并管理好网站,就需要定期登录服务器备份数据到本地或者备份服务器。从个人角度考虑,即便商家提供有备份服务、快照备份、甚至全管理,也需要自己手动不定时的备份Linux VPS、服务器中网站文件、MySQL数据库到其他备用机器、或者本地电脑中,这样才能确保安全。
为什么需要备份MySQL数据库? 在网络环境中什么最重要?服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 感觉在网络环境中应该没有什么比数据更为重要。而对于数据库而言,首先要求要拥有一个完整的备份,有了备份才能做很多事,同时也会省了很多事。其次是安全,无论是数据备份的安全还是数据本身或者研发使用中的安全,都值得关注。然后是数据库本身的使用,合情合理的使用。最后对于你所维护的数据库你需要拥有详细的规划,无论是管理角度还是使用角度都需要。
在网络环境中MySQL数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种:
硬件故障 软件故障 自然灾害 黑客攻击、勒索病毒等 误操作 (占比最大。如误删库、删表、删字段等) 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 可以根据这些数值从而定制符合特定环境中的数据备份策略。
能够容忍丢失多少数据 恢复数据需要多长时间 需要恢复哪一些数据 MySQL数据库使用MySQLdump命令备份 数据和使用MySQL命令还原/恢复 数据 不管是Oracle数据库还是SQL Server数据库,每个数据库都有自己的一套数据备份和恢复的方法,MySQL数据库也不例外。MySQL数据库备份和恢复用到了两个命令,分别是“mysqldump”和“mysql”,使用“mysqldump”命令进行数据库备份,使用“mysql”命令对数据库进行数据恢复 。
系统命令行 :点击电脑左下角的“开始” 按钮——》在“搜索程序和文件”输入框中输入“cmd” ,打开系统命令执行程序 窗口。直接执行相关的MySQL数据库备份与还原命令语句即可。
MySQL命令行 :点击电脑左下角的“开始” 按钮——》点击“所有程序”——》MySQL——》MySQL Server 5.5——》MySQL 5.5 Command Line Client ,打开“MySQL数据库控制台” 窗口---》输入“MySQL数据库的密码” ---》直接执行相关的MySQL数据库还原命令语句即可。
使用MySQLdump命令备份数据库 PS:用“系统命令行” 使用MySQLdump命令备份数据库
语法一、备份全部数据库的数据和结构 mysqldump -u用户名 -p密码 -A > 保存文件路径
例如:mysqldump -uroot -p123456 -A >D:\data\backup\all.sql
语法二、备份全部数据库的结构(加 -d 参数) mysqldump -u用户名 -p密码 -A -d > 保存文件路径
例如:mysqldump -uroot -p123456 -A -d >D:\data\backup\all_struct.sql
语法三、备份全部数据库的数据(加 -t 参数) mysqldump -u用户名 -p密码 -A -t > 保存文件路径
例如:mysqldump -uroot -p123456 -A -t >D:\data\backup\all_data.sql
语法四、备份单个数据库中所有的表结构和数据(数据库名wordpress_1) mysqldump -u用户名 -p密码 数据库名 > 保存文件路径
mysqldump -h服务器IP -u用户名 -p密码 数据库名 > 保存文件路径
例如:mysqldump -uroot -p123456 wordpress_1 >D:\data\backup\wordpress_1.sql
例如:mysqldump -hlocalhost -uroot -p123456 wordpress_1 > D:\data\backup\wordpress_1.sql
语法五、备份单个数据库中所有表结构;只导出表结构, 不导出表中的数据 mysqldump -u用户名 -p密码 数据库名 -d > 保存文件路径
例如:mysqldump -uroot -p123456 wordpress_1 -d >D:\data\backup\wordpress_1_struct.sql
语法六、备份单个数据库中所有表中的数据;只导出表中的数据,不导出表结构 mysqldump -u用户名 -p密码 数据库名 -t > 保存文件路径
例如:mysqldump -uroot -p123456 wordpress_1 -t >D:\data\backup\wordpress_1_data.sql
语法七、备份多个表的数据和结构(数据,结构的单独备份方法同上) mysqldump -u用户名 -p密码 数据库名 表1 表2... > 保存文件路径
例如:mysqldump -uroot -p123456 wordpress_1 wp_posts wp_users >D:\data\backup\tables.sql
语法八、备份指定表的结构;只导出表结构, 不导出表中的数据 mysqldump -u用户名 -p密码 -B 数据库名 --tables 表名 -d > 保存文件路径
例如:mysqldump -uroot -p123456 -B db_name --tables name -d >D:\data\backup\name_d.sql
语法九、备份指定表数据;只导出数据,不导出表结构 mysqldump -u用户名 -p密码 -t 数据库名 --tables 表名 > 保存文件路径
例如:mysqldump -uroot -p123456 -t db_name --tables name >D:\data\backup\name_t.sql
语法十、一次性备份指定的多个数据库 mysqldump -u用户名 -p密码 --databases 数据库1 数据库2... > 保存文件路径
例如:mysqldump -uroot -p123456 --databases db1 db2 >D:\data\backup\muldbs.sql
使用MySQL命令还原/恢复数据库 PS:在“MySQL命令行” 使用source命令还原/恢复数据库(使用source 命令,需要先登录数据库,在数据库操作界面调用该指令进行还原);在“系统命令行” 使用MySQL命令还原/恢复数据库。
语法一、还原全部数据库 (1) MySQL命令行:mysql>source 用于恢复全部数据库的备份文件路径
例如:mysql>source D:\data\backup\all.sql
(2) 系统命令行:mysql -u用户名 -p密码 < 用于恢复全部数据库的备份文件路径
例如:mysql -uroot -p123456 < D:\data\backup\all.sql
语法二、还原单个数据库(需指定数据库) (1) MySQL命令行:mysql>use 数据库名 ——》mysql>source 用于恢复单个数据库的备份文件路径
例如:mysql>use wordpress_1 ——》mysql>source D:\data\backup\wordpress_1.sql
(2) 系统命令行:mysql -u用户名 -p密码 数据库名 < 用于恢复单个数据库的备份文件路径
例如:mysql -uroot -p123456 wordpress_1 < D:\data\backup\wordpress_1.sql
语法三、还原单个数据库的多个表(需指定数据库) (1) MySQL命令行:mysql>use 数据库名 ——》mysql>source 用于恢复数据库多个表的备份文件路径
例如:mysql>use wordpress_1 ——》mysql>source D:\data\backup\tables.sql
(2) 系统命令行:mysql -u用户名 -p密码 数据库名 < 用于恢复数据库多个表的备份文件路径
例如:mysql -uroot -p123456 wordpress_1 < D:\data\backup\tables.sql
语法四、还原多个数据库(一个备份文件里有多个数据库的备份,此时不需要指定数据库) (1) MySQL命令行:mysql>source 用于恢复多个数据库的备份文件路径
例如:mysql>source D:\data\backup\muldbs.sql
(2) 系统命令行:mysql -u用户名 -p密码 < 用于恢复多个数据库的备份文件路径
例如:mysql -uroot -p123456 < D:\data\backup\muldbs.sql
使用MySQLdump命令备份远程数据库到本地电脑 1. 首先在本地创建一个数据库(用来将远程备份的数据库导入到该数据库中) (1) MySQL命令行:mysql>create database 数据库名;
例如:mysql>create database test; 这里的test和远程的数据库名字一样
(2) 系统命令行:mysql -u用户名 -p密码 ——》 mysql>create database 数据库名; ——》 exit;
例如:mysql -uroot -p123456 ——》 mysql>create database test; ——》 exit;
2. 备份远程数据库到本地电脑中(备份的数据库文件名为testbackup.sql) 系统命令行:mysqldump -h 服务器数据库IP -u用户名 -p密码 数据库名 --default-character-set=utf8mb4 --opt -Q -R --skip-lock-tables > 保存文件路径
mysqldump -h 102.126.101.135 -uroot -p123456 test --default-character-set=utf8mb4 --opt -Q -R --skip-lock-tables > D:\data\backup\testbackup.sql
3. 然后把备份的文件(testbackup.sql)导入到本地数据库中(数据库名:test) (1) MySQL命令行:mysql>use 数据库名 ——》 mysql>source 用于恢复数据库的备份文件路径
例如:mysql>use test; ——》mysql>source D:\data\backup\testbackup.sql;
(2) 系统命令行:mysql -h服务器IP -u用户名 -p密码 数据库名 < 用于恢复数据库的备份文件路径
例如:mysql -hlocalhost -uroot -p123456 test < D:\data\backup\testbackup.sql
MySQLdump的常用选项 MySQLdump命令选项 说明 --host=host_name -h host_name 从给出的主机名备份,如果没给出,则默认为localhost --user=user_name -u user_name 连接MySQL服务器使用的用户名 --password[=password] -p[password] 连接数据库的密码。如果使用短标签时,在密码与p之间不要有空格,如果你省略了password的值,mysqldump会提示输入。为了安全起见,当然你也可以在选项文件中提供,避免使用时输入。 --port=port_num -P port_num 制定TCP/IP连接时的端口号 --all-databases -A 备份所有数据库中的所有表,效果等同于--database 后跟随所有数据库名。 --databases -B 备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为数据库名,紧随其后的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名进行备份。在每一个数据库备份前都会添加CREATE DATABASE 与 USE指令 --no-data -d 只导出表结构,不会在表中记录信息(不创建INSERT语句)。这就在你只想CREATE TABLE时就很有用了(比如,只想备份表结构) --no-create-info -t 只导出表中的数据而不需要DDL(数据库定义语句),不创建CREATE TABLE语句。注意:不过此选项不排除mysqldump时会在日志文件中记录文件组与表空间,可是,你可以使用--no-tablespaces来完成。 --no-tablespaces -y CREATE LOGFILE GROUP与CREATE TABLESPACE指令不会被写进备份文件。 --tables 覆盖 --databases or -B选项,后面所跟参数被视作表名 --quick -q 快速导出。在备份数据量比较大的表时有用。会将数据读入内存,在输出完成之前会存在内存缓冲区。 --force -f 即使在备份表出现sql错误时依然继续执行。这个选项的使用场景之一是:在备份时出现错误,因为表已被删除。如果不使用此选项,mysqldump则会存在错误信息。如果使用,则会将错误信息打印出来后继续执行SQL指令。 --xml -X 导出为xml格式文件 --default-character-set=charset_name 使用charset_name作为字符集(如:utf8mb4、gbk等) --quote-names -Q 会将逃逸字符进行转义,“‘” '"'会换位'`',如果是ANSI_QUOTES SQL模式支持的话,会转为‘"‘’,此选项默认启动,如果需要关闭,可以使用--skip-quote-names。 --routines -R 包括存储程序(过程和函数)的倾倒数据库输出。这个选项需要mysql.proc表的SELECT权限。使用,例程生成的输出包含创建过程和创建函数语句创建例程。然而,这些语句不包括属性,如例程创建和修改时间戳,所以当例程.重新加载,创建时间戳等于重新加载时间。如果你需要创建例程和原来的时间戳属性,不使用,例程。相反,转储和重载mysql的内容。proc直接表,使用MySQL账户有合适的MySQL数据库特权。 --opt 相当于 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset,它提供了一个快速备份和还原的功能。
使用MySQL数据库管理工具phpMyAdmin导出与导入MySQL数据库的操作方法 如果数据库比较小,可以采用“PHPMyAdmin工具”的方法备份与还原,不过需要注意一个问题。如果我们是需要转移服务器,用PHPMyAdmin导入备份的数据时需要注意备份数据库的版本兼容问题(即:备份数据库时“最大程度兼容数据库系统或旧版本的 MySQL 服务器”中选择“myslq323”兼容模式)。
操作方法:在浏览器中访问http://你的域名/phpMyAdmin/(或“登录主机管理系统,找到【phpMyAdmin】”)——》输入“MySQL数据库的用户名和密码” 登陆“PHPMyAdmin工具”操作界面——》选择数据库——》点击“导出”或“导入”按钮。
注意事项
1、使用PHPMyAdmin工具还原数据库时,数据库必须已经创建了,否则还原不了(因为备份的sql文件中,不一定备份了数据库创建语句)。
2、数据库备份文件大于2M时,用phpmyadmin没办法还原数据库了,这时可以使用上面的命令行备份/还原数据库。
3、因为MySQL不同的版本导入的数据可能出现问题,因此“最大程度兼容数据库系统或旧版本的 MySQL 服务器”中选择“myslq323”兼容模式可以导出多个版本进行备份,这是以防止你的数据要迁移到别的数据库进行导入时遇到的问题,如果你只是单纯的备份,那么这里可以不需要选择最大程度兼容。