1.先创建一个数据库备份目录:
mkdir backup cd backup mkdir mysqlbackup cd mysqlbackup
2.创建备份脚本
vi mysqlautobackup
3.编写脚本:
filename=`date +%Y%m%d` /mysql的bin目录/mysqldump --opt 数据库名 -u(mysql账号) -p(mysql密码) | gzip > /备份到哪个目录/name$filename.gz
说明:以上采用gzip压缩,name可随意写,注意-u与mysql账号之间没有空格也无需括号,-p与mysql密码也是。
4.将脚本设置为可执行权限:
chmod +x autobackup
5.写入计划任务:
crontab -e 01 01 * * * /bin/bash /脚本所在目录/mysqlautobackup
每天凌晨1点零1分执行脚本。
重启计划任务:
/etc/rc.d/init.d/crond restart
至此所有步骤完成。
一些常用技巧
1、创建保存备份文件的路径/mysqldata
#mkdir /mysqldata
2、创建/usr/sbin/baktest文件
输入以下内容:
mysqldump -uroot -proot test | gzip > /mysqldata/test`date +%Y-%m-%d_%H%M%S`.sql.gz
3、修改文件属性,使其可以执行
#chmod +x /usr/sbin/baktest
4、修改/etc/crontab
在下面添加
01 3 * * * root /usr/sbin/baktest
表示每天3点钟01分执行备份
5、重新启动crond
#/etc/rc.d/init.d/crond restart
完成。
PS:
全备份脚本:
#!/bin/bash # Name:qbk全备份脚本 # mysql qbk scripts # By zxsdw.com # Last Modify:2015-01-21 #定义脚本存放路径 #scriptsDir=/usr/sbin #定义用户名及密码 user=root userPWD=密码 #定义要备份的数据库 database=数据库 #定义完全备份文件存放路径 bakDir=/backup/mysql #eMailFile=$bakDir/email.txt #eMail=admin@zxsdw.com #定义日志文件 LogFile=$bakDir/mysqlbak.log DATE=`date +%Y%m%d` echo " " >> $LogFile echo " " >> $LogFile echo "--------------------------" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >>$LogFile echo "-----------------" >> $LogFile cd $bakDir DumpFile=$DATE.sql.gz mysqldump --flush-logs -u$user -p$userPWD --quick $database| gzip >$DumpFile echo "Dump Done" >> $LogFile echo "[$DumpFile]Backup Success!" >> $LogFile daily_databakDir=$bakDir/daily_backup cd $bakDir/daily_backup find $daily_databakDir -name "daily*" -type f -mtime +35 -exec rm {} \; > /dev/null 2>&1
增量备份脚本
#!/bin/bash # Name:zbk增量备份 # mysql zbk scripts # By zxsdw.com # Last modify:2015-01-21 #定义数据库用户名及密码 user=root userPWD=密码 #定义数据库 database=数据库 #生成一个新的mysql-bin.00000X文件,如果err日志被清除,则自动新建一个。 /usr/local/mysql/bin/mysqladmin -u$user -p$userPWD flush-logs #定义增量备份位置 daily_databakDir=/backup/mysql/daily_backup #定义MYSQL数据日志目录 mysqlDataDir=/usr/local/mysql/var #定义增量日志及目录 eMailFile=$daily_databakDir/email.txt #eMail=admin@zxsdw.com #定义变量DATE格式为20150127 DATE=`date +%Y%m%d` #定义一个总的logFile日志 logFile=$daily_databakDir/mysql$DATE.log #美化日志模板 echo " " > $eMailFile echo "-----------------------" >> $eMailFile #时间格式为15-01-27 01:06:17 echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile echo "-------------------------" >> $eMailFile #定义删除bin日志的时间范围,格式为20150124010540 TIME=$(date "-d 3 day ago" +%Y%m%d%H%M%S) #定义需要增量备份数据的时间范围,格式为2015-01-26 01:04:11 StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S") ###########开始删除操作美化日志标题############## echo "Delete 3 days before the log" >>$eMailFile #删除三天前的bin文件,及更新index里的索引记录,美化日志标题 mysql -u$user -p$userPWD -e "purge master logs before ${TIME}" && echo "delete 3 days before log" |tee -a $eMailFile #查找index索引里的bin 2进制文件并赋值给 i。 filename=`cat $mysqlDataDir/mysql-bin.index |awk -F "/" '{print $2}'` for i in $filename do #########开始增量备份操作,美化日志标题########### echo "$StartTime start backup binlog" >> $eMailFile #利用mysqlbinlog备份1天前增加的数据,并gzip压缩打包到增量备份目录 /usr/local/mysql/bin/mysqlbinlog -u$user -p$userPWD -d $database --start-datetime="$StartTime" $mysqlDataDir/$i |gzip >> $daily_databakDir/daily$DATE.sql.gz |tee -a $eMailFile done #如果以上备份脚本执行成功,接着运行下面的删除脚本 if [ $? = 0 ] then # 删除mtime>32的增量日志备份文件 find $daily_databakDir -name "*.log" -type f -mtime +32 -exec rm {} \; > /dev/null 2>&1 cd $daily_databakDir echo "Daily backup succeed" >> $eMailFile else echo "Daily backup fail" >> $eMailFile #mail -s "MySQL Backup" $eMail < $eMailFile #备份失败之后发送邮件通知 #fi结束IF判断 fi #把变量eMailFile的内容替换logFile内容 cat $eMailFile > $logFile #如果上面的IF判断失败,再次运行删除mtime>32的增量日志备份文件 find $daily_databakDir -name "*.log" -type f -mtime +32 -exec rm {} \; > /dev/null 2>&1 rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd root@$ip:/zxs/allimg/$(date -d -1day +%y%m%d) /zxs/allimg/ gunzip < /backup/mysql/daily_backup/ceshi.sql.gz | /usr/local/mysql/bin/mysql -u用户名 -p密码 数据库名 --force --force参数 忽略错误

在数据库优化中,应根据查询需求选择索引策略:1.当查询涉及多个列且条件顺序固定时,使用复合索引;2.当查询涉及多个列但条件顺序不固定时,使用多个单列索引。复合索引适用于优化多列查询,单列索引则适合单列查询。

要优化MySQL慢查询,需使用slowquerylog和performance_schema:1.启用slowquerylog并设置阈值,记录慢查询;2.利用performance_schema分析查询执行细节,找出性能瓶颈并优化。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

MySQL异步主从复制通过binlog实现数据同步,提升读性能和高可用性。1)主服务器记录变更到binlog;2)从服务器通过I/O线程读取binlog;3)从服务器的SQL线程应用binlog同步数据。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL的安装和基本操作包括:1.下载并安装MySQL,设置根用户密码;2.使用SQL命令创建数据库和表,如CREATEDATABASE和CREATETABLE;3.执行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.创建索引和存储过程以优化性能和实现复杂逻辑。通过这些步骤,你可以从零开始构建和管理MySQL数据库。

InnoDBBufferPool通过将数据和索引页加载到内存中来提升MySQL数据库的性能。1)数据页加载到BufferPool中,减少磁盘I/O。2)脏页被标记并定期刷新到磁盘。3)LRU算法管理数据页淘汰。4)预读机制提前加载可能需要的数据页。

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境