复制表结构

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

  1. 备份所有数据库
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
  1. 完全恢复
    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

python调用mysqldump备份mysql
最常用MySql数据库备份恢复

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐