通过mysqldump来实现
备份mysql
1、导出整个数据库(包括数据库中的数据)mysqldump -u username -p dbname > dbname.sql
2、导出数据库结构(不含数据)
mysqldump -u username -p -d dbname > dbname.sql
3、导出数据库中的某张数据表(包含数据)
mysqldump -u username -p dbname tablename > tablename.sq
mysqldump -uroot -p -B dbname --table tablename > tablename.sql
4、导出数据库中的某张数据表的表结构(不含数据)
mysqldump -u username -p -d dbname tablename > tablename.sql
5、备份数据库时使用参数(--ignore-table)排除某个表或多个表
mysqldump -uroot -p“password” --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > /opt/backup.sql
sql文件还原方法
1、mysql -uroot -p"db_password" -f dbname < backup.sql (-f 参数表示在导出过程中忽略出现的SQL错误)
nohup mysql -uroot -p"db_password" -f dbname < backup.sql > /dev/null 2>&1 & (在导入较大的sql文件时可以放到后台执行)
2、mysql -uroot -p 先登录到数据库,use dbname; 切换到需要导入的库中,然后执行 source /opt/backup.sql; 这样就可以导入了
mysqldump 参数详解
--host 指定要备份数据库的服务器
--port MySQL服务器的端口号
--user 连接MySQL服务器的用户名
--password 连接MySQL服务器的密码
--add-locks 备份数据库表时锁定数据库表
--databases, -B 导出多少数据库,参数后面所有参量都被看作数据库名
--all-databases 备份MySQL服务器上的所有数据库
--all-tablespaces , -Y导出全部表空间 -y不导出任何表空间信息
--add-drop-table 在每个创建数据库表语句前添加删除数据库表的语句
--no-create-db 禁止生成创建数据库语句
--no-create-info 禁止生成创建数据库库表语句
--complete-insert, -c使用完整的insert语句(包含列名称),这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败
--no-data, -d 不导出任何数据,只导出数据库表结构
--no-create-info, -t 只导出数据,而不添加CREATE TABLE 语句
--no-create-db, -n 只导出数据,而不添加CREATE DATABASE 语句
--ignore-table 导出数据库时忽略某个表
--force,-f 在导出过程中忽略出现的SQL错误,当出现错误时仍然继续后面的操作
--add-drop-database 每个数据库创建之前添加drop数据库语句
--add-drop-table 每个数据表创建之前添加drop数据表语句,默认为打开状态,使用–skip-add-drop-table取消选项
--add-locks在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE,默认为打开状态,使用–skip-add-locks取消选项
--default-character-set 设置默认字符集,默认值为utf8
--comments 附加注释信息,默认为打开,可以--skip-comments取消
--compact导出更少的输出信息(用于调试),去掉注释和头尾等结构,(可以使用选项 –skip-add-drop-table –skip-add-locks –skip-comments –skip-disable-keys)
--events, -E 导出事件
--flush-privileges 在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句
--flush-logs 开始导出之前刷新日志,请注意,假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志
除使用–lock-all-tables或者–master-data外,在这种情况下,日志将会被刷新一次,相应的表同时被锁定,因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–master-data 和–flush-logs
--delayed-insert 采用延时插入方式(INSERT DELAYED)
--comments 添加注释信息
--compact 压缩模式,产生更少的输出
--complete-insert 输出完成的插入语句
--default-character-set 指定默认字符集
--lock-tables 备份前,锁定所有数据库表
--lock-all-tables, -x提交请求锁定所有数据库中的所有表,以保证数据的一致性,这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项
--debug 输出debug信息,用于调试(默认值为d:t:o,/tmp/mysqldump.trace)例 mysqldump -uroot -p –all-databases –debug=” d:t:o,/tmp/debug.trace”
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?