【备份的命令】
1)备份数据库
mysqldump -uroot -pwsyht -B 库名 > /opt/test.sql #加-B表示增加use db和create database db的信息
2)查看数据库
egrep -v "#|\*|--|^$" /opt/test.sql #查看test.sql的库内容
3)恢复数据库
mysql -uroot -pwsyht < /opt/test.sql #test.sql已经建库,所以恢复不用指定数据库
4)压缩备份
mysqldump -uroot -pwsyht -B 库名 | gzip > /opt/test.sql.gzip #压缩备份减少占用内存空间,压缩效率近3倍
5)备份多个库
mysqldump -upeter -pwsyht123 -B test allow | gzip> test.sql.gz #备份test库和allow库,如果还有多个库就用空格分开
6)获得数据库前半部分
mysql -uroot -pwsyht123 -e "show databases;" | egrep -vi "cheu|mysql|perfor|infor|database" | sed ‘s#^#mysqldump -uroot -pwsyht123 -B #g‘ | sed ‘s#$# > test.sql#g‘ | bash
分库备份视频
http://edu.51cto.com/lesson/id-16611.html
cat fenku.sh
for dbname in `mysql -uroot -pwsyht123 -e "show databases;" | egrep -vi "cheu|mysql|perfor|infor|database" `
do
mysqldump -uroot -p‘wsyht123‘ -B $dbname | gzip > /mnt/$dbname.sql.gz
done
7)备份单个表
mysqldump -uroot -pwsyht123 库名 表名 > 备份的文件名.sql
8)查看要备份的内容
mysqldump -uroot -pwsyht123 --compact test t1 #--compact去掉注释,适合调式,生产环境不用
9)只备份表结构
mysqldump -uroot -pwsyht123 -d 库名 表名 > 备份文件名.sql #-d只备份表结构
10)只备份表数据
mysqldump -uroot -pwsyht123 -t 库名 表名 > 备份文件名.sql #-t只备份数据
11)查看帮助
mysqldump --help > a.log
12)备份所有库所有表
mysqldump -uroot -pwsyht123 -A -B --events > 备份文件名.sql #-A备份所有库所有表,-B备份创建库的语句
13)刷新binlog参数
mysqldump -uroot -pwsyht123 -A -B -F --events > 备份文件名.sql #-F刷新binlog参数
14)--master-data增加binlog日志文件名及对应的位置点
mysqldump -uroot -pwsyht123 --master-data=2 --compact > 备份文件名.sql
【其他使用方法】
myisam引擎
mysqldump -uroot -pwsyht123 -A -B -F --master-data=2 -x --events > a.sql #-x表示锁表
innodb引擎
mysqldump -uroot -pwsyht123 -A -B -F --master-data=2 --events --single-transaction > all.sql
innodb备份命令:推荐使用的
【恢复的命令】
mysql> source /mnt/mysql_bak_B.sql
mysql -uroot -pwsyht123 < /opt/mysql_bak_B.sql
通过脚本备份
# ls
# wsyht_gbk_bak.sql
# ls *.sql | sed ‘s#_bak.sql##g‘
wsyht_gbk
for dbname in `ls *.sql | sed ‘s#_bak.sql##g‘`;do mysql -uroot -pwsyht123 < ${dbname}_bak.sql;done
【在线修改参数】
mysql -uroot -pwsyht123 -e "set names latinl;use wsyht;select *from student;"
查看连接MySQL的连接数
mysql -uroot -pwsyht123 -e "show full processlist;"
查看有没有打开log-bin日志
mysql -uroot -pwsyht123 -e "show variables;" | grep log_bin
查看Mysql状态
mysql -uroot -pwsyht123 -e "show global status;" | grep sel
mysql -uroot -pwsyht123 -e "show global status like ‘%insert%‘;"
mysql -uroot -pwsyht123 -e "show global status;" | less status
通过echo实现(这个比较常见)
echo "show database;" | mysql -uroot -pwsyht123 -S /data/3308/mysql.sock
通过cat实现,这种用法不多
cat | mysql -uroot -pwsyht123 -S /data/3308/mysql.sock <<EOF
show database;
EOF
通过mysql -e 参数实现
mysql -uroot -pwsyht123 -S /data/3308/mysql.sock -e "show databases;"
【更改数据库参数不重启生效】
mysql> set global key_buffer_size=1024*1024*32; #设置索引缓存大小为32兆
mysql> show variables like "key_buffer%"; #查看设置的变量
【小技巧】
数据库批量插入数据shell脚本实现
http://oldboy.blog.51cto.com/2561410/597511
不登陆数据库搪行Mysql命令小结
http://oldboy.blog.51cto.com/2561410/632608
希望一起交流技术的可以通过以下方式联系我
我的运维群517751492
我的QQ1934844044