2015-01-28 2 views
9

테이블에 데이터를 삽입하거나 mysql db에서 실행할 명령을 사용하여 mysql 데이터베이스로 작업 할 수있는 적절한 방법이 있어야합니다. 내가 아는유용한 테이블을 사용하여 mysql 테이블에 데이터 삽입

는 복제, 사용자 및 변수 관리, DB를 생성하는 모듈이 있습니다 :

  • mysql_db을 - 추가 또는 원격 호스트에서 MySQL 데이터베이스를 제거합니다.
  • mysql_replication (E) - MySQL 복제 관리
  • mysql_user - MySQL 데이터베이스에서 사용자를 추가하거나 삭제합니다.
  • mysql_variables - 방법이 있는지 MySQL의에게 내 유스 케이스 시나리오는, 내가 우분투에 mysql-server을 설치하고 데이터베이스를 성공적으로 만들었습니다됩니다

전역 변수을 관리하고 지금은 테이블에 데이터를 삽입해야하고 궁금해 책임감있는 태도로 그것을 달성하십시오.

답변

20

해결 방법 1 :

난 당신이 mysql_db 모듈의 가져 오기 기능을 놓쳤다 생각합니다. 당신은 Ansible 워드 프로세서에서 target

예에서로드는 상태 매개 변수로 import을 사용하고 그것에게 파일을주는 스키마와 데이터를로드 할 수

# Copy database dump file to remote host and restore it to database 'my_db' 
- copy: src=dump.sql.bz2 dest=/tmp 
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2 

해결 방법 2 :

하는 경우 mysql_db는 당신이 필요로하는 모든 옵션을 제공하지 않고 단지 mysql 프로그램과 shell을 조합하여 사용할 수 있습니다.

- name: Import DB 
    shell: mysql db_name < dump.sql 

위 부하 데이터베이스 db_namedump.sql 파일. 더 많은 옵션에 대한 mysql 프로그램 설명서를 참조하십시오 : man mysql

해결 방법 3 :

mysqlimport 유틸리티 command 모듈 :

- name: Import DB 
    command: mysqlimport [options] db_name textfile1 [textfile2 ...] 

참조 : mysqlimport docs

+1

감사합니다! 귀하의 답변에 감사드립니다! mysql_db의 import 매개 변수가 잘 작동한다. 또한 우리의 배치에서 기존 .sql을 업데이트해야합니다. 다시 한 번 감사드립니다 :) –

+0

다음과 같은 스레드에 유용한 정보가있어 가이드 북을 실행할 때마다 동일한 데이터베이스를 가져 오는 것을 피할 수 있습니다. https://groups.google.com/forum/#!msg/ansible-project/XrQ08TdtcRk/ I4s7rF7GkyMJ –

4

mysql_db 모듈을 사용할 수 있습니다. 그 state: 매개 변수의 값은 present, absent, dump, import입니다. import으로 설정하면 target: 매개 변수를 사용하여 원격 호스트에서 읽을 덤프 파일의 위치를 ​​나타낼 수 있습니다. 비 압축 SQL 파일 (.sql)과 bzip2 (.bz2) 및 gzip (.gz) 압축 파일이 지원됩니다.

# Copy database dump file to remote host and restore it to database 'my_db' 
- copy: src=dump.sql.bz2 dest=/tmp 
- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2 
+0

위험 : 이것은 기존의 데이터베이스를 덮어 씁니다 (있는 경우 import sql에 drops가 있음). https://groups.google.com/forum/#을 참조하십시오.msg/ansible-project/XrQ08TdtcRk/I4s7rF7GkyMJ –

관련 문제