Mysql 如何在ci/cd管道中创建sql数据库备份
用例 在管道中,我尝试对数据库(AWS RDS)进行备份,并在进行任何迁移更改之前将转储存储到s3。我正在为ci/cd管道使用github操作 问题 我在尝试连接到数据库时遇到问题,出现以下错误: mysqldump:[警告]在命令行界面上使用密码 可能是不安全的。mysqldump:获取错误:1045:拒绝用户访问 “***@”在尝试连接时编辑了_ip“(使用密码:是) 我收到一个拒绝访问错误,尽管我知道凭据是正确的,因为我已经在本地测试了它。唯一的区别是,本地im提示输入密码,而在CI中我希望避免被提示输入密码,因此我通过命令行参数输入密码 pipeline.ymlMysql 如何在ci/cd管道中创建sql数据库备份,mysql,amazon-rds,github-actions,Mysql,Amazon Rds,Github Actions,用例 在管道中,我尝试对数据库(AWS RDS)进行备份,并在进行任何迁移更改之前将转储存储到s3。我正在为ci/cd管道使用github操作 问题 我在尝试连接到数据库时遇到问题,出现以下错误: mysqldump:[警告]在命令行界面上使用密码 可能是不安全的。mysqldump:获取错误:1045:拒绝用户访问 “***@”在尝试连接时编辑了_ip“(使用密码:是) 我收到一个拒绝访问错误,尽管我知道凭据是正确的,因为我已经在本地测试了它。唯一的区别是,本地im提示输入密码,而在CI中我希
name: pipeline
on: [ push ]
env:
PROD_DATABASE_HOST: ${{ secrets.PROD_DATABASE_HOST }}
PROD_DATABASE_USER: ${{ secrets.PROD_DATABASE_USER }}
PROD_DATABASE_PASSWORD: ${{ secrets.PROD_DATABASE_PASSWORD }}
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install mysql
run: |
sudo apt-get -y update
sudo apt-get -y install mysql-client
mysql --version
- name: Take backup
run: |
mysqldump -h $PROD_DATABASE_HOST \
-u $PROD_DATABASE_USER \
-p="$PROD_DATABASE_PASSWORD" \
--port=3306 \
--single-transaction \
--routines \
--triggers \
--databases test_gg > rds-dump.sql
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install & Setup MySQL
run: |
sudo apt-get -y update
sudo apt-get -y install mysql-client
echo MySQL VersionIs:
mysql --version
crds="[mysqldump]\nuser=$PROD_DATABASE_USER
\npassword=$PROD_DATABASE_PASSWORD\nhost=$PROD_DATABASE_HOST\nport=3306"
echo -e $crds > login.cnf
filename=$(date +%Y%m%dT%H%M%S)-backup
mysqldump --defaults-extra-file=login.cnf \
--single-transaction \
--events \
--routines \
--triggers \
--databases test_gg | gzip > ${filename}.gz
stat -c %s ${filename}.gz
echo Done
我通过使用mysqldump的
--defaults extra file
标志解决了这个问题。它允许您将配置存储到.cnf文件中,然后再引用它
pipeline.yml
name: pipeline
on: [ push ]
env:
PROD_DATABASE_HOST: ${{ secrets.PROD_DATABASE_HOST }}
PROD_DATABASE_USER: ${{ secrets.PROD_DATABASE_USER }}
PROD_DATABASE_PASSWORD: ${{ secrets.PROD_DATABASE_PASSWORD }}
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install mysql
run: |
sudo apt-get -y update
sudo apt-get -y install mysql-client
mysql --version
- name: Take backup
run: |
mysqldump -h $PROD_DATABASE_HOST \
-u $PROD_DATABASE_USER \
-p="$PROD_DATABASE_PASSWORD" \
--port=3306 \
--single-transaction \
--routines \
--triggers \
--databases test_gg > rds-dump.sql
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
- name: Install & Setup MySQL
run: |
sudo apt-get -y update
sudo apt-get -y install mysql-client
echo MySQL VersionIs:
mysql --version
crds="[mysqldump]\nuser=$PROD_DATABASE_USER
\npassword=$PROD_DATABASE_PASSWORD\nhost=$PROD_DATABASE_HOST\nport=3306"
echo -e $crds > login.cnf
filename=$(date +%Y%m%dT%H%M%S)-backup
mysqldump --defaults-extra-file=login.cnf \
--single-transaction \
--events \
--routines \
--triggers \
--databases test_gg | gzip > ${filename}.gz
stat -c %s ${filename}.gz
echo Done