mysql备份

本文详细介绍了如何使用mysqldump进行数据库备份,包括全量备份、压缩备份以及特定库的备份。同时,也给出了数据库还原的步骤。在备份过程中可能遇到的错误,如最大执行时间超出、权限问题等,文章都提供了相应的解决办法。此外,还分享了利用sed命令在备份文件中进行字符替换的操作。
摘要由CSDN通过智能技术生成

用法

mysqldump -uroot -p --databases test > /home/test.sql
mysqldump -uroot -h127.0.0.1 -p --databases test --single-transaction --set-gtid-purged=off --max_allowed_packet=512M > /home/test.sql

参数说明

-uroot:数据库用户名为root

-h172.16.43.131:指定mysql数据库IP地址

-p:密码

--databases test:设置导出的数据库为test,可以同时导出多个库,库名用空格隔开,如--databases test1 test2,也可以导出所有库,使用--all-databases参数

--single-transaction:设置事务隔离级别为可重复读,保证dump期间,其他线程对提交的数据不会影响本次数据,改期间也不会锁表

--lock-all-tables:锁所有表,相对--single-transaction,dump期间,其他线程都不能提交数据(默认策略)

--no-data:不备份数据,只备份数据库结构

--set-gtid-purged=off:关闭全局事务 ID (GTID)

--max_allowed_packet=512M:设置max_allowed_packet大小,值最好等于my.conf配置的大小,否则会出现Got packet bigger than 'max_allowed_packet' bytes when dumping table `xxx` at row: 3540错误

更多参数说明可查看官网:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html,或者使用命令 mysqldump --help

压缩备份

mysqldump -uroot -p --databases test | gzip > /home/test.sql.zip

还原数据库

mysql -uroot -p              // 登陆数据库
source /home/test.sql;       // 执行数据库脚本 

但备份文件很大时,我们很难找到一个编辑器打开这个文件并进行修改,此时我们可以用到linux系统的sed命令,将字符进行替换

sed -i '1,/DROP TABLE/s/`test`/`test_db`/g' test.sql

出现的错误:

1、mysqldump: Error 3024: Query execution was interrupted, maximum statement execution time exceeded when dumping table base_uploadfileblob at row: 5549

max_execution_time设置过小。默认为0,表示不限制时间,可修改/etc/my.conf文件进行配置,单位为毫秒,如:max_execution_time=100000
2.mysqldump: Got error: 1044: Access denied for user ‘datatech’@’%’ to database ‘house_platform’ when using LOCK TABLES
账号无权限造成加上此参数即可

mysqldump -hxxxxx -uroot -p house_platform --skip-lock-tables > house_platform.sql

全部库备份脚本

#!/bin/bash

d=`date +'%Y%m%d_%H_%M_%S'`

if [ ! -d "/home/mysql/dump/${d}/" ];then
mkdir -p /home/mysql/dump/${d}/

fi


echo 'dump xiangxin .....'
mysqldump -h 127.0.0.1 -uroot -p'ZHUzhu123456' --all-databases --default-character-set=utf8 -A | gzip > /home/mysql/dump/${d}/anshida.gz_$d

备份库

#!/bin/bash

d=`date +'%Y%m%d_%H_%M_%S'`

if [ ! -d "/home/mysql/dump/${d}/" ];then
mkdir -p /home/mysql/dump/${d}/

fi

read -p "Input databases   Press Enter key  " INPUT
if [ x$INPUT != x ]; then
    mysqldump   -h 127.0.0.1 -ugs -p'Gs@123456' --skip-lock-tables  --databases $INPUT > /home/mysql/dump/${d}/d$INPUT.sql_$d

echo 'sccuess dump'

fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁晓山(ben)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值