Ansible 是一種自動化 IT 工具,可以用于配置管理、應用部署等。以下是使用 Ansible 部署 MySQL 主從的步驟:
確保你已經安裝了 Ansible 和相關的 Python 庫。你還需要在 Ansible 控制節點上配置好目標主從服務器的清單文件(inventory file),包括它們的 IP 地址、用戶名、密碼等信息。
創建一個 Ansible Playbook,用于自動化部署 MySQL 主從。以下是一個示例 Playbook:
---
- name: Deploy MySQL master-slave
hosts: mysql_servers
become: yes
tasks:
- name: Install MySQL packages
yum:
name: mysql-server
state: present
- name: Start MySQL service
service:
name: mysqld
state: started
enabled: yes
- name: Configure MySQL master
template:
src: mysql_master.cnf.j2
dest: /etc/my.cnf
notify: reload MySQL
- name: Create MySQL master user
mysql_user:
host: localhost
user: master_user
password: master_password
database: mysql
state: present
- name: Grant replication privileges to master user
mysql_user_privileges:
host: localhost
user: master_user
privileges:
- 'REPLICATION SLAVE'
state: present
- name: Restart MySQL service
service:
name: mysqld
state: restarted
- name: Configure MySQL slave
template:
src: mysql_slave.cnf.j2
dest: /etc/my.cnf
notify: reload MySQL
- name: Create MySQL slave user
mysql_user:
host: localhost
user: slave_user
password: slave_password
database: mysql
state: present
- name: Grant replication privileges to slave user
mysql_user_privileges:
host: localhost
user: slave_user
privileges:
- 'REPLICATION SLAVE'
state: present
handlers:
- name: reload MySQL
mysql_reload:
host: localhost
user: root
password: root_password
在上面的示例中,我們定義了一個名為 mysql_servers
的組,其中包含了目標主從服務器的清單信息。我們還定義了一些任務,用于安裝 MySQL 軟件包、啟動 MySQL 服務、配置 MySQL 主從等。最后,我們定義了一個名為 reload MySQL
的處理程序,用于在修改 MySQL 配置文件后重新加載 MySQL 服務。
我們需要編寫兩個模板文件,分別為 MySQL 主和從服務器。以下是示例模板文件:
MySQL 主服務器模板文件(mysql_master.cnf.j2):
[mysqld]
server-id=1
log-bin=/var/log/mysql/mysql-bin.log
bind-address=0.0.0.0
[mysqldump]
quick
max_allowed_packet=128M
MySQL 從服務器模板文件(mysql_slave.cnf.j2):
[mysqld]
server-id=2
relay-log=/var/log/mysql/mysql-relay-bin.log
log-slave-updates=1
read-only=1
[mysqldump]
quick
max_allowed_packet=128M
在上面的示例中,我們定義了一些配置選項,用于設置 MySQL 主從服務器的身份驗證、日志記錄、數據傳輸等。
保存好 Playbook 和模板文件后,你可以在 Ansible 控制節點上運行以下命令來執行部署:
ansible-playbook -i inventory.ini mysql_master_slave.yml
在上面的命令中,-i
參數指定了清單文件的位置,mysql_master_slave.yml
是 Playbook 的文件名。執行完成后,MySQL 主從服務器應該已經成功部署。