Ansible playbook mysql数据库迁移
时间: 2023-07-18 12:03:39 浏览: 175
以下是一个简单的 Ansible playbook,用于将 MySQL 数据库从一台主机迁移到另一台主机:
```yaml
---
- name: Migrate MySQL database
hosts: source_host
vars:
new_host_ip: 192.168.1.2
new_host_username: ansible
new_host_password: password123
db_name: mydatabase
db_user: dbuser
db_password: dbpass
tasks:
- name: Dump database
shell: mysqldump --opt -u{{ db_user }} -p{{ db_password }} {{ db_name }} > {{ db_name }}.sql
register: dump_result
- name: Copy dump file to new host
copy: src={{ db_name }}.sql dest=/tmp/{{ db_name }}.sql
delegate_to: localhost
- name: Import database on new host
shell: mysql -h{{ new_host_ip }} -u{{ db_user }} -p{{ db_password }} {{ db_name }} < /tmp/{{ db_name }}.sql
delegate_to: localhost
become_user: "{{ new_host_username }}"
become_method: "sudo"
```
在此示例中,我们将从 `source_host` 主机导出名为 `mydatabase` 的 MySQL 数据库,然后将其复制到新主机 `192.168.1.2` 上,并在那里导入该数据库。你需要将 `new_host_username` 和 `new_host_password` 更改为新主机上具有适当权限的用户的凭据。
你可以运行此 playbook,使用以下命令:
```
ansible-playbook migrate-database.yaml
```
请注意,此示例假定你已设置 SSH 免密登录。如果你需要输入密码才能登录到主机,请使用 `--ask-pass` 选项,并在需要时输入密码。
此外,在导出和导入数据库时,我使用了 `mysqldump` 和 `mysql` 命令,因为它们是最常见的 MySQL 工具。但是,你可能需要根据你的特定情况进行修改。
阅读全文