summaryrefslogtreecommitdiffstats
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
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>
-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
-rw-r--r--deploy/adapters/ansible/roles/database/templates/my.cnf2
-rw-r--r--deploy/adapters/ansible/roles/database/templates/my_debian.cnf59
-rw-r--r--deploy/adapters/ansible/roles/database/templates/my_redhat.cnf59
-rw-r--r--deploy/adapters/ansible/roles/database/vars/Debian.yml5
-rw-r--r--deploy/adapters/ansible/roles/database/vars/RedHat.yml5
9 files changed, 71 insertions, 209 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
diff --git a/deploy/adapters/ansible/roles/database/templates/my.cnf b/deploy/adapters/ansible/roles/database/templates/my.cnf
index 68e0fca2..f1170ece 100644
--- a/deploy/adapters/ansible/roles/database/templates/my.cnf
+++ b/deploy/adapters/ansible/roles/database/templates/my.cnf
@@ -56,4 +56,4 @@ quote-names
max_allowed_packet = 16M
-!includedir /etc/my.cnf.d/
+!includedir {{ mysql_config_dir }}
diff --git a/deploy/adapters/ansible/roles/database/templates/my_debian.cnf b/deploy/adapters/ansible/roles/database/templates/my_debian.cnf
deleted file mode 100644
index b8016849..00000000
--- a/deploy/adapters/ansible/roles/database/templates/my_debian.cnf
+++ /dev/null
@@ -1,59 +0,0 @@
-[client]
-port = 3306
-socket = /var/run/mysqld/mysqld.sock
-
-
-[mysqld_safe]
-socket = /var/run/mysqld/mysqld.sock
-nice = 0
-
-
-[mysql]
-default-character-set = utf8
-
-[mysqld]
-user = mysql
-collation-server = utf8_unicode_ci
-init-connect = 'SET NAMES utf8'
-character-set-server = utf8
-datadir = /var/lib/mysql
-bind-address = {{ internal_ip }}
-
-max-allowed-packet = 16M
-max-connect-errors = 1000000
-
-max_connections = {{ ansible_processor_vcpus * 100 }}
-
-wait_timeout = 28800
-tmp-table-size = 32M
-max-heap-table-size = 32M
-query-cache-type = 0
-query-cache-size = 0M
-thread-cache-size = 50
-open-files-limit = 65535
-table-definition-cache = 4096
-table-open-cache = 10240
-
-innodb-flush-method = O_DIRECT
-innodb-additional-mem-pool-size = 24M
-innodb-log-file-size = 1024M
-innodb-file-per-table = 1
-innodb-buffer-pool-size = 4096M
-
-innodb-read-io-threads = 4
-innodb-write-io-threads = 4
-innodb-doublewrite = 1
-innodb-log-buffer-size = 1024M
-innodb-buffer-pool-instances = 8
-innodb-log-files-in-group = 2
-innodb-thread-concurrency = {{ ansible_processor_vcpus * 2 }}
-
-innodb_stats_on_metadata = 0
-
-[mysqldump]
-quick
-quote-names
-max_allowed_packet = 16M
-
-
-!includedir /etc/mysql/conf.d/
diff --git a/deploy/adapters/ansible/roles/database/templates/my_redhat.cnf b/deploy/adapters/ansible/roles/database/templates/my_redhat.cnf
deleted file mode 100644
index 68e0fca2..00000000
--- a/deploy/adapters/ansible/roles/database/templates/my_redhat.cnf
+++ /dev/null
@@ -1,59 +0,0 @@
-[client]
-port = 3306
-socket = /var/run/mysqld/mysqld.sock
-
-
-[mysqld_safe]
-socket = /var/run/mysqld/mysqld.sock
-nice = 0
-
-
-[mysql]
-default-character-set = utf8
-
-[mysqld]
-user = mysql
-collation-server = utf8_unicode_ci
-init-connect = 'SET NAMES utf8'
-character-set-server = utf8
-datadir = /var/lib/mysql
-bind-address = {{ internal_ip }}
-
-max-allowed-packet = 16M
-max-connect-errors = 1000000
-
-max_connections = {{ ansible_processor_vcpus * 100 }}
-
-wait_timeout = 28800
-tmp-table-size = 32M
-max-heap-table-size = 32M
-query-cache-type = 0
-query-cache-size = 0M
-thread-cache-size = 50
-open-files-limit = 65535
-table-definition-cache = 4096
-table-open-cache = 10240
-
-innodb-flush-method = O_DIRECT
-innodb-additional-mem-pool-size = 24M
-innodb-log-file-size = 1024M
-innodb-file-per-table = 1
-innodb-buffer-pool-size = 4096M
-
-innodb-read-io-threads = 4
-innodb-write-io-threads = 4
-innodb-doublewrite = 1
-innodb-log-buffer-size = 1024M
-innodb-buffer-pool-instances = 8
-innodb-log-files-in-group = 2
-innodb-thread-concurrency = {{ ansible_processor_vcpus * 2 }}
-
-innodb_stats_on_metadata = 0
-
-[mysqldump]
-quick
-quote-names
-max_allowed_packet = 16M
-
-
-!includedir /etc/my.cnf.d/
diff --git a/deploy/adapters/ansible/roles/database/vars/Debian.yml b/deploy/adapters/ansible/roles/database/vars/Debian.yml
index 2eefc703..621dc492 100644
--- a/deploy/adapters/ansible/roles/database/vars/Debian.yml
+++ b/deploy/adapters/ansible/roles/database/vars/Debian.yml
@@ -30,10 +30,13 @@ services: []
mongodb_service: mongodb
mysql_config:
- dest: /etc/mysql/my.cnf
- src: my_debian.cnf
+ src: my.cnf
- dest: /etc/mysql/conf.d/wsrep.cnf
src: wsrep.cnf
+mysql_config_dir: /etc/mysql/conf.d
+mysql_data_dir: /var/lib/mysql
+
mongodb_config:
dest: /etc/mongodb.conf
src: mongodb.conf
diff --git a/deploy/adapters/ansible/roles/database/vars/RedHat.yml b/deploy/adapters/ansible/roles/database/vars/RedHat.yml
index fe2d3f0a..aed1ac98 100644
--- a/deploy/adapters/ansible/roles/database/vars/RedHat.yml
+++ b/deploy/adapters/ansible/roles/database/vars/RedHat.yml
@@ -31,10 +31,13 @@ mongodb_service: mongod
mysql_config:
- dest: /etc/my.cnf
- src: my_redhat.cnf
+ src: my.cnf
- dest: /etc/my.cnf.d/wsrep.cnf
src: wsrep.cnf
+mysql_config_dir: /etc/my.cnf.d
+mysql_data_dir: /var/lib/mysql
+
mongodb_config:
dest: /etc/mongod.conf
src: mongodb.conf