mysqdump -uroot -p database名 >备份的文件名
for example mysqldump -uroot -p test >/u01/backup/test.sql
mysql -uroot -p test </u01/backup/mysql_o2.sql #test数据库恢复
mysql -uroot -p -e "use test;show tables" #在msyql外执行mysql语句
#备份中添加 -B 在备份中添加创建数据库,并使用数据库的语句
mysqldump -uroot -p -B test >备份的文件名
例子
mysqldump -uroot -p -B test >mysql_02_B.sql
恢复,不用指定库名
mysql -uroot -p <mysql_02_B.sql
指定压缩命令,压缩备份数据库
mysqldump -uroot -p -B test|gzip >/u01/backup/mysql_gzip.gz
备份多个数据库
mysqldump -uroot -p -B test mysql|gzip >/u01/backup/mysql_all.gz
分库备份
for d in `mysql -uroot -proot123 -e "show databases;"|grep -vEi "database|infor|perfor"`;do `mysqldump -uroot -proot123 -B $d|gzip >/u01/backup/mysql_"$d".gz` ; done
备份多个表,不加-B,两个字符串,前面是库,后面是表
mysqldump -uroot -proot123 test test1|gzip >/u01/backup/test1.gz
备份数据库表结构,加-d只备份表结构 -t只备份表数据
mysqldump -uroot -proot123 -d test test |gzip >/u01/backup/mysql_all.gz
刷新binlog -F 备份将切换binlog
mysqldump -uroot -proot123 -A -B -F test test --events|gzip >/u01/backup/mysql_all.gz
--master-data 增加binlog日志文件名及对应的位置点
mysqldump -uroot -proot123 -A --master-data=1 test test |gzip >/u01/backup/mysql_all.gz
--single-transaction 适合innodb事物数据库备份
myisam引擎
mysqldump -uroot -p -A -B -F --master-data=1 -x --events>/u01/backup/
innodb
mysqldump -uroot -p -A -B -F --master-data=1 --single-transaction --events>/u01/backup/
首席dba备份语句
for myisam
mysqldump -uroot -proot123 -A -B --flush-privileges -x --master-data=1 -F --trigger --routines --events --hex-blob|gzip >/u01/backup/mysql_02.gz
for innodb
mysqldump -uroot -proot123 -A -B --flush-privileges --single-transaction --master-data=1 -F --trigger --routines --events --hex-blob|gzip >/u01/backup/mysql_02.gz
数据库恢复
source命令
首先可以在msyql命令行下查看os系统下备份
mysql> system ls /u01/backup/
用source命令恢复
mysql> source /u01/backup/mysql_02_B.sql
对于压缩的备份,解压后在恢复
mysql -uroot -proot123 test <`gzip mysql_02.gz`
mysql show命令 查看数据库连接情况,把所有的sql语句都显示出来,两次show出现的sql语句是慢查询,需要优化
mysql -uroot -p -e "show full processlist"
查看msyql变量
mysql -uroot -p -e "show variables;"|grep log_bin
查看msyql状态(就是计数器)
mysql -uroot -p -e "show global status"|grep select
更改数据库参数不重启生效
show variables like 'key_buffer%'
set global key_buffer_size=1024*1024*32 #设置32M
mysqlbinlog命令 解析mysql的binlog日志
binlog日志的作用
用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录
binlog拆库命令 添加-d 库名
mysqlbinlog -d test mysql-bin.000003 >test.sql #从binlog里只抽取test库相关的sql
指定位置点恢复
mysqlbinlog mysql-bin.000003 --start-position=365 --stop-position=456 >pos.sql
指定时间点恢复
mysqlbinlog mysql-bin.000003 --start-datetime='2014-10-16 17:14:15' --stop-datetime='2014-10-16 17:27:15'>pos.sql