复制表结构
CREATE TABLE tb_students_copy LIKE tb_students_info;
查询mysql所有表数据、字段信息
mysql 查询表 所有字段
前2种有重复
select COLUMN_NAME,column_comment from
information_schema.COLUMNS where table_name = 'db_car_apply'
-- 查询表字段
select COLUMN_NAME from information_schema.COLUMNS
where table_name = '表名' and table_schema = '数据库名';
-- 查询所有字段, 含约束
SHOW FULL COLUMNS FROM 表名
MySQL中的备份和恢复
加了–single-transaction就能保证innodb的数据是完全一致的,而myisam引擎无法保证,必须加–lock-all-tables
–single-transaction参数的作用,设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响
深入理解mysqldump原理 --single-transaction --lock-all-tables --master-data
以下命令不支持powershell(idea系列控制台也是), 支持cmd
- 备份所有数据库
mysqldump -uroot -p --all-database > all.sql
mysqldump -h localhost -P3306 -uroot -p123456 --single-transaction data docid > F:\docid.sql
mysqlcmd = "/usr/bin/mysqldump -h " + HOST + " -P" + PORT + " -u" + USER + " -p" + PWD + \
" --single-transaction " + DB + " " + TABLE + " > " + db_backup_dir + "/" + backup_file_name
- 完全恢复
mysqldump的恢复也很简单,将备份作为输入执行即可,具体语法如下:
mysql -h localhost -P3306 -uroot -p123456 data < F:\docid.sql
restorecmd = "/usr/bin/mysql -h " + HOST + " -P" + PORT + " -u" + USER + " -p" + PWD + " " + \
DB + " < " + db_backup_dir + "/" + backup_file_name
注意,将备份恢复后数据并不完整,还需要将备份后执行的日志进行重做,语法如下:
mysqlbinlog binlog-file | mysql -uroot -p