mysqldump -uroot -p123456 --default-character-set=utf8 quan > /opt/quan.sql //备份
grep -Ev "#|\/|--|^$" quan.sql //查看文件
DROP TABLE IF EXISTS `test`; //删除老的表
LOCK TABLES `test` WRITE; //锁
UNLOCK TABLES; //解锁
mysql -uroot -p123456 quan < /opt/quan.sql //恢复
备份时加 多下面两行 建库 进入表
debug调试 --compact //减少输出注释 优化备份大小 不添加锁
> CREATE DATABASE /*!32312 IF NOT EXISTS*/ `quan` /*!40100 DEFAULT CHARACTER SET gbk */;
> USE `quan`;
恢复时 mysql -uroot -p123456 < /opt/quan_B.sql //直接恢复就行
mysqldump -uroot -p123456 quan | gzip > /opt/quan.sql.gz //压缩
gunzip quan.sql.gz //解压 , 再恢复
--databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldump 把每个名字都当作为数据库名。
mysqldump -uroot -p123456 -B quan he | gzip > /opt/quan.sql.gz //备份多个 库
mysqldump -uroot -p123456 quan test test1 | gzip > /opt/quan.sql.gz //备份单个表
分库备份命令
mysql -uroot -p123456 -e "show databases;" | grep -Evi "database|infor|perfor" | sed 's#^#mysqldump -uroot -p123456 -B #g'
mysql -uroot -p123456 -e "show databases;" | grep -Evi "database|infor|perfor" | sed -r 's#^([a-z].*$)#mysqldump -uroot -p123456 -B \1 | gzip > /opt/\1.sql.gz#g' | bash
mysql全量导出时碰到如下告警: 默认是不备份事件表的,只有加了--events 才会不警告
Warning: Skipping the data of table mysql.event. Specify the --events option explicitly
解决办法:
--events --ignore-table=mysql.event
脚本循环备份分库
#!/bin/bash
for name in `mysql -uroot -p123456 -e "show databases;" | grep -Evi "database|infor|perfor" `
do
mysqldump -uroot -p123456 --events --ignore-table=mysql.event -B $name | gzip > /opt/${name}.sql.gz
done
备份表结构
mysqldump -uroot -p123456 -d quan > /opt/quan1.sql // --no-data, -d:只导出表结构
只备份数据
mysqldump -uroot -p123456 -t quan > /opt/quan1.sql // -t = --no-create-info
导出全部数据库
--all-databases , -A
导出全部表空间
--all-tablespaces , -Y
mysqldump -uroot -p123456 -A -B --events > /opt/quan1.sql //备份整个数据库
bin-log日志
vim /etc/my.cnf
#log-bin=mysql-bin //关闭
mysql/data/mysql-bin.000001
mysqldump -F // 刷新bin-log日志
--master-data=2 /1 //增加bin-log 的日志文件名及对应的位置点
先注释掉 my.cnf [client] #default-character-set=utf8
mysqlbinlog /applicatiom/mysql/data/mysql-bin.000001
-B --compact -A -B -F -x 锁表 -l只读锁表 -d -t
恢复
①use quan;
mysql> source /root/quan.sql
②# mysql -uroot -p123456 hequan < /opt/hequan.sql
cat .my.cnf 设置登陆
[client]
user=root
host=localhost
password=123456
ifconfig eth0 | awk -F "[ :]+" 'NR==2 {print $4}'
192.168.10.11
多分库文件恢复
for name in `ls *.sql| sed 's#.sql##g' `; do mysql -uroot -p123456 < ${name}.sql ; done
ERROR 1046 (3D000) at line 22: No database selected
修改.sql 在22行前面加上 use 库名字;
mysql -e " " //在外面执行mysql命令
mysql> show full processlist; //连接情况
mysql> show variables like "%log_bin%";
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_trust_function_creators | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+