在 Compute Engine 上複製 MySQL 資料庫

Last reviewed 2019-10-08 UTC

本教學課程將說明兩種複製在 Compute Engine 上執行的 MySQL 資料庫的方法。其中一種方法是使用永久磁碟快照。另一種方法則是使用原生 MySQL 匯出和匯入功能,並使用 Cloud Storage 傳輸匯出檔案。Cloud Storage 是 Google Cloud 物件儲存服務。這項服務提供簡單、安全性更高、耐用且高可用性的檔案儲存方式。

複製是指將資料庫複製到其他伺服器的程��������本與來源資料庫無關,並會儲存為某個時間點的快照。您可以將複製的資料庫用於各種用途,而不會對實際工作伺服器造成負載,也不會影響實際工作資料的完整性。其中幾項目的包括:

  • 執行分析查詢。
  • 應用程式的負載測試或整合測試。
  • 擷取資料以填入資料倉儲。
  • 針對資料執行實驗。

本教學課程中所述的每種複製方法各有優缺點。最適合的方法取決於您的情況。下表列出一些重要問題。

問題 方法 1:磁碟快照 方法 2:使用 Cloud Storage 匯出及匯入
MySQL 執行個體需要額外的磁碟空間 不需要額外的磁碟空間 建立及還原時,需要額外的空間來儲存匯出檔案
複製期間來源 MySQL 執行個體的額外負載 不需額外載入 建立及上傳匯出檔案時,CPU 和 I/O 的額外負載
複製時間長度 對於大型資料庫而言,速度相對較快 對於大型資料庫而言,速度相對較慢
可從Google Cloud外部的 MySQL 執行個體複製
複雜度 複雜的指令序列,用於連結複製的磁碟 一組相對簡單的指令,用於複製
可運用現有的備份系統 是,如果備份系統使用 Google Cloud 磁碟快照 是,如果備份系統將檔案匯出至 Cloud Storage
複製的精細程度 只能複製整個磁碟 只能複製指定的資料庫
資料一致性 在快照時刻保持一致 在匯出時保持一致
可使用 Cloud SQL 做為來源 是,如果使用相同的版本
可將 Cloud SQL 做為目的地

本教學課程假設您熟悉 Linux 指令列和 MySQL 資料庫管理。

目標

  • 瞭解如何在 Google Cloud上執行 MySQL 資料庫。
  • 瞭解如何在次要磁碟上建立示範資料庫。
  • 瞭解如何使用 Compute Engine 磁碟快照複製 MySQL 資料庫。
  • 瞭解如何使用 Cloud Storage 轉移匯出檔案,複製 MySQL 資料庫。
  • 瞭解如何使用 Cloud Storage 轉移匯出檔案,將 MySQL 資料庫複製到 Cloud SQL。

費用

In this document, you use the following billable components of Google Cloud:

To generate a cost estimate based on your projected usage, use the pricing calculator. New Google Cloud users might be eligible for a free trial.

When you finish the tasks that are described in this document, you can avoid continued billing by deleting the resources that you created. For more information, see Clean up.

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 啟用 Compute Engine API。
  7. 啟用 API

設定環境

如要完成本教學課程,您需要設定運算環境,並具備下列項目:

  • Compute Engine 上的 MySQL 執行個體 (名為 mysql-prod),用於代表實際工作環境的資料庫伺服器。
  • 附加至實際工作環境伺服器的其他磁碟 (名稱為 mysql-prod-data),用於儲存實際工作環境資料庫。
  • Employees 資料庫的副本已匯入 mysql-prod,以模擬您要複製的正式版資料庫。
  • Compute Engine 上的 MySQL 執行個體 (名為 mysql-test),用於代表您的測試資料庫伺服器。將資料庫複製到這個伺服器。

下圖說明這個架構。

圖表:說明本教學課程中 MySQL 資料庫複製作業的設定。

建立實際工作環境 VM 執行個體

為了模擬實際環境,您需要設定在 Debian Linux 上執行 MySQL 的 Compute Engine VM 執行個體。

本教學課程的 VM 執行個體會使用兩個磁碟:一個 50 GB 磁碟用於作業系統和使用者帳戶,另一個 100 GB 磁碟用於資料庫儲存空間。

在 Compute Engine 中,使用不同的磁碟不會帶來任何效能優勢。磁碟效能取決於連接至執行個體的所有磁碟總儲存空間容量,以及 VM 執行個體的 vCPU 總數。因此,資料庫和記錄檔案可以位於相同的磁碟。

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 設定偏好可用區:

    ZONE=us-east1-b
    REGION=us-east1
    gcloud config set compute/zone "${ZONE}"
    
  3. 建立 Compute Engine 執行個體:

    gcloud compute instances create mysql-prod \
        --machine-type=n1-standard-2 \
        --scopes=cloud-platform \
        --boot-disk-size=50GB \
        --boot-disk-device-name=mysql-prod \
        --create-disk="mode=rw,size=100,type=pd-standard,name=mysql-prod-data,device-name=mysql-prod-data"
    

    這個指令會授予執行個體對 Google Cloud API 的完整存取權,建立 100 GB 的次要磁碟,並將磁碟連結至執行個體。忽略磁碟效能警告,因為本教學課程不需要高效能。

設定其他磁碟

連接至實際工作環境執行個體的第二個磁碟用於儲存實際工作環境資料庫。這個磁碟是空白的,因此您需要分割、格式化及掛接磁碟。

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體頁面

  2. 請確認 mysql-prod 執行個體名稱旁顯示綠色勾號 ,表示執行個體已就緒。

  3. 按一下 mysql-prod 執行個體旁邊的「SSH」SSH按鈕。瀏覽器會開啟與執行個體的終端機連線。

  4. 在終端機視窗中,顯示已連接至執行個體的磁碟清單:

    lsblk
    

    輸出內容如下:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   50G  0 disk
    └─sda1   8:1    0   50G  0 part /
    sdb      8:16   0  100G  0 disk
    

    名為 sdb 的磁碟 (100 GB) 是資料磁碟。

  5. 格式化 sdb 磁碟,並建立使用 ext4 檔案系統的單一分區:

    sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard \
        /dev/sdb
    
  6. 建立 MySQL 資料目錄,做為資料磁碟的掛接點:

    sudo mkdir -p /var/lib/mysql
    
  7. 如要自動在您建立的掛接點掛接磁碟,請在 /etc/fstab 檔案中新增項目:

    echo "UUID=`sudo blkid -s UUID -o value /dev/sdb` /var/lib/mysql ext4 discard,defaults,nofail 0 2" \
       | sudo tee -a /etc/fstab
    
  8. 掛接磁碟:

    sudo mount -av
    
  9. 從資料磁碟移除所有檔案,讓 MySQL 可以將其用作資料目錄:

    sudo rm -rf /var/lib/mysql/*
    

安裝 MySQL 伺服器

您必須下載及安裝 MySQL Community Edition。MySQL 資料目錄會在額外磁碟上建立。

  1. 在連線至 mysql-prod 的 SSH 工作階段中,下載並安裝 MySQL 設定套件:

    wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
    
  2. 系統提示時,請選取「MySQL Server & Cluster」(MySQL 伺服器和叢集) 選項,然後選取「mysql-5.7」

  3. 在清單中選取「Ok」選項,即可完成套件的設定。

  4. 重新整理存放區快取並安裝 mysql-community 套件:

    sudo apt-get update
    sudo apt-get install -y mysql-community-server mysql-community-client
    
  5. 如果系統警告您資料目錄已存在,請選取「確定」

  6. 當系統提示您提供根密碼時,請建立並輸入密碼。記下密碼或暫時將密碼存放在安全的地方。

下載及安裝範例資料庫

  1. 在與 mysql-prod 執行個體連線的 SSH 工作階段中,安裝 Git:

    sudo apt-get install -y git
    
  2. 複製包含 Employees 資料庫指令碼的 GitHub 存放區

    git clone https://github.com/datacharmer/test_db.git
    
  3. 將目錄變更為 Employees 資料庫指令碼的目錄:

    cd test_db
    
  4. 執行 Employees 資料庫建立指令碼:

    mysql -u root -p -q < employees.sql
    

    系統出現提示時,請輸入先前建立的根密碼。

  5. 如要確認範例資料庫是否正常運作,您可以執行查詢,計算 employees 資料表中的列數:

    mysql -u root -p -e "select count(*) from employees.employees;"
    

    出現提示時,請輸入先前建立的根密碼。

    輸出內容如下:

    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    

建立測試 VM 執行個體

在本節中,您將建立名為 mysql-test 的 MySQL VM 執行個體,做為複製資料庫的目的。這個執行個體的設定與實際工作環境執行個體相同。不過,您不需要建立第二個資料磁碟,而是在本教學課程稍後的部分連接資料磁碟。

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 建立測試 MySQL 執行個體:

    gcloud compute instances create mysql-test \
      --machine-type=n1-standard-2 \
      --scopes=cloud-platform \
      --boot-disk-size=50GB \
      --boot-disk-device-name=mysql-test
    

    您可以忽略磁碟效能警告,因為本教學課程不需要高效能。

在測試 VM 執行個體上安裝 MySQL 伺服器

您也需要在 mysql-test VM 執行個體上下載及安裝 MySQL Community Edition。

  1. 在連線至 mysql-test 的 SSH 工作階段中,下載並安裝 MySQL 設定套件:

    wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
    
  2. 系統提示時,請選取「MySQL Server & Cluster」(MySQL 伺服器和叢集) 選項,然後選取「mysql-5.7」

  3. 在清單中選取「Ok」選項,即可完成套件的設定。

  4. 重新整理存放區快取並安裝 mysql-community 套件:

    sudo apt-get update
    sudo apt-get install -y mysql-community-server mysql-community-client
    
  5. 當系統提示您提供根密碼時,請建立並輸入密碼。記下密碼或暫時將密碼存放在安全的地方。

使用 Compute Engine 磁碟快照複製資料庫

複製在 Compute Engine 上執行的 MySQL 資料庫有一種方法,就是將資料庫儲存在其他資料磁碟上,然後使用永久磁碟快照來建立該磁碟的複本。

永久磁碟快照可讓您取得磁碟上資料的時間點副本。排定磁碟快照作業時間,是自動備份資料的一種方式。

在本教學課程的這個部分,您將執行以下操作:

  • 為正式版伺服器的資料磁碟建立快照。
  • 使用快照建立新磁碟。
  • 將新磁碟掛接至測試伺服器。
  • 在測試執行個體上重新啟動 MySQL 伺服器,讓伺服器使用新磁碟做為資料磁碟。

下圖說明如何使用磁碟快照來複製資料庫。

這張圖表顯示使用磁碟快照來複製 MySQL 資料庫的設定。

建立磁碟快照

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 在與 VM 執行個體相同的區域中建立資料磁碟快照:

    gcloud compute disks snapshot mysql-prod-data \
         --snapshot-names=mysql-prod-data-snapshot \
         --zone="${ZONE}"
    

    幾分鐘後,系統就會建立快照。

將磁碟快照附加至測試執行個體

您必須使用建立的快照建立新的資料磁碟,然後將其附加至 mysql-test 執行個體。

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 使用實際工作磁碟的快照建立新的永久磁碟,以便儲存內容:

    gcloud beta compute disks create mysql-test-data \
         --size=100GB \
         --source-snapshot=mysql-prod-data-snapshot \
         --zone="${ZONE}"
    
  3. 將新磁碟連結至 mysql-test 執行個體,並設定讀取/寫入權限:

    gcloud compute instances attach-disk mysql-test \
        --disk=mysql-test-data --mode=rw
    

在 Linux 中掛接新的資料磁碟

如要將複製的資料磁碟用作 MySQL 資料目錄,您必須停止 MySQL 執行個體並掛載磁碟。

  1. 在連線至 mysql-test 的 SSH 工作階段中,停止 MySQL 服務:

    sudo service mysql stop
    
  2. 在終端機視窗中,顯示已連接至執行個體的磁碟清單:

    lsblk
    

    輸出內容如下:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   50G  0 disk
    └─sda1   8:1    0   50G  0 part /
    sdb      8:16   0  100G  0 disk
    

    名為 sdb 的磁碟 (100 GB) 是資料磁碟。

  3. 將 MySQL 資料磁碟掛接至 MySQL 資料目錄:

    sudo mount -o discard,defaults /dev/sdb /var/lib/mysql
    

    掛載此磁碟會隱藏所有 MySQL 設定檔和表格空間,並以磁碟的內容取代。

    使用這個指令後,磁碟會暫時掛載,並不會在系統啟動時重新掛載。如果您想在系統啟動時掛接磁碟,請建立 fstab 項目。詳情請參閱本教學課程先前所述的「設定額外磁碟」一節。

在測試執行個體中啟動 MySQL

  1. 在連線至 mysql-test 的 SSH 工作階段中,啟動 MySQL 服務:

    sudo service mysql start
    
  2. 如要確認複製的資料庫是否可正常運作,請執行查詢,計算 employees 資料表中的列數:

    mysql -u root -p -e "select count(*) from employees.employees;"
    

    系統顯示提示時,請輸入 mysql-prod 資料庫伺服器的根密碼。由於整個 MySQL 資料目錄是 mysql-prod 執行個體資料目錄的複本,因此系統會複製所有資料庫、資料庫使用者和密碼,因此需要正式版執行個體的 root 密碼。

    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    

    列數與 mysql-prod 例項相同。

您已瞭解如何使用持久性磁碟快照複製資料庫,接下來可以試著使用匯出和匯入功能複製資料庫。如要完成這第二種方法的教學課程,您必須卸載複製的磁碟。

卸載複製的磁碟

如要卸載使用磁碟快照建立的複本磁碟,請執行下列步驟:

  1. 在連線至 mysql-test 執行個體的 SSH 工作階段中,停止 MySQL 服務:

    sudo service mysql stop
    
  2. 從 MySQL 資料目錄中卸載複製的資料磁碟:

    sudo umount /var/lib/mysql
    
  3. 重新啟動 MySQL 服務:

    sudo service mysql start
    

使用匯出和匯入功能進行複製

複製在 Compute Engine 上執行的 MySQL 資料庫的第二種方法,是使用 MySQL 內建的匯出 (使用 mysqldump) 和匯入功能。使用這種方法時,您必須使用 Cloud Storage 轉移匯出檔案。

本教學課程的這一節會使用您在「使用 Compute Engine 磁碟快照複製資料庫」一節中建立的資源。如果您尚未完成該部分,請先完成再繼續操作。

在本教學課程的這個部分,您將執行以下操作:

  • 建立 Cloud Storage bucket。
  • 匯出正式版執行個體的資料庫,並將資料庫寫入 Cloud Storage。
  • 將匯出檔案匯入測試執行個體,從 Cloud Storage 讀取檔案。

下圖顯示如何透過使用 Cloud Storage 傳輸匯出內容,複製資料庫。

這張圖表顯示使用 Cloud Storage 複製 MySQL 資料庫的設定。

由於 Google Cloud 以外的系統可以取得 Cloud Storage 存取權,因此您可以使用這種方法從外部 MySQL 執行個體複製資料庫。

建立 Cloud Storage 值區

您需要建立 Cloud Storage 值區,以便在將匯出檔案從 mysql-prod 執行個體轉移至 mysql-test 執行個體時儲存這些檔案。

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 在 VM 執行個體所在的區域建立 Cloud Storage 值區:

    gcloud storage buckets create "gs://$(gcloud config get-value project)-bucket" --location="${REGION}"
    

匯出資料庫

在實際工作環境中,您可能已使用 mysqldump 匯出檔案建立備份。您可以使用這些備份來複製資料庫。

在本教學課程中,您將使用 mysqldump 建立新的匯出檔案,這不會影響任何現有的完整或增量備份排程。

  • 在連線至 mysql-prod 執行個體的 SSH 工作階段中,匯出 Employees 資料庫,並將其串流傳輸至先前建立的儲存桶中的 Cloud Storage 物件:

    mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose  --hex_blob \
        --databases employees |\
         gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-dump.sql"
    

    系統顯示提示時,請輸入 mysql-prod 資料庫伺服器的根密碼。

    您在匯出作業中使用 utf8mb4 字元集,以避免任何字元編碼問題。

    使用 --add-drop-database 選項,讓匯出內容包含 DROP DATABASECREATE DATABASE 陳述式。

匯入匯出的檔案

  1. 在連線至 mysql-test 執行個體的 SSH 工作階段中,將從 Cloud Storage 值區匯出的檔案串流至 mysql 指令列應用程式:

    gcloud storage cat "gs://$(gcloud config get-value project)-bucket/employees-dump.sql" |\
        mysql --user=root -p --default-character-set=utf8mb4
    

    系統顯示提示時,請輸入 mysql-test 資料庫伺服器的根密碼。

    您在匯入作業中使用 utf8mb4 字元集,以避免任何字元編碼問題。

  2. 如要確認複製的資料庫是否可正常運作,請執行查詢,計算 employees 資料表中的列數:

    mysql -u root -p -e "select count(*) from employees.employees;"
    

    系統顯示提示時,請輸入 mysql-test 資料庫伺服器的根密碼。

    +----------+
    | count(*) |
    +----------+
    |   300024 |
    +----------+
    

    列數與 mysql-prod 例項相同。

使用 Cloud SQL 做為複製目的地

如果目標資料庫託管在 Cloud SQL,而來源資料庫則位於 Compute Engine,則唯一支援的複製機制是將資料庫匯出至 Cloud Storage,然後將資料庫匯入至 Cloud SQL。

Cloud SQL 說明文件所述,Cloud SQL 只能匯入不含任何觸發條件、預存程序、視圖或函式的匯出檔案。

如果資料庫需要上述任何一種元素,您必須使用 --skip-triggers--ignore-table [VIEW_NAME] 指令列引數,將這些元素排除在匯出內容之外,然後在匯入後手動重新建立這些元素。

建立 MySQL 適用的 Cloud SQL 執行個體

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 建立與 mysql-prod 執行個體相同資料庫版本的 MySQL 適用 Cloud SQL 執行個體:

    gcloud sql instances create mysql-cloudsql \
        --tier=db-n1-standard-2 --region=${REGION} --database-version MYSQL_5_7
    

    幾分鐘後,Cloud SQL 資料庫就會建立完成。

  3. 將超級使用者密碼重設為已知值:

    gcloud sql users set-password root \
        --host=% --instance=mysql-cloudsql  --prompt-for-password
    

    當系統提示您提供根密碼時,請建立並輸入密碼。記下密碼或暫時將密碼存放在安全的地方。

匯出資料庫

如要以適合匯入至 Cloud SQL 的格式匯出資料庫,您必須排除資料庫中的任何視圖。

  1. 在連線至 mysql-prod 執行個體的 SSH 工作階段中,設定環境變數,其中包含 mysqldump 指令的一組指令列引數,以便���略 Employees 資料庫中的���視畫面:

    DATABASE_NAME=employees
    IGNORE_TABLES_ARGS="`mysql -u root -p -s -s -e \"
        SELECT CONCAT('--ignore-table ${DATABASE_NAME}.',TABLE_NAME)
        FROM information_schema.TABLES
        WHERE TABLE_TYPE LIKE 'VIEW' AND TABLE_SCHEMA = '${DATABASE_NAME}';
        \"`"
    

    系統顯示提示時,請輸入 mysql-prod 資料庫伺服器的根密碼。

  2. 查看變數內容,確認設定正確無誤:

    echo "${IGNORE_TABLES_ARGS}"
    
    --ignore-table employees.current_dept_emp
    --ignore-table employees.dept_emp_latest_date
    
  3. 匯出 Employees 資料庫 (不含觸發條件和檢視畫面),直接將其串流傳送至先前建立的值區中的 Cloud Storage 物件:

    mysqldump --user=root -p --default-character-set=utf8mb4 --add-drop-database --verbose \
        --hex-blob --skip-triggers --set-gtid-purged=OFF \
        $IGNORE_TABLES_ARGS \
        --databases employees |\
        gcloud storage cp - "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"
    

    系統顯示提示時,請輸入 mysql-prod 資料庫伺服器的根密碼。

更新物件權限

您必須在 Cloud Storage 值區和匯出物件上設定正確的權限,讓 Cloud SQL 服務帳戶能夠讀取這些項目。使用 Google Cloud 主控台匯入物件時,系統會自動設定這些權限,也可以使用 gcloud 指令設定這些權限。

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 設定含有 Cloud SQL 執行個體服務帳戶位址的環境變數:

    CLOUDSQL_SA="$(gcloud sql instances describe mysql-cloudsql --format='get(serviceAccountEmailAddress)')"
    
  3. 將服務帳戶新增至儲存值區身分與存取權管理 (IAM) 政策,並設為讀取和寫入權限:

    gcloud storage buckets add-iam-policy-binding "gs://$(gcloud config get-value project)-bucket/" \
        --member=user:"${CLOUDSQL_SA}" --role=roles/storage.objectUser
    

匯入匯出的資料庫

  1. 開啟 Cloud Shell。

    開啟 Cloud Shell

  2. 將匯出的檔案匯入 Cloud SQL 執行個體:

    gcloud sql import sql mysql-cloudsql \
        "gs://$(gcloud config get-value project)-bucket/employees-cloudsql-import.sql"
    

    系統顯示提示訊息時,請輸入 y

  3. 如要確認複製的資料庫是否可正常運作,請執行查詢,計算 employees 資料表中的列數:

    echo "select count(*) from employees.employees;" |\
        gcloud sql connect mysql-cloudsql --user=root
    

    出現提示時,請輸入 mysql-cloudsql 資料庫伺服器的根密碼。

    輸出內容如下:

    Connecting to database with SQL user [root].Enter password:
    count(*)
    300024
    

    列數與 mysql-prod 例項相同。

正式系統的其他資訊

以下類別提供實際工作環境系統的其他最佳做法。

使用磁碟快照

針對實體備份 (例如磁碟快照),MySQL 說明文件建議在建立快照前,先暫停對資料庫的寫入作業。您可以使用 FLUSH TABLES WITH READ LOCK 指令執行這項操作。快照完成後,您可以使用 UNLOCK TABLES 重新啟動寫入作業。

對於使用 InnoDB 資料表的資料庫,建議您直接取得快照,而無須先執行 FLUSH TABLES WITH READ LOCK 指令。這可讓資料庫持續運作,不會有任何不良影響,但快照可能處於不一致的狀態。不過,如果發生這種情況,InnoDB 引擎可以在複本啟動時,將資料表重建為一致狀態。

對於使用 MyISAM 資料表的資料庫,執行 FLUSH TABLES WITH READ LOCK 指令會封鎖對資料表的所有寫入作業,使資料庫變成唯讀,直到您執行 UNLOCK TABLES 指令為止。

如果您未先清除並鎖定資料表就建立快照,新複製的資料庫可能會包含不一致的資料,或遭到損毀。

因此,如要使用 MyISAM 資料表取得資料庫的一致快照,建議您在讀取用複本上執行 FLUSH TABLES WITH READ LOCK,並擷取該複本的快照,以免影響主要 (主) 資料庫的效能。

使用 mysqldump 指令

為了建立與來源資料庫一致的匯出檔案,mysqldump 指令會在匯出作業期間鎖定所有資料表。也就是說,在匯出資料庫時,系統會封鎖對資料庫的寫入作業。

因此,建議您針對主要資料庫的讀取副本執行 mysqldump 指令,以免阻斷主要資料庫。

清除所用資源

本教學課程需使用資源,如要避免系統向您的 Google Cloud 帳戶收取相關費用,請刪除在本課程中建立的 Google Cloud 專案。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

後續步驟