【备份的命令】
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 #加-B备分多个库,备份test库和allow库,如果还有多个库就用空格分开
6)备份单个表
mysqldump -uroot -pwsyht123 库名 表名 > 备份的文件名.sql
7)查看要备份的内容
mysqldump -uroot -pwsyht123 --compact test t1 #--compact去掉注释,适合调式,生产环境不用,test库名,t1表名
8)只备份表结构
mysqldump -uroot -pwsyht123 -d 库名 表名 > 备份文件名.sql #-d只备份表结构
9)只备份表数据
mysqldump -uroot -pwsyht123 -t 库名 表名 > 备份文件名.sql #-t只备份数据
10)查看帮助
mysqldump --help > a.log
11)备份所有库所有表
mysqldump -uroot -pwsyht123 -A -B --events > 备份文件名.sql #-A备份所有库所有表,-B备份创建库的语句
12)刷新binlog参数
mysqldump -uroot -pwsyht123 -A -B -F --events > 备份文件名.sql #-F刷新binlog参数
13)--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引擎(innodb备份命令:推荐使用的)
mysqldump -uroot -pwsyht123 -A -B -F --master-data=2 --events --single-transaction > all.sql
--master-data 作用:
--master-data=2(前面“--”号代表加注释,指还原到107的位置,文件名为mysql-bin.000009)
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=107;
--master-data=1(不加注释,用于主从同步,指还原到107的位置,文件名为mysql-bin.000009)
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000009', MASTER_LOG_POS=107;
【恢复的命令】
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
【更改数据库参数不重启生效】
mysql> set global key_buffer_size=1024*1024*32; #设置索引缓存大小为32兆
mysql> show variables like "key_buffer%"; #查看设置的变量
【生产环境我的使用方法】
获得数据库前半部分示例:
mysql -uroot -pwsyht123 -e "show databases;" | egrep -vi "cheu|mysql|perfor|infor|database"
mysql -uroot -pwsyht123 -e "show databases;" | sed '1,3d;6d;7d'
【备份单个库】
mysqldump -uroot -pwsyht123 -B d1 | gzip > /opt/d1bak_$(date +%F).sql.gz #单实例备份方法
mysqldump -uroot -pwsyht123 -S /data/3306mysql.sock -B d1 | gzip > /opt/d1bak_$(date +%F).sql.gz #多实例备份方法
【分库备份】脚本备份多个库
单实例(通过列表形式进行备份)
vim dbbak01.sh
#!/bin/bash
myuser=root
mypass=wsyht123
mydump="mysqldump -u$myuser -p$mypass"
[ ! -e /opt/database ] && mkdir /opt/database
for database in d1 d2
do
$mydump -B $database | gzip > /opt/${database}_$(date +%F).sql.gz
done
多实例(通过列表形式进行备份)
vim dbbak01.sh
#!/bin/bash
myuser=root
mypass=wsyht123
socket=/data/3306/mysql.sock
mydump="mysqldump -u$myuser -p$mypass -S $socket"
[ ! -e /opt/database ] && mkdir /opt/database
for database in d1 d2
do
$mydump -B $database | gzip > /opt/${database}_$(date +%F).sql.gz
done
单实例(通过数据库取列表进行备份)
vim dbbak02.sh
#!/bin/bash
myuser=root
mypass=wsyht123
mycmd="mysql -u$myuser -p$mypass"
mydump="mysqldump -u$myuser -p$mypass"
[ ! -e /opt/database ] && mkdir /opt/database
for database in `$mycmd -e "show databases;" | egrep -vi "mysql|perfor|infor|database" `
do
$mydump -B $database | gzip > /opt/${database}_$(date +%F).sql.gz
done
多实例 (通过数据库取列表进行备份)
vim dbbak02.sh
#!/bin/bash
myuser=root
mypass=wsyht123
socket=/data/3306/mysql.sock
mycmd="mysql -u$myuser -p$mypass -S $socket"
mydump="mysqldump -u$myuser -p$mypass -S $socket"
[ ! -e /opt/database ] && mkdir /opt/database
for database in `$mycmd -e "show databases;" | sed '1,2d'| grep -v "mysql|schema"`
do
$mydump -B $database | gzip > /opt/${database}_$(date +%F).sql.gz
done
【分库分表备份】
单实例
#!/bin/bash
myuser=root
mypass=wsyht123
mycmd="mysql -u$myuser -p$mypass"
mydump="mysqldump -u$myuser -p$mypass"
for database in `$mycmd -e "show databases;" | egrep -vi "mysql|perfor|infor|database" `
do
[ ! -e /opt/${database} ] && mkdir /opt/${database}
for table in `$mycmd -e "show tables from $database;" | sed '1d'`
do
$mydump $database $table | gzip > /opt/$database/${database}_${table}_$(date +%F).sql.gz
done
done
多实例
#!/bin/bash
myuser=root
mypass=wsyht123
socket=/data/3306/mysql.sock
mycmd="mysql -u$myuser -p$mypass -S $socket"
mydump="mysqldump -u$myuser -p$mypass -S $socket"
for database in `$mycmd -e "show databases;" | egrep -vi "mysql|perfor|infor|database" `
do
[ ! -e /opt/${database} ] && mkdir /opt/${database}
for table in `$mycmd -e "show tables from $database;" | sed '1d'`
do
$mydump $database $table | gzip > /opt/$database/${database}_${table}_$(date +%F).sql.gz
done
done
运维群:517751492