Mysql

MariaDB/MySQL:通過網路遠端從轉儲 (.sql) 文件導入

  • March 21, 2020

my.ini在我按照 Rolando 的回答設置文件後: https://dba.stackexchange.com/a/83385/191579,今天我設法在大約 2-3 小時內導入了大約 40GB+ sqldump 文件。在不同的伺服器上;我昨天設置了類似的設置,導入大約 20+GB 的數據今天仍在執行,我檢查它只導入了不到一半的數據(200+ 百萬行中的 70+ 百萬)。

兩台伺服器的規格如下:

伺服器 1 - 在 2-3 小時內導入 40+GB 數據:

Intel Xeon E3 3.00 Ghz

16GB RAMs

MariaDB 10.3

伺服器 2 - 導入 20+GB 數據僅在 24 小時內導入不到一半:

Intel Xeon E3 3.40 Ghz

16GB RAMs

MariaDB 10.3

顯然,兩台伺服器的規格幾乎相似,但我不明白為什麼另一台需要這麼長時間才能轉儲。這兩個數據庫都不是生產/實時數據庫。

我通常選擇在本地對大文件進行導入/轉儲,因為我的印像是這種方式(顯然)要快得多,但這種情況讓我想到了其他方式。我目前正在將轉儲文件放入我的 PC 以將其拆分為更小的塊,在等待時,我只是想知道是否我是否通過網路(LAN 等)從另一台 PC 導入,該過程是否取決於遠端伺服器電腦規格還是本地電腦規格?

編輯: 我環顧四周,發現了這個:https ://stackoverflow.com/a/12439368/10910692

採用:

mysqldump --extended-insert=FALSE

請注意,多個插入將比一個大插入慢。

我使用此設置轉儲的 20+GB。這可能是原因嗎?

my.ini伺服器 1 和伺服器 2 上的設置:

[mysqld]

innodb_buffer_pool_size=1024M
innodb_file_per_table=1
skip-host-cache
skip-name-resolve

innodb_log_buffer_size = 256M
innodb_log_file_size = 1G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
innodb_doublewrite=0

經過幾次測試後,我得出結論,伺服器本身(我要導入的地方)由於正在進行大量程序而執行緩慢。我認為這從一開始就很明顯,但我只是對我在兩台機器上設置相同的設置並獲得明顯不同的基準感到沮喪。

我做的最後一個測試如下,我使用兩種方法導入目標伺服器(伺服器 2)的 200MB sql 轉儲文件大小;本地和遠端;長凳標記了我在本地擁有的另一個伺服器單元(伺服器 1)。更多細節:

  1. 伺服器 1 - CPU 負載 20% - 30% 和 RAM 負載 50% - 60%

在 MariaDB 10.3 上導入 200MB sql 轉儲文件耗時不到 2 分鐘。 2. 伺服器 2 - CPU 負載 50% - 60% 和 RAM 負載 50% - 60%

在 MariaDB 10.3 上導入 200MB sql 轉儲文件在本地最多需要 8 分鐘。

在 MariaDB 10.3 上導入 200MB sql 轉儲文件最多需要 18 分鐘。

就像我提到的,兩台伺服器都有相似的my.ini設置。我沒有進一步調查為什麼伺服器 2 速度較慢,但是當我發現這會導致插入速度極慢後****丟棄轉儲文件上的設置時,導入的性能會更好!mysqldump --extended-insert=FALSE. 另一個明顯的可能原因是伺服器很忙(提示:CPU 負載)。另外,我需要導入的數據其實是給其他方使用的,但由於我們和他們之間的時差是6小時(我才知道這個!),我沒有積極追求。

引用自:https://dba.stackexchange.com/questions/261575