簡體   English   中英

docker-compose將mysql轉移到另一台主機

[英]docker-compose transfer mysql to another host

我正在使用docker-compose運行MYSQL容器並將其鏈接到www-server

 mysql:
  image: mysql
  container_name: lip-mysql
  ports:
    - "3030:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=user-db
    - MYSQL_USER=user
    - MYSQL_PASSWORD=user
  volumes: 
    - ./etc/mysql:/var/lib/mysql

當我在自己的計算機上運行它並希望將其傳輸到生產環境時。 我做這個

  1. 復制到etc / mysql目錄到服務器
  2. 然后構建這個docker-compose構建
  3. 然后啟動docer-compose up -d
  4. 嘗試訪問數據時。 我收到錯誤消息“找不到基本表或視圖:1146表'user-db.Packages'不存在”。 我發現數據庫結構在那里,但是無法訪問數據。

我應該如何將mysql數據移至新環境?

您是否可以從計算機中轉儲MySQL DB並將其還原到其他環境?

轉儲數據庫:

docker exec -it lip-mysql mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

還原數據庫:

docker exec -it lip-mysql mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

您還可以將MySQL docker映像固定在docker-compose文件中,以避免意外的MySQL引擎更新。

這是我使用的解決方案。

  • 首先將您的mysql文件傳輸到另一個volumes: - ./etc/mysql:/var/lib/mysql mysql volumes: - ./etc/mysql:/var/lib/mysql服務器
  • 然后創建docker-compose.yml並像在發布中一樣導入卷。
  • 這是我所遇到的問題。 版本號MYSQL圖像。 啟動mysql時使用相同的版本編號。 如果您使用的是最新標簽,則應獲得使用mysql_upgrade的錯誤消息。 如果要使用最新圖像,請使用它。

這是開始的正確docker-compose.yml:

mysql:
  image: mysql:5.7
  container_name: lip-mysql
  ports:
    - "3030:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=user-db
    - MYSQL_USER=user
    - MYSQL_PASSWORD=user
  volumes: 
    - ./etc/mysql:/var/lib/mysql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM