数据库备份恢复是常见的问题,这次面临公司的版本升级,很多数据都不兼容了,所以需要通过接口升级来进行数据的迁移,但是之前的数据必须要原封不动的保存下来,预防升级之后的不兼容问题。本篇文章算是记录这一次升级的方案,有需要的朋友可以参考一下。
命令行登陆语句
// 登陆mysql
mysql -h 127.0.0.1 -uroot -p123456
## 输入你的数据库密码
数据库操作
# 显示所有的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| demo |
| information_schema |
| mysql |
| performance_schema |
| sys |
| travel |
+--------------------+
# 使用数据库;
mysql> use demo;
# 显示所有的表
mysql> show tables;
+----------------------------+
| Tables_in_demo |
+----------------------------+
| app1_order |
| app1_person |
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+
# 显示表的结构
mysql> desc app1_order;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | bigint | NO | PRI | NULL | auto_increment |
| created_at | datetime(6) | NO | | NULL | |
| updated_at | datetime(6) | NO | | NULL | |
| order_id | varchar(30) | NO | MUL | NULL | |
| order_desc | varchar(120) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
# 显示建表语句
mysql> show create table app1_order;
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| app1_order | CREATE TABLE `app1_order` (
`id` bigint NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`updated_at` datetime(6) NOT NULL,
`order_id` varchar(30) NOT NULL,
`order_desc` varchar(120) NOT NULL,
PRIMARY KEY (`id`),
KEY `app1_order_order_id_fcb4fea8` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
数据库备份操作
导出
# 导出所有的数据和表结构
# mysqldump -h 主机名 -u 用户名 -p 密码 数据库名 >导出文件名和存放路径
mysqldump -h localhost -uroot -p123456 demo > demo.sql
# 仅导出表结构 -d 表示仅导出表格结构
mysqldump -h localhost -uroot -p123456 -d demo > demo.sql
# 去掉所有的自增起始,不加那么自增字段(如id)则不从1开始
mysqldump -h localhost -uroot -p123456 -d demo | sed 's/AUTO_INCREMENT=[0-9]*\s//g'> demo.sql
导入
# mysql -h 主机名 -u 用户名 -p 密码 数据库名 <导出的数据库文件名和路径
mysql -h localhost -uroot -p123456 demo < demo.sql
# 或者直接在mysql中导入
drop databases demo if exist;
create databases demo if not exist;
source demo.sql;
网友评论