aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters/ansible/roles/database/tasks
diff options
context:
space:
mode:
authorcarey.xu <carey.xuhan@huawei.com>2016-03-01 17:50:10 +0800
committerJustin chi <chigang@huawei.com>2016-03-14 03:09:02 +0000
commit9710824c31c7e3b41d482e68ae790b46dc0513bb (patch)
tree94fc7da83d99ff33e6325265be04754d2d1de6f9 /deploy/adapters/ansible/roles/database/tasks
parent9418c59bf42d7f7c0348580e372a7ca5ddbbb1d8 (diff)
maker mariadb playbook reentrant
JIRA: COMPASS-329 Change-Id: I02680fe271f3896dc901a67c043570449fd3d64e Signei-off-by: carey.xu <carey.xuhan@huawei.com> Signed-off-by: carey.xu <carey.xuhan@huawei.com>
Diffstat (limited to 'deploy/adapters/ansible/roles/database/tasks')
-rw-r--r--deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml52
-rw-r--r--deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml41
-rwxr-xr-xdeploy/adapters/ansible/roles/database/tasks/mariadb_cluster_redhat.yml37
-rw-r--r--deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml20
4 files changed, 62 insertions, 88 deletions
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml
index 84704fa4..8fdb1437 100644
--- a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml
+++ b/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster.yml
@@ -7,8 +7,52 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
---
-- include: mariadb_cluster_debian.yml
- when: ansible_os_family == "Debian"
+- name: get cluster status
+ shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'|awk '{print $2}'
+ register: cluster_status
+ when:
+ - inventory_hostname == haproxy_hosts.keys()[0]
-- include: mariadb_cluster_redhat.yml
- when: ansible_os_family == "RedHat"
+- name: start first node to create new cluster
+ service:
+ name: mysql
+ state: restarted
+ enabled: yes
+ args: "--wsrep-new-cluster"
+ when: |
+ inventory_hostname == haproxy_hosts.keys()[0]
+ and not cluster_status.stdout | search("OPERATIONAL")
+
+- name: wait for cluster ready
+ shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'|awk '{print $2}'
+ register: cluster_status
+ until: cluster_status|success
+ failed_when: not cluster_status.stdout | search("OPERATIONAL")
+ retries: 10
+ delay: 3
+ when: |
+ inventory_hostname == haproxy_hosts.keys()[0]
+ and not cluster_status.stdout | search("OPERATIONAL")
+
+- name: if I in the cluster nodes
+ shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_incoming_addresses"'|awk '{print $2}'
+ register: cluster_nodes
+ changed_when: false
+
+- name: restart other nodes and join cluster
+ service:
+ name: mysql
+ state: restarted
+ enabled: yes
+ when: |
+ inventory_hostname != haproxy_hosts.keys()[0]
+ and not cluster_nodes.stdout | search("{{ internal_ip }}")
+
+- name: restart first nodes
+ service:
+ name: mysql
+ state: restarted
+ when: |
+ (inventory_hostname == haproxy_hosts.keys()[0]
+ and haproxy_hosts|length > 1
+ and not cluster_nodes.stdout | search('{{ internal_ip }}'))
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml
deleted file mode 100644
index 2ae9a2b0..00000000
--- a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_debian.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-- name: start first node to create new cluster
- service:
- name: mysql
- state: restarted
- enabled: yes
- args: "--wsrep-new-cluster"
- when:
- - inventory_hostname == haproxy_hosts.keys()[0]
-
-- name: wait for cluster ready
- command: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'
- register: cluster_status
- until: cluster_status|success
- failed_when: not cluster_status.stdout | search("OPERATIONAL")
- retries: 10
- delay: 3
- when:
- - inventory_hostname == haproxy_hosts.keys()[0]
-
-- name: restart other nodes and join cluster
- service:
- name: mysql
- state: restarted
- enabled: yes
- when:
- - inventory_hostname != haproxy_hosts.keys()[0]
-
-- name: restart first nodes
- service:
- name: mysql
- state: restarted
- when: inventory_hostname == haproxy_hosts.keys()[0] and haproxy_hosts|length > 1
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_redhat.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_redhat.yml
deleted file mode 100755
index 2fbde33b..00000000
--- a/deploy/adapters/ansible/roles/database/tasks/mariadb_cluster_redhat.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-- name: start first node to create new cluster
- shell: service mysql start --wsrep-new-cluster
- when:
- - inventory_hostname == haproxy_hosts.keys()[0]
-
-- name: wait for cluster ready
- command: mysql -e"show status like 'wsrep%'"
- register: cluster_status
- until: cluster_status|success
- failed_when: not cluster_status.stdout | search("ON")
- retries: 10
- delay: 3
- when:
- - inventory_hostname == haproxy_hosts.keys()[0]
-
-- name: restart other nodes and join cluster
- service:
- name: mysql
- state: restarted
- enabled: yes
- when:
- - inventory_hostname != haproxy_hosts.keys()[0]
-
-- name: restart first nodes
- service:
- name: mysql
- state: restarted
- when: inventory_hostname == haproxy_hosts.keys()[0] and haproxy_hosts|length > 1
diff --git a/deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml b/deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml
index 14fe1634..bf9f3464 100644
--- a/deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml
+++ b/deploy/adapters/ansible/roles/database/tasks/mariadb_install.yml
@@ -45,17 +45,25 @@
- "\\s*uid = \\$MYUID$"
- "\\s*gid = \\$MYGID$"
-- stat: path=/opt/mysql_init_complete
- register: mysql_init_complete
-
- name: enable auto start
file:
path=/usr/sbin/policy-rc.d
state=absent
when: ansible_os_family == "Debian"
-- name: rm old datafiles
- shell: rm -rf /var/lib/mysql/ib_logfile*
-
- name: set owner
file: path=/var/lib/mysql owner=mysql group=mysql recurse=yes state=directory
+
+- name: get logfile stat
+ stat: path='{{ mysql_data_dir }}/ib_logfile0'
+ register: logfile_stat
+
+- debug: msg='{{ logfile_stat.stat.exists}}'
+- debug: msg='{{ logfile_stat.stat.size }}'
+ when: logfile_stat.stat.exists
+
+- name: rm logfile if exist and size mismatch
+ shell: 'rm -rf {{ mysql_data_dir }}/ib_logfile*'
+ when: |
+ logfile_stat.stat.exists
+ and logfile_stat.stat.size != 1073741824