問題描述
應該有一些體面的方式使用 ansible 來處理 mysql 數據庫,例如將數據插入表中或在 mysql db 上運行任何命令.
我知道有一些模塊可以創建數據庫、管理復制、用戶和變量:
mysql_db
- 從遠程主機添加或刪除 MySQL 數據庫.mysql_replication
(E) - 管理 MySQL 復制mysql_user
- 從 MySQL 數據庫中添加或刪除用戶.mysql_variables
- 管理 MySQL 全局變量
我的用例場景是,我已經在 ubuntu 上安裝了 mysql-server
并成功創建了數據庫,現在我必須將數據插入表中并想知道是否有辦法實現它通過 ansible.
解決方案 1:
我認為您錯過了 mysql_db
模塊的導入功能.您可以使用 import
作為參數來加載架構和數據,并為其提供一個文件以在 target
來自 Ansible 文檔的示例:
#將數據庫轉儲文件復制到遠程主機并恢復到數據庫'my_db'- 復制:src=dump.sql.bz2 dest=/tmp- mysql_db: name=my_db state=import target=/tmp/dump.sql.bz2
解決方案 2:
如果 mysql_db 沒有為您提供所需的所有選項和靈活性,您可以將 mysql
程序與 shell
結合使用.
- 名稱:導入數據庫外殼:mysql db_name <轉儲文件
以上將dump.sql
文件加載到數據庫db_name
中.更多選項參見 mysql
程序手冊:man mysql>
解決方案 3:
mysqlimport
實用程序與 command
模塊:
- 名稱:導入數據庫命令:mysqlimport [選項] db_name textfile1 [textfile2 ...]
參見:mysqlimport 文檔
There should be some decent way to work with mysql databases using ansible like inserting data into tables or any command to run on mysql db.
I know there are modules to create db, manage replications, user and variables:
mysql_db
- Add or remove MySQL databases from a remote host.mysql_replication
(E) - Manage MySQL replicationmysql_user
- Adds or removes a user from a MySQL database.mysql_variables
- Manage MySQL global variables
My use case scenario is, I've installed mysql-server
on ubuntu and created the database successfully and now I have to insert data into the tables and wondering if there is a way to achieve it via ansible.
Solution 1:
I think you missed import functionality of mysql_db
module. You can load both schema and data with it using import
as parameter to state and giving it a file to load in target
Example from Ansible docs:
# 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
Solution 2:
If mysql_db does not give you all options that you need and flexibility you can just use mysql
program in combination with shell
.
- name: Import DB
shell: mysql db_name < dump.sql
Above loads dump.sql
file into database db_name
. See mysql
program manual for more options: man mysql
Solution 3:
mysqlimport
utility with command
module:
- name: Import DB
command: mysqlimport [options] db_name textfile1 [textfile2 ...]
See: mysqlimport docs
這篇關于使用ansible將數據插入mysql表的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!