0
0

More than 5 years have passed since last update.

GKEのCloud SQLにmysqlのdumpがimportできなかったメモ

Last updated at Posted at 2018-10-12

構成

GKEのpodのなかにdjangoとCloudSQL(MySQL)のコンテナがある。

このメモを見る前に

やろうとしことはそもそもこの手順で簡単にできたかもしれない 😢😢😢

exporting

https://cloud.google.com/sql/docs/import-export/exporting?hl=ja

importing

https://cloud.google.com/sql/docs/import-export/importing?hl=ja

やろうとしたこと

  1. CloudSQLからdumpをexportする
  2. DBを空にして色々作業する
  3. 1のデータを戻す

1.Cloud SQLのdumpをexportする

dumpを取得するときは mysqldump で普通にできた。

$ /usr/local/bin/mysqldump --result-file=/path/to/dump/dump.sql syncable --user=user --host=host --port=port -p --column-statistics=0

2.DBを空にして色々作業する

対象のpodのidを取得後flushして消す

$ kubectl get pods
$ kubectl exec -it hoge python manage.py flush

3.データを戻す

このコマンドは、権限云々で弾かれた。

$ /usr/local/bin/mysql --database=database --user=user --host=host --port=port < /path/to/dump/dump.sql -p

参照したURLを失ってしまったが、権限をつけようともCloud SQLはmysqlコマンドでのimportができないようなことが書いてあったような気がする(*要出典...)

結局どのようにimportしたのか

  1. ローカルのMySQLにimportしてからdjangoで dump.json を生成する
  2. GKEのdjangoのコンテナに dump.jsonをコピーする
  3. GKEのdjangoのコンテナで dump.jsonをロードする

1.ローカルのMySQLにimportしてからdjangoで dump.jsonを生成する

mysqlコマンドでimportしたのち、

$ python manage.py dumpdata > dump.json

2.GKEのdjangoのコンテナに dump.jsonをコピーする

$ /usr/bin/scp -P 6000 -i /Users/gotch/.ssh/google_compute_engine -o StrictHostKeyChecking=no /path/to/file/dump.json gcpuser@xxx.xxx.xxx.xxx:~/

kubectl はいつもCloud Shellで 実行しているので、まずCloud Shellに dump.json をscpした。(GCPのCloud Shellにscpできなかったメモ)

$ kubectl cp ./dump.json hoge:/app

3. GKEのdjangoのコンテナで dump.jsonをロードする

データ量が多いとすごく時間がかかる。

$ kubectl exec -it hoge sh

# python manage.py loaddata dump.json
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0