实例:
备份:
1
|
mysqldump -u root -p
'123456'
kaliboy>
/opt/kaliboy
.sql
|
指定字符集备份:
1
|
mysqldump -u root -p
'123456'
--default-character-
set
=utf8 kaliboy>
/opt/kaliboy
.sql
|
备份参数:
1
2
3
4
5
6
7
8
9
10
11
|
-e : 后面可以执行mysql 命令用;分开
-B :参数的作用是增加创建数据库和连接数据库的命令
-d : 备份表结构
-t : 备份数据
-A -B --events 备份全部数据库
-F : 刷新binlog日志文件
--master-data=1(=2) : 增加binlog日志文件名及对应的位置点
-x,--lock-all-tables 锁表
-l,--lock-tables 只读锁表
--compact :去掉注释
--single-transaction : 适合innodb事务数据库备份
|
1
|
mysqldump -u root -p
'123456'
-B kaliboy>
/opt/kaliboy_bak
.sql
|
还原数据库:
1
|
mysql -uroot -p
'123456'
<
/opt/kaliboy_bak
.sql
|
查看备份内容:
1
|
egrep
-
v
"#|\*|--|^$"
/opt/kaliboy
.sql
|
查看字符集:
1
|
mysql -uroot -p
'123456'
-e
"show variables like '%character%'"
|
myqsl多库备份:
1
|
mysqldump -uroot -p
'123456'
-B (库名)kaliboy (库名)ClasssInfo (库名)kaliboy_gbk|
gzip
>
/opt/mysql_bak
.sql.gz
|
mysql分库备份:
1
|
mysql -uroot -p
'123456'
-e
"show databases;"
|
grep
-Evi
"database|info|perfor"
|
sed
-r
's#^([a-z].*$)#mysqldump -uroot -p'
123456
' --events -B \1|gzip >/opt/\1.sql.gz#g'
|
bash
|
1
2
3
4
5
|
#!/bin/bash
for
dbname
in
`mysql -uroot -p
'123456'
-e
"show databases;"
|
grep
-Evi
"database|infor|perfor"
`
do
mysqldump -uroot -p
"123456"
--events -B $dbname|
gzip
>
/opt/bak
${dbname}_bak.sql.gz
done
|
备份单个表和多表:
语法:mysqldump -u 用户名 -p 数据库名 表名 表名 表名>备份的文件名
1
|
mysqldump -u root -p ClassInfo score>
/opt/table1
.sql
|
分库分表备份:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/bin/bash
USER=root
PASSWD=123456
SOCK=
/data/3306/mysql
.sock
LOGIN=
"mysql -u$USER -p$PASSWD -S $SOCK"
DATABASES=`$LOGIN -e
"show databases;"
|
sed
"1d"
|
egrep
-
v
"^.*sch|mysql"
`
dump=
"mysqldump -u$USER -p$PASSWD -S $SOCK"
for
database
in
$DATABASES
do
[ ! -d
/back/
$database ] &&
mkdir
-p
/back/
$database
TABLE=`$LOGIN -e
"show tables from $database;"
|
sed
'1d'
`
for
table
in
$TABLE
do
$dump $database $TABLE|
gzip
>
/back/
$database/${database}_${table}_$(
date
+%F).sql.gz
done
|
只备份表结构和只备份数据:
参数-d 备份表结构
参数-t 备份数据
实例:
1
2
|
mysql -u root -p
'123456'
--compact -d ClassInfo score>
/opt/tabled
.sql
mysql -u root -p
'123456'
--compact -t ClassInfo score>
/opt/tablet
.sql
|
备份全部数据库:
1
|
mysqldump -u root -p
'123456'
-A -B --events|
gzip
>
/opt/all
.sql.gz
|
myisam与innodb备份的区别:
myisam :
mysqldump -uroot -p'123456' -A -B --master=2 -x|gzip >/opt/all.sql.gz
mysqldump -uroot -p'123456' -A -B --master=2 -x --triqqers --routines --events --hex-blob|gzip >/opt/all.sql.gz
innodb:
mysqldump -uroot -p'123456' -A -B --master=2 --singe-transaction|gzip >/opt/all.sql.gz
mysqldump -uroot -p'123456' -A -B --master=2 --singe-transaction --triqqers --routines --events --hex-blob|gzip >/opt/all.sql.gz
恢复数据库实战:
利用source命令恢复数据库
进入mysql数据库控制台,mysql -u root -p 登录后
mysql>use 数据库名
然后使用命令source 命令,后面参数为脚本文件,可以利用system ls 查看文件路径
mysql>source /opt/all.sql.gz
批量恢复脚本实例:
#!/bin/bash
gzip -d /opt/*.gz
for dbname in `ls *.sql|sed 's#_bak.sql##g'`;
do
mysql -u root -p'123456' <${dbname}_bak.sql;
done
mysql--shou命令总结:
show status; 查看当前会话的数据库状态信息
show global status; 查看整个数据库运行状态信息
show full processlist; 查看正在执行的sql语句
show variables; 查看数据库参数信息
---------------------------------------------
mysqlbinlog ->解析mysql的binlog日志
用来记录mysql内部增删改查等对mysql数据库有更新的内容记录。
mysqlbinlog参数:
-d 截取指定库的binlog
按照位置截取:
mysqlbinlog mysqlbin.000046 --start-position=365 --stop-position=456 -r /opt/pos.sql
按照时间截取:
mysqlbinlog mysql-bin.000046 --start-datetime='2016-10-15 15:14:15' --stop-datetime='2016-10-15 15:16:17' -r time.sql