MySQL備份與恢復-mysqldump備份與恢復

這片博文主要用來介紹MySQL的備份與恢復:

MySQL的備份形式可以分為如下幾種:

  • 熱備----即不停機備份
  • 冷備----需要關閉MySQL,然后備份其數據文件。(停機備份一般是直接拷貝其datadir目錄)
  • 溫備----在線備份,對應用影響大,通常加一個讀鎖【會阻塞寫的應用】,意義不大,基本不用。

從導出的備份文件結構可分為如下幾種:

  • 邏輯備份---備份的數據是導出的SQL語句(如mysqldump, mysqlpump【MySQL5.7加入的】,mydumper)
  • 物理備份--備份的是物理文件(如xtracebackup)

接下來會詳細介紹這四種命令的通常用法(如果不特別說明,數據庫存儲引擎為INNODB):

mysqldump備份與恢復

mysqldump的用法如下:

[root@test3 ~]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]            #備份單個庫
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] #備份多個庫
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]              #備份所有的數據庫

#可以使用mysqldump --help查看mysqldump的更多參數,會在下面使用的時候介紹到經常用的參數。

備份單張表

[root@test3 ~]# mysqldump -uroot -p123456 --single-transaction employees departments > dep.sql
#備份INNODB存儲引擎時建議加上參數--single-transaction【實際上是必須加】,這樣會保證數據的一致性。
查看一下備份出來的數據:
[root@test3 ~]# cat dep.sql #可以看到基本就是SQL語句
-- MySQL dump 10.13? Distrib 5.7.22, for linux-glibc2.12 (x86_64)
--
-- Host: localhost??? Database: employees
-- ------------------------------------------------------
-- Server version?? ?5.7.22-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `departments`
--

DROP TABLE IF EXISTS `departments`; #看到這里發現了建表語句,也就是沒有建庫語句,因此若想把sql語句導入指定庫,需要先創建庫
/*!40101 SET @saved_cs_client???? = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `departments` (
? `dept_no` char(4) NOT NULL,
? `dept_name` varchar(40) NOT NULL,
? PRIMARY KEY (`dept_no`),
? UNIQUE KEY `dept_name` (`dept_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `departments`
--

LOCK TABLES `departments` WRITE;
/*!40000 ALTER TABLE `departments` DISABLE KEYS */; #插入語句
INSERT INTO `departments` VALUES ('d009','Customer Service'),('d005','Development'),('d002','Finance'),('d003','Human Resources'),('d001','Marketing'),('d004','Production'),('d006','Quality Management'),('d008','Research'),('d007','Sales');
/*!40000 ALTER TABLE `departments` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2018-11-28? 9:51:01


在備份文件中插入二進制日志的信息
該選項將binlog的位置和文件名追加到輸出文件中。如果為1,將會輸出CHANGE MASTER 命令;如果為2,輸出的CHANGE MASTER命令前添加注釋信息。該選項將打開
--lock-all-tables 選項,除非--single-transaction也被指定(在這種情況下,全局讀鎖在開始導出時獲得很短的時間)。該選項自動關閉--lock-tables選項。
[root@test3 mysql]# mysqldump -uroot -p123456 --single-transaction --master-data employees departments > dep.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@test3 mysql]# cat dep.sql
-- MySQL dump 10.13? Distrib 5.7.22, for linux-glibc2.12 (x86_64)
--
-- Host: localhost??? Database: employees
-- ------------------------------------------------------
-- Server version?? ?5.7.22-log

......

--
-- Position to start replication or point-in-time recovery from #這里有個提示基于這個點開始復制或者PIT恢復
--

CHANGE MASTER TO MASTER_LOG_FILE='test3-bin.000001', MASTER_LOG_POS=20182;
.....



#mysqldump備份時常用的兩個選項
--single-transaction Creates a consistent snapshot by dumping all tables in asingle transaction. Works ONLY for tables stored instorage engines which support multiversioning (currentlyonly InnoDB does); the dump is NOT guaranteed to beconsistent for other storage engines. While a--single-transaction dump is in process, to ensure avalid dump file (correct table contents and binary logposition), no other connection should use the followingstatements: ALTER TABLE, DROP TABLE, RENAME TABLE,TRUNCATE TABLE, as consistent snapshot is not isolatedfrom them. Option automatically turns off --lock-tables.
在備份INNODB數據庫時,事實上必須加上--single-transaction參數,這個參數會保證備份出的數據是一致的,也就是備份的數據是當前執行此命令時刻點的數據。
--single-transaction利用INNODB的MVCC特性,在備份數據會根據undo和redo得到一份快照數據。INNODB的MVCC特性在RR和RC的隔離級別下,得到的快照數據是不同,在RR
得到的是當前事務開始時的快照數據,在RC時得到的最新的事務數據。因為數據庫的正式環境一般是RC模式,因此這條命令在備份開始時,會設置當前會話的隔離級別為RR模式!
--single-transaction 參數說明

備份單個庫和備份所有的庫

[root@test3 mysql]# mysqldump -uroot -p123456 --single-transaction --master-data --databases cmdb hostinfo  > dep.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@test3 mysql]# mysqldump -uroot -p123456 --single-transaction --master-data --all-databases  > all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
#查看數據
[root@test3 mysql]# cat dep.sql       #查看其中的一個數據
-- MySQL dump 10.13  Distrib 5.7.22, for linux-glibc2.12 (x86_64)
--
-- Host: localhost    Database: cmdb
-- ------------------------------------------------------
-- Server version    5.7.22-log
......--
-- Position to start replication or point-in-time recovery from
--CHANGE MASTER TO MASTER_LOG_FILE='test3-bin.000001', MASTER_LOG_POS=20182;--
-- Current Database: `cmdb`          #這里有了創建數據庫的語句
--CREATE DATABASE /*!32312 IF NOT EXISTS*/ `cmdb` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `cmdb`;

#因此在使用指定庫備份文件恢復數據時,不需要再創建庫,直接恢復即可

恢復數據的時候直接使用mysql導入即可:

mysql -uroot -p123456 < all.sql

切記在備份INNODB數據庫時一定要加上--single-transaction 參數,為了基于PIT恢復也要加上--master-data參數。

mysqldump的備份過程

上面我們已經看到了mysqldump備份出的數據文件時對應sql語句,我們查看一下在執行mysqldump時,MySQL數據庫做了哪些操作!

首先開啟general_log日志,如下:

mysql> set global general_log=on;
Query OK, 0 rows affected (0.00 sec)
mysql> set global log_output="file";
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like "%general%";
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| general_log      | ON                    |
| general_log_file | /data/mysql/test3.log |
+------------------+-----------------------+
2 rows in set (0.00 sec)

然后再去使用mysqldump備份一次數據文件

[root@test3 ~]# mysqldump -uroot -p123456 --single-transaction --master-data --databases tpcc_test > dep.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@test3 ~]#

最后查看general_log日志,如下:

[root@test3 mysql]# cat test3.log 2018-11-28T05:20:31.014426Z       29 Connect    root@localhost on  using Socket
2018-11-28T05:20:31.014662Z       29 Query    /*!40100 SET @@SQL_MODE='' */
2018-11-28T05:20:31.014792Z       29 Query    /*!40103 SET TIME_ZONE='+00:00' */
2018-11-28T05:20:31.014915Z       29 Query    FLUSH /*!40101 LOCAL */ TABLES
2018-11-28T05:20:31.015141Z       29 Query    FLUSH TABLES WITH READ LOCK        #這里有個鎖表
2018-11-28T05:20:31.015213Z       29 Query    SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ  #設置當前會話的隔離級別
2018-11-28T05:20:31.015271Z       29 Query    START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */   #開始事務
2018-11-28T05:20:31.015463Z       29 Query    SHOW VARIABLES LIKE 'gtid\_mode'                         #備份gtid信息
2018-11-28T05:20:31.018393Z       29 Query    SHOW MASTER STATUS                                       #在備份時指定master-data,這里備份日志點信息
2018-11-28T05:20:31.018467Z       29 Query    UNLOCK TABLES                                            #釋放表
2018-11-28T05:20:31.018618Z       29 Query    SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('tpcc_test'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME
2018-11-28T05:20:31.021966Z       29 Query    SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('tpcc_test')) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
2018-11-28T05:20:31.022750Z       29 Query    SHOW VARIABLES LIKE 'ndbinfo\_version'
2018-11-28T05:20:31.023915Z       29 Init DB    tpcc_test
2018-11-28T05:20:31.023977Z       29 Query    SHOW CREATE DATABASE IF NOT EXISTS `tpcc_test`
2018-11-28T05:20:31.024045Z       29 Query    SAVEPOINT sp                                            #備份每張表之前會設置保存點
2018-11-28T05:20:31.024100Z       29 Query    show tables
2018-11-28T05:20:31.024253Z       29 Query    show table status like 'customer'
2018-11-28T05:20:31.024475Z       29 Query    SET SQL_QUOTE_SHOW_CREATE=1
2018-11-28T05:20:31.024541Z       29 Query    SET SESSION character_set_results = 'binary'
2018-11-28T05:20:31.024607Z       29 Query    show create table `customer`
2018-11-28T05:20:31.024737Z       29 Query    SET SESSION character_set_results = 'utf8'
2018-11-28T05:20:31.024806Z       29 Query    show fields from `customer`
2018-11-28T05:20:31.025199Z       29 Query    show fields from `customer`
2018-11-28T05:20:31.025582Z       29 Query    SELECT /*!40001 SQL_NO_CACHE */ * FROM `customer`
2018-11-28T05:20:35.251932Z       29 Query    SET SESSION character_set_results = 'binary'
2018-11-28T05:20:35.252069Z       29 Query    use `tpcc_test`
2018-11-28T05:20:35.252158Z       29 Query    select @@collation_database
2018-11-28T05:20:35.252290Z       29 Query    SHOW TRIGGERS LIKE 'customer'
2018-11-28T05:20:35.252706Z       29 Query    SET SESSION character_set_results = 'utf8'
2018-11-28T05:20:35.252771Z       29 Query    ROLLBACK TO SAVEPOINT sp                               #這張表備份結束之后,回滾保存點
......
......

以上的過程可以看到,mysqldump是在一個事務中備份的,因此在備份表時會產生undo日志,若是表數據太大,則undo日志也會很大,因此mysqldump在備份每張表時都設置
savepoint,這樣當這個表備份完成之后,就會回滾保存點,然后purge線程就會回收undo日志

mysqld的其余常見參數應用

-d:只備份指定數據庫表的結構(也就是建表語句)

[root@test3 ~]# mysqldump -uroot -p123456 -d --databases lianxi > dep.sql    #這樣只備份出lianxi這個庫中表的建表語句和創建庫的語句
[root@test3 ~]# mysqldump -uroot -p123456 -d lianxi tb2 > dep.sql #如果這里只備份庫下面的表,則還是沒有建庫語句,只有創建表的語句

-R, --routines :備份時導出存儲過程和自定義函數!

[root@test3 ~]# mysqldump -uroot -p123456 -R lianxi tb2 > dep.sql

-f, --force???????? Continue even if we get an SQL error.。發生錯誤的時候也繼續備份。

mysqldump還有很多參數,可以在用到的時候查看!

mysqldump是邏輯備份,單線程備份,單線程恢復,因此會比較慢。特別是恢復的時候,之前恢復過一個800多萬行記錄的數據,結果使用mysql逐條導入sql語句,搞庫幾個小時。

?

備份與恢復糾錯

?1:在使用mysql導入mysqldump的備份數據時,報了如下錯誤:

[root@test3 ~]# mysql -uroot -p123456 financesys < financesys.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1118 (42000) at line 25: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

錯誤原因就是行太長了,但是線上環境修改字段屬性有點不太合適,可以采用如下方法:

mysql> set global innodb_strict_mode=off;
Query OK, 0 rows affected (0.00 sec)
[root@test3 ~]# mysql -uroot -p123456 financesys < financesys.sql        #再導入就可以了
mysql: [Warning] Using a password on the command line interface can be insecure.
從MySQL5.5.X版本開始,你可以開啟InnoDB嚴格檢查模式,尤其采用了頁數據壓縮功能后,最好是開啟該功能。開啟此功能后,當創建表(CREATE TABLE)、更改表(ALTER TABLE)和創建索引(CREATE INDEX)語句時,如果寫法有錯誤,不會有警告信息,而是直接拋出錯誤,這樣就可直接將問題扼殺在搖籃里。開啟InnoDB嚴格檢查模式涉及的參數是innodb_strict_mode,默認為OFF,支持動態開啟,開啟方式如下:
set global innodb_strict_mode=1;連接地址

導入成功后,如果是線上環境,還需要把參數修改回去!

2:在使用mysqldump備份的時候出現如下問題

[root@test2 data]# mysqldump -uroot -p7abec53701c3eefb --databases financesys > financesys1.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `fi_factincome` at row: 1303198

我查了一下,這個表大概有1500萬行的記錄,報錯原因如下:

備份失敗的原因:在向磁盤上備份的時候,數據的流向是這樣的:MySQL Server 端從數據文件中檢索出數據,然后分批將數據返回給mysqldump 客戶端,然后 
mysqldump 將數據寫入到磁盤上。一般地,向 磁盤 上寫入數據的速度較之Server端檢索發送數據的速度要慢得多,這就會導致 mysqldump 無法及時的接受
Server 端發送過來的數據,Server 端的數據就會積壓在內存中等待發送,這個等待不是無限期的,當 Server 的等待時間超過 net_write_timeout(默認是60秒)
時它就失去了耐心,mysqldump 的連接會被斷開,同時拋出錯誤 Got error: 2013: Lost connection。其實該錯誤不是說數據庫文件太多而導致出錯,
而是單張表數據量太大導致備份失敗

問題的解決方案:增加 net_write_timeout 可以解決上述的問題的。在實踐中發現,在增大 net_write_timeout 后,Server 端會消耗更多的內存,有時甚至會導致 swap 的使用(并不確定是不是修改 net_write_timeout 所至)。建議在mysqldump 之前修改 net_write_timeout 為一個較大的值(如1800),在 mysqldump 結束后,在將這個值修改到默認的60。(備注:net_write_timeout不是mysqldump的配置參數,而是mysql的參數)

?

轉載于:https://www.cnblogs.com/wxzhe/p/10032153.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248926.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第六次實訓作業異常處理

第六次實訓作業異常處理 編寫一個類ExceptionTest&#xff0c;在main方法中使用try-catch-finally語句結構實現&#xff1a;在try語句塊中&#xff0c;編寫兩個數相除操作&#xff0c;相除的兩個操作數要求程序運行時用戶輸入&#xff1b;在catch語句塊中&#xff0c;捕獲被0除…

k8s學習筆記-調度之Affinity

Kubernetes中的調度策略可以大致分為兩種 一種是全局的調度策略&#xff0c;要在啟動調度器時配置&#xff0c;包括kubernetes調度器自帶的各種predicates和priorities算法&#xff0c;具體可以參看上一篇文章&#xff1b; 另一種是運行時調度策略&#xff0c;包括nodeAffinity…

vue-cli webpack配置分析 - chenBright - SegmentFault 思否

相信vue使用者對vue-cli都不會陌生&#xff0c;甚至可以說&#xff0c;很熟悉了&#xff0c;但對其webpack的配置可能知之甚少吧。 過完年回來后&#xff0c;我接手了公司的新項目。新項目是一個spa。很自然&#xff0c;我就想到了vue-cli腳手架了&#xff0c;當時研究一下它的…

[Xcode 實際操作]六、媒體與動畫-(6)使用UIBlurEffect給圖片添加模糊效果

目錄&#xff1a;[Swift]Xcode實際操作 本文將演示如何給圖像添加模糊效果。 在項目導航區&#xff0c;打開視圖控制器的代碼文件【ViewController.swift】 1 import UIKit2 3 class ViewController: UIViewController {4 5 override func viewDidLoad() {6 super.…

MapReduce編程實踐

一、MapReduce編程思想 學些MapRedcue主要是學習它的編程思想&#xff0c;在MR的編程模型中&#xff0c;主要思想是把對數據的運算流程分成map和reduce兩個階段&#xff1a; Map階段&#xff1a;讀取原始數據&#xff0c;形成key-value數據&#xff08;map方法&#xff09;。即…

webpack基礎+webpack配置文件常用配置項介紹+webpack-dev-server - QxQstar - 博客園

一.webpack基礎 1.在項目中生成package.json&#xff1a;在項目根目錄中輸入npm init&#xff0c;根據提示輸入相應信息。&#xff08;也可以不生成package.json文件&#xff0c;但是package.json是很有用的&#xff0c;所有建議生成&#xff09; 2.安裝webpaack a.在全局中安裝…

(十)

空轉載于:https://www.cnblogs.com/shanae/p/10034479.html

編譯原理--NFA/DFA

現成的, 講義: https://www.cnblogs.com/AndyEvans/p/10240790.html https://www.cnblogs.com/AndyEvans/p/10241031.html 一個例子, 寫得非常好. 一下子就全明白了, 尤其是像我這種沒有聽過編譯原理課程的人. https://blog.csdn.net/tyler_download/article/details/53139240 …

Python中pass的用法

空語句 do nothing保證格式完整保證語義完整以if語句為例&#xff0c;在c或c/java中&#xff1a; if(true); //do nothingelse{ //do something}對應于python就要這樣寫&#xff1a; if true: pass #do nothingelse: #do something 1 pass語句在函數中的作用當你在編寫一個程序…

express路由管理的幾種自動化方法分享-js教程-PHP中文網

我們平時在使用express寫代碼的過程中&#xff0c;會根據類別&#xff0c;將路由分為多個不同的文件&#xff0c;然后在項目的入口文件&#xff08;例如app.js&#xff09;中將其依次掛載&#xff0c;例如&#xff1a; 1 2 3 4 5 6 7 const index require(./routes/index) con…

dotnet不是內部或外部的命令,也不是可運行的程序或批處理文件

>>這臺電腦>>屬性>>高級系統設置>>環境變量>>系統變量>>Path>>編輯>> 變量值中添加 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; 即可。轉載于:https://www.cnblogs.com/ZCrystal/p/10894591.html

轉載 vue的基礎使用

轉載https://www.cnblogs.com/majj/p/9957597.html#top vue的介紹 前端框架和庫的區別nodejs的簡單使用vue的起步指令系統組件的使用過濾器的使用watch和computed鉤子函數漸進式的JavaScript框架 vue react angualr作者:尤雨溪 facebook 谷歌公…

Express實現路由分發控制、RESTful API

Express實現路由分發控制、RESTful API 標簽&#xff08;空格分隔&#xff09;&#xff1a; Node.js 最近在用Express作為自己的WEB應用框架&#xff0c;其中最為迷惑的就是Express的路由控制和分發&#xff0c;在網上搜了很多資料&#xff0c;但是大部分的資料都是將Express的…

springboot運行jar包時候加載指定目錄的其他jar支持包

最近發生一個小故障&#xff0c;調試好的項目&#xff0c;發布成jar包后無法找到oracle的驅動&#xff0c;研究了一下解決了。記錄一下。寫了一個run.sh腳本 #!/bin/bash cd ~ cd app nohup java -Djava.ext.dirs./lib -Doracle.jdbc.thinLogonCapabilityo3 -jar -Xms512m -Xmx…

OpenLayers3關于Map Export的Canvas跨域

一 Canvas跨域現象 地圖導出是地圖中常用的功能&#xff0c;并且OpenLayers3中也提供了兩個地圖導出的例子:http://openlayers.org/en/latest/examples/export-map.html http://openlayers.org/en/latest/examples/export-pdf.html。 看到這兩個例子我們都很興奮&#xff0c;直…

typescript-koa-postgresql 實現一個簡單的rest風格服務器 —— 連接 postgresql 數據庫...

接上一篇&#xff0c;這里使用 sequelize 來連接 postgresql 數據庫 1、安裝 sequelize&#xff0c;數據庫驅動 pg yarn add sequelize sequelize-typescript pg reflect-metadata 2、新建配置文件夾 conf 及 配置文件 db.conf.ts /*** name: 數據庫配置* param : undefined* r…

SmartGit使用教程

說明 官網的客戶端是命令行形式的&#xff0c;有興趣可以去了解下。這里針對圖形界面的smartgit做一個使用說明。 軟件下載和安裝 下載地址[2016.12.16測試可以] 按需選擇,如果不知道自己電腦是什么系統的&#xff0c;那我沒話說了https://www.syntevo.com/smartgit/ 安裝 …

jquery 下拉框 select2 運用 筆記

1,添加select2 樣式 參考&#xff08;https://select2.org/ &#xff09; 2,Html: <select id"txtType" name"Type" class"form-control select2" multiple"multiple"> </select> 3,jquery section scripts{ $(documen…

Asp.Net MVC中Action跳轉小結

首先我覺得action的跳轉大致可以這樣歸一下類&#xff0c;跳轉到同一控制器內的action和不同控制器內的action、帶有參數的action跳轉和不帶參數的action跳轉。 一、RedirectToAction(“Index”);//一個參數時在本Controller下&#xff0c;不傳入參數。 二、RedirectToAction(A…

獲取瀏覽器屏幕高度(js,jq) - 進擊的小牛牛 - 博客園

javascript IE中&#xff1a; document.body.clientWidth > BODY對象寬度 document.body.clientHeight > BODY對象高度 document.documentElement.clientWidth > 可見區域寬度 document.documentElement.clientHeight > 可見區域高度 FireFox中&#xff1a; docum…