ansible-playbook一键部署mysql双主集群 怼烎@ 2021-11-17 11:38 877阅读 0赞 前面的博客中,介绍过mysql的双主集群的搭建,那么ansible就是将之前的手动的操作过程转换成剧本的方式,然后执行剧本,就完成了mysql的双主集群的搭建,具体的搭建过程可看之前的mysql的博客模块,下面是ansible部署mysql双主的文件结构 [root@wyl01 mysql]# tree . ├── group_vars │ └── mysql.yml # 存放的是所用到的参数 ├── hosts # 主机清单 ├── README.txt ├── roles │ └── mysql │ ├── files │ │ └── mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz # 安装的版本 │ ├── tasks #目录下面是具体的每一项任务 │ │ ├── add_user.yml │ │ ├── change_slave_to_master.yml │ │ ├── install_mysql.yml │ │ ├── main.yml │ │ └── pre_install.yml │ └── templates # 模板文件 │ ├── my.cnf.j2 │ └── mysql.service.j2 └── site.yml # 执行的入口文件 1. 查看主机清单和所用到的变量 [root@wyl01 mysql]# cat hosts #主机清单 [mysql] wyl02 ansible_ssh_host=192.168.52.129 ansible_ssh_pass=123456 master=true wyl03 ansible_ssh_host=192.168.52.130 ansible_ssh_pass=123456 slave=true [root@wyl01 mysql]# cat group_vars/mysql.yml # 变量,下面有的参数使用是为了多实例部署,是剧本具有高效性 --- mysql_version: mysql-5.7.20-linux-glibc2.12-x86_64 mysql_install_path: /usr/local mysql_link: mysql mysql_sock: /tmp/mysql.sock mysql_port: 3306 mysql_root_passwd: "123456" master_ip: 192.168.52.129 slave_ip: 192.168.52.130 repl_user: repl repl_passwd: "123456" 2 剧本的入口文件 [root@wyl01 mysql]# cat site.yml --- - hosts: all gather_facts: yes roles: - mysql 3 剧本执行的每一项任务 ![20190730194840849.png][] [root@wyl01 tasks]# cat pre_install.yml # 安装前的准备工作 - name: install_MySQL-python yum: name: MySQL-python state: latest tags: - install_MySQL-python [root@wyl01 tasks]# cat add_user.yml # mysql的用户 --- - name: add_mysql_user user: name: mysql create_home: no shell: /sbin/nologin tags: - add_mysql_user [root@wyl01 tasks]# cat install_mysql.yml # 解压,授权,启动,修改初始化密码等操作 --- - name: unarchive_mysql_tar unarchive: src: "{ { mysql_version }}.tar.gz" dest: "{ { mysql_install_path }}" owner: mysql group: mysql tags: - unarchive_mysql_tar - name: chown_mysql file: dest: "{ { mysql_install_path }}/{ {mysql_version}}" owner: mysql group: mysql recurse: yes tags: - chown_mysql - name: link_mysql file: src: "{ { mysql_install_path }}/{ {mysql_version}}" dest: "{ { mysql_install_path }}/{ { mysql_link }}" owner: mysql group: mysql state: link tags: - link_mysql - name: mkdir_log file: path: "{ { mysql_install_path }}/{ { mysql_link }}/log" owner: mysql group: mysql state: directory tags: - mkdir_log - name: touch_mysql.log file: path: "{ { mysql_install_path }}/{ { mysql_link }}/log/mysqld.log" owner: mysql group: mysql state: touch tags: - touch_mysql.log - name: copy_my.cnf template: src: my.cnf.j2 dest: /etc/my.cnf tags: - copy_my.cnf - name: init_mysql shell: ./bin/mysqld --initialize --user=mysql args: chdir: "{ { mysql_install_path }}/{ { mysql_link }}" tags: - init_mysql - name: get_mysql_passwd shell: cat log/mysqld.log |grep localhost|awk -F ':' '{print $4}'|cut -c 2- register: mysql_init_passwd args: chdir: "{ { mysql_install_path }}/{ { mysql_link }}" tags: - get_mysql_passwd - name: dispaly_passwd debug: msg: "{ { mysql_init_passwd.stdout }}" tags: - dispaly_passwd - name: copy_mysql.server copy: src: "{ { mysql_install_path }}/{ { mysql_link }}/support-files/mysql.server" dest: /etc/init.d/mysql-{ { mysql_port }}.server mode: 0755 tags: - copy_mysql.server - name: add_mysql_systemd template: src: mysql.service.j2 dest: /etc/systemd/system/mysql-{ { mysql_port }}.service tags: - add_mysql_systemd - name: start_mysql_service systemd: name: mysql-{ { mysql_port }} daemon_reload: yes enabled: yes state: restarted tags: - start_mysql_service - name: alter_passwd shell: ./bin/mysqladmin -u root -p'{ {mysql_init_passwd.stdout}}' password '{ { mysql_root_passwd }}' args: chdir: "{ { mysql_install_path }}/{ { mysql_link }}" tags: - alter_passwd [root@wyl01 mysql]# cat roles/mysql/tasks/change_slave_to_master.yml #change master操作 --- - name: create_user mysql_user: login_host: 127.0.0.1 login_port: "{ { mysql_port }}" login_user: root login_password: "{ { mysql_root_passwd }}" name: "{ { repl_user }}" password: "{ { repl_passwd }}" priv: "*.*:ALL" state: present host: "%" when: master is defined tags: - create_user - name: change_slave_to_master1 mysql_replication: login_unix_socket: "{ { mysql_sock }}" login_host: 127.0.0.1 login_port: "{ { mysql_port }}" login_user: root login_password: "{ { mysql_root_passwd }}" master_host: "{ { master_ip }} " master_user: "{ { repl_user }}" master_password: "{ { repl_passwd }}" master_port: "{ { mysql_port }}" master_auto_position: "1" mode: changemaster when: slave is defined tags: - change_slave_to_master1 - name: start_slave1 mysql_replication: login_unix_socket: "{ { mysql_sock }}" login_user: root login_host: 127.0.0.1 login_port: "{ { mysql_port }}" login_password: "{ { mysql_root_passwd }}" mode: startslave tags: - start_slave1 - name: change_slave_to_master2 mysql_replication: login_unix_socket: "{ { mysql_sock }}" login_host: 127.0.0.1 login_port: "{ { mysql_port }}" login_user: root login_password: "{ { mysql_root_passwd }}" master_host: "{ { slave_ip }} " master_user: "{ { repl_user }}" master_password: "{ { repl_passwd }}" master_port: "{ { mysql_port }}" master_auto_position: "1" mode: changemaster when: master is defined tags: - change_slave_to_master2 - name: start_slave2 mysql_replication: login_unix_socket: "{ { mysql_sock }}" login_user: root login_host: 127.0.0.1 login_port: "{ { mysql_port }}" login_password: "{ { mysql_root_passwd }}" mode: startslave tags: - start_slave2 - name: get_slave_info mysql_replication: login_host: 127.0.0.1 login_user: root login_port: 3306 login_password: "123456" mode: getslave register: info tags: - get_slave_info - name: dispaly_slave debug: msg: "Slave_SQL_Running={ { info.Slave_IO_Running }} Slave_SQL_Running={ { info.Slave_SQL_Running }}" tags: - dispaly_slave 执行结果如下: [root@wyl01 mysql]# ansible-playbook -i hosts site.yml PLAY [all] ********************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************** ok: [wyl03] ok: [wyl02] TASK [mysql : install_MySQL-python] ********************************************************************************************************************************************************* ok: [wyl02] ok: [wyl03] TASK [mysql : add_mysql_user] *************************************************************************************************************************************************************** ok: [wyl03] ok: [wyl02] TASK [mysql : unarchive_mysql_tar] ********************************************************************************************************************************************************** changed: [wyl03] changed: [wyl02] TASK [mysql : chown_mysql] ****************************************************************************************************************************************************************** changed: [wyl03] changed: [wyl02] TASK [mysql : link_mysql] ******************************************************************************************************************************************************************* changed: [wyl02] changed: [wyl03] TASK [mysql : mkdir_log] ******************************************************************************************************************************************************************** changed: [wyl02] changed: [wyl03] TASK [mysql : touch_mysql.log] ************************************************************************************************************************************************************** changed: [wyl02] changed: [wyl03] TASK [mysql : copy_my.cnf] ****************************************************************************************************************************************************************** ok: [wyl03] ok: [wyl02] TASK [mysql : init_mysql] ******************************************************************************************************************************************************************* changed: [wyl03] changed: [wyl02] TASK [mysql : get_mysql_passwd] ************************************************************************************************************************************************************* changed: [wyl03] changed: [wyl02] TASK [mysql : dispaly_passwd] *************************************************************************************************************************************************************** ok: [wyl02] => { "msg": "tosEGBto+3xg" } ok: [wyl03] => { "msg": "&CUQdQ&Qb7S4" } TASK [mysql : copy_mysql.server] ************************************************************************************************************************************************************ ok: [wyl03] ok: [wyl02] TASK [mysql : add_mysql_systemd] ************************************************************************************************************************************************************ ok: [wyl03] ok: [wyl02] TASK [mysql : start_mysql_service] ********************************************************************************************************************************************************** changed: [wyl03] changed: [wyl02] TASK [mysql : alter_passwd] ***************************************************************************************************************************************************************** changed: [wyl03] changed: [wyl02] TASK [mysql : create_user] ****************************************************************************************************************************************************************** skipping: [wyl03] changed: [wyl02] TASK [mysql : change_slave_to_master1] ****************************************************************************************************************************************************** skipping: [wyl02] changed: [wyl03] TASK [mysql : start_slave1] ***************************************************************************************************************************************************************** ok: [wyl02] changed: [wyl03] TASK [mysql : change_slave_to_master2] ****************************************************************************************************************************************************** skipping: [wyl03] changed: [wyl02] TASK [mysql : start_slave2] ***************************************************************************************************************************************************************** changed: [wyl02] ok: [wyl03] PLAY RECAP ********************************************************************************************************************************************************************************** wyl02 : ok=20 changed=12 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 wyl03 : ok=19 changed=11 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 最后显示sql和i/o进程yes状态,看到两个yes状态表示安装成功 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d5bDk1Mjc_size_16_color_FFFFFF_t_70][] [20190730194840849.png]: /images/20211116/74765895c7ca4103a8eda6bd9a1e1628.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d5bDk1Mjc_size_16_color_FFFFFF_t_70]: /images/20211116/faf143327491459e9970ac7fdf5c3fc4.png
相关 k8s部署mysql集群(statefulset):主写从读、一主多从集群 安装nfs server和client端都执行 yum install nfs-utils rpcbind -y systemctl start n 本是古典 何须时尚/ 2023年10月05日 19:06/ 0 赞/ 11 阅读
相关 mysql 集群架构双主模式 1.打开my.cnf配置文件 vi /etc/my.cnf 2…my.cnf增加配置信息 log-bin=mysql-bin 打开logbin 并命名为m 谁借莪1个温暖的怀抱¢/ 2023年01月18日 09:25/ 0 赞/ 179 阅读
相关 docker 部署rockermq双主双从集群 1、pull rocketmq镜像 [root@rocketmq01 ~] docker pull styletang/rocketmq-console-ng:lat 不念不忘少年蓝@/ 2023年01月16日 06:50/ 0 赞/ 306 阅读
相关 MYSQL集群部署(二)--主备部署 补充(一) 重启虚拟机后和mysql之后,发现数据库登陆不上,报错如下: ![Image 1][]![SouthEast][] ![Ima Love The Way You Lie/ 2022年09月18日 14:58/ 0 赞/ 277 阅读
相关 mysql集群--双主双从 1、结构如下: ![20180211102911927][] 4台机器: master1:192.168.66.11 slave1: 192.168.66.1 喜欢ヅ旅行/ 2022年06月17日 12:30/ 0 赞/ 316 阅读
相关 MySQL双主模式集群部署 目录 1.机器环境 2.mysql双主模式搭建 2.1 解压缩包,创建软连接 2.2 修改配置文件 2.3 配置环境变量 2.4 初始化数据库(24,25机器都要初 我不是女神ヾ/ 2022年05月15日 03:23/ 0 赞/ 494 阅读
相关 RocketMQ——单主部署、一主一从部署、双主双从部署 一.RocketMQ单机部署 Hosts添加信息 我们首先进入/etc/hosts来添加信息 vim /etc/hosts 添加信息如下: ![ 阳光穿透心脏的1/2处/ 2022年02月15日 05:41/ 0 赞/ 682 阅读
相关 ansible-playbook一键部署mysql双主集群 前面的博客中,介绍过mysql的双主集群的搭建,那么ansible就是将之前的手动的操作过程转换成剧本的方式,然后执行剧本,就完成了mysql的双主集群的搭建,具体的搭建过程 怼烎@/ 2021年11月17日 11:38/ 0 赞/ 878 阅读
相关 mysql集群部署 (两主两从) mysql集群部署:两主两从(mysql-5.7.25) centos 7 1.安装mysql [安装步骤省略参考我的上一篇 (https 拼搏现实的明天。/ 2021年10月19日 04:12/ 0 赞/ 774 阅读