一. MySQL备份
-------------------------------------
1.备份wmj库:
mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock -B wmj > /tmp/wmj.sql
2.压缩备份wmj和test库:
mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock -B wmj test |gzip >/tmp/mysql.gz
3.备份wmj库的student表:
mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock wmj student > /tmp/student.sql
4.备份wmj库的student表结构:
mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock -d wmj student > /tmp/student_desc.sql
5.备份wmj库的student表数据:
mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock -d wmj student > /tmp/student.sql
6.备份wmj库时切割bin_log和锁表:
mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock -B wmj -F -x > /tmp/wmj.sql
7.推荐使用生成环境备份数据库语句。(innodb引擎才能用):
mysqldump -uroot -pRoot123 -A -B -F --master-data=2 --single-transaction >/tmp/mysql.bak
--single-transaction : 不锁表隔离参数,
--master-data=2: 以备注形式记录bin-log的位置。
8.生产环境增量备份步骤:
一。选择一台从库,不对外提供业务,专门用了做备份。此从库开启bin_log功能,做增量备份。
二。备份的时候需要停止sql线程,在用mysqldump备份:
stop slave sql_thread; #停止sql线程,不会停止同步IO进程
三。然后将备份文件和bin_log文件远程保存起来。
下面命令可以用来远程备份bin_log:
mysqlbinlog --read-from-remote-server --raw --host=172.16.1.214 --port=3306 --user=rep --password=Root1234 --stop-never mysql-bin.000001
9.导入备份数据:
mysql> source /tmp/wmj.sql
mysql -uroot -pRoot123 </tmp/wmj.sql
10.非交换执行mysql命令:
mysql -uroot -pRoot123 -S /data/3306/mysql.sock -e "use wmj;select * from student;"
11.查看mysql的运行状态命令:
mysql> show status;
mysql> show global status;
12.删除mysql的bin_log日志:
mysql> reset master;
PS:Xtrabackup可以用于大于50G数据库备份。
二. MySQL增量恢复
-------------------------------------
1.只查看bin_log中wmj库的操作日志(要使用了“use wmj;”才行):mysqlbinlog -d wmj /data/3306/mysql-bin.000024 | egrep -v "^#|/"
2.按照位置点查看bin_log日志:
mysqlbinlog --start-position=3903 --stop-position=4519 /data/3306/mysql-bin.000024
--start-datetime='2016-12-27 11:20:00' :开始时间参数
3.增量恢复的条件:
至少存在一份全备和到出问题时刻的所有增量bin_log.
4.生产环境错误drop后,增量恢复流程:
事故出现后第一时间刷新bin_log: "mysqladmin -uroot -pRoot123 flush-log"
a.创建新文件夹,准备全量备份和bin_log文件。
b.转换bin_log为恢复文件,并删除里面的错误语句:
mysqlbinlog mysql-bin.000004 > /bak/bin.sql
vim /bak/bin.sql
c.停止外网连接数据库.
d.先导入全量备份,在导入bin_log备份:
mysql -uroot -pRoot123 -S /data/3306/mysql.sock </tmp/mysql_bak.sql
mysql -uroot -pRoot123 -S /data/3306/mysql.sock </tmp/bin.sql
ps: 案例教程 http://oldboy.blog.51cto.com/2561410/1431161/
三. MySQL的引擎
-------------------------------------
1.Myisam引擎特点(生产不建议使用):a. 不支持事务(银行不行)
b.修改会锁表
c.读的性能高,写慢
d.对硬件要求低
2.Innodb引擎特点:
a.支持事务
b.行级锁定
c.支持分区和表空间
d.支持外键