Ansible安装mysql

利用playbook安装mysql
下载mysql-5.6.49-linux-glibc2.12到ansible所在的服务器上 

https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.6/mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz

下载并移动到指定目录下


[root@myserver_1 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.6/mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
--2021-01-04 00:12:08--  https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.6/mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 343184888 (327M) [application/x-gzip]
Saving to: ‘mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz’

100%[===================================================>] 343,184,888 10.0MB/s   in 30s    

2021-01-04 00:12:39 (10.8 MB/s) - ‘mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz’ saved [343184888/343184888]

[root@myserver_1 ~]# ls -lrt
total 392360
-rw-r--r--  1 root root     28296 Jan 10  2018 percona-zabbix-templates-1.1.8-1.noarch.rpm
-rw-r--r--  1 root root  58546654 Aug 15  2019 grafana-6.3.3-1.x86_64.rpm
-rw-r--r--  1 root root 343184888 Jun  2  2020 mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
-rw-------. 1 root root      2246 Dec 23 22:08 anaconda-ks.cfg
-rw-r--r--. 1 root root      2277 Dec 23 22:11 initial-setup-ks.cfg
drwxr-xr-x  2 root root        70 Jan  3 23:28 ansible
[root@myserver_1 ansible]# mkdir -p /data/ansible/files
[root@myserver_1 ansible]# cd /data/ansible/files/
[root@myserver_1 files]# mv mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz  /data/ansible/files

 添加两个配置文件(mysql的配置文件设置)

[root@myserver_1 files]# vim my.cnf 
[mysqld]
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
log-bin
pid-file=/data/mysql/mysqld.pid
[client]
port=3306
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log

mysql安全加固设置

[root@myserver_1 files]# vim secure_mysql.sh
#!/bin/bash
/usr/local/mysql/bin/mysql_secure_installation <<EOF
y
test123
test123
y
y
y
y
EOF

目录结构如下

[root@myserver_1 files]# tree 
.
├── my.cnf
├── mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
└── secure_mysql.sh

0 directories, 3 files

 编辑安装mysql的yml文件

[root@myserver_1 files]# vim /root/ansible/install_mysql.yml

  - hosts: dbsrvs
    remote_user: root
    gather_facts: no
    tasks:
      - name: install packages
        yum: name=libaio,perl-Data-Dumper,perl-Getopt-Long
      - name: create mysql group
        group: name=mysql gid=306
      - name: create mysql user
        user: name=mysql uid=306 group=mysql shell=/sbin/nologin system=yes create_home=no home=/data/mysql
      - name: copy tar to remote host and file mode
        unarchive: src=/data/ansible/files/mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz dest=/usr/local/ owner=root group=root
      - name: create linkfile  /usr/local/mysql
        file: src=/usr/local/mysql-5.6.46-linux-glibc2.12-x86_64 dest=/usr/local/mysql state=link
      - name: data dir
        shell: chdir=/usr/local/mysql/  ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
        tags: data
      - name: config my.cnf
        copy: src=/data/ansible/files/my.cnf  dest=/etc/my.cnf
      - name: service script
        shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
      - name: enable service
        shell: /etc/init.d/mysqld start;chkconfig --add mysqld;chkconfig mysqld on
        tags: service
      - name: PATH variable
        copy: content='PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh
      - name: secure script
        script: /data/ansible/files/secure_mysql.sh
        tags: script

检测语法的正确性(会有报错,因为检测语句不会执行解压,会报mysql的解压后的那个路径存在的问题 可忽略)

[root@myserver_1 ansible]# ansible-playbook -C install_mysql.yml 

 执行playbook结果如下(有报错信息)

[root@myserver_1 ansible]# ansible-playbook  install_mysql.yml 

PLAY [dbservers] ********************************************************************************************************************************************

TASK [install packages] *************************************************************************************************************************************
ok: [192.168.1.40]

TASK [create mysql group] ***********************************************************************************************************************************
ok: [192.168.1.40]

TASK [create mysql user] ************************************************************************************************************************************
ok: [192.168.1.40]

TASK [copy tar to remote host and file mode] ****************************************************************************************************************
ok: [192.168.1.40]

TASK [create linkfile  /usr/local/mysql] ********************************************************************************************************************
ok: [192.168.1.40]

TASK [data dir] *********************************************************************************************************************************************
fatal: [192.168.1.40]: FAILED! => {"changed": true, "cmd": "./scripts/mysql_install_db  --datadir=/data/mysql  --user=mysql", "delta": "0:00:00.030984", "end": "2021-01-04 01:13:43.883524", "msg": "non-zero return code", "rc": 1, "start": "2021-01-04 01:13:43.852540", "stderr": "", "stderr_lines": [], "stdout": "FATAL ERROR: The parent directory for the data directory '/data/mysql' does not exist.\nIf that path was really intended, please create that directory path and then\nrestart this script.\nIf some other path was intended, please use the correct path when restarting this script.", "stdout_lines": ["FATAL ERROR: The parent directory for the data directory '/data/mysql' does not exist.", "If that path was really intended, please create that directory path and then", "restart this script.", "If some other path was intended, please use the correct path when restarting this script."]}

PLAY RECAP **************************************************************************************************************************************************
192.168.1.40               : ok=5    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

 根据报错信息提示远程主机目录(/data)不存在,创建即可

执行结果验证如下

[root@myserver_1 ansible]# ansible-playbook  install_mysql.yml 

PLAY [dbservers] ********************************************************************************************************************************************

TASK [install packages] *************************************************************************************************************************************
ok: [192.168.1.40]

TASK [create mysql group] ***********************************************************************************************************************************
ok: [192.168.1.40]

TASK [create mysql user] ************************************************************************************************************************************
ok: [192.168.1.40]

TASK [copy tar to remote host and file mode] ****************************************************************************************************************
ok: [192.168.1.40]

TASK [create linkfile  /usr/local/mysql] ********************************************************************************************************************
ok: [192.168.1.40]

TASK [data dir] *********************************************************************************************************************************************
changed: [192.168.1.40]

TASK [config my.cnf] ****************************************************************************************************************************************
changed: [192.168.1.40]

TASK [service script] ***************************************************************************************************************************************
changed: [192.168.1.40]

TASK [enable service] ***************************************************************************************************************************************
changed: [192.168.1.40]

TASK [PATH variable] ****************************************************************************************************************************************
changed: [192.168.1.40]

TASK [secure script] ****************************************************************************************************************************************
changed: [192.168.1.40]

PLAY RECAP **************************************************************************************************************************************************
192.168.1.40               : ok=11   changed=6    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

验证mysql是否在远程主机上安装成功

[root@myserver_3 ~]# mysql -uroot -ptest123
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.6.49-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql> select version();
+------------+
| version()  |
+------------+
| 5.6.49-log |
+------------+
1 row in set (0.00 sec)

mysql> 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值