热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

07saltstack生产实例mysql主从

1、服务部署2.服务部署抽象:功能模块redis安装、配置、启动mysql安装、配置(my.cnf可以统一目录默认配置可以统一)maste

1、服务部署

2.服务部署抽象:功能模块redis 安装、配置、启动mysql 安装、配置(my.cnf可以统一 目录默认配置可以统一)master: server_id 1111slave: server_id 22221.redis 主从 (已经实现)2.mysql 主从 2.1 mysql-install.sls 安装 配置 初始化 2.2 my.cnf配置不同-server id2.3 创建主从同步用户2.4 master上获取binlog 和 pos值2.5 slave上,change master && start slave2.6 检查主从状态GRANT replication slave on 3.apache+php4.haproxy+keepalived

2、redis(已经完成)

https://www.cnblogs.com/venicid/p/11276232.html#_label7_0

3、mysql安装,配置

1、目录结构

module模块

按类型分:

按业务分

Module 模块里面有 mysql  redis

统一的的全部放在这里,比如安装,配置

redis 安装配置.sls

[root@# localhost /srv/salt/prod/modules]# cat redis/init.sls
redis
-install:pkg.installed:- name: redisredis-config:file.managed:- name: /etc/redis.conf- source: salt://redis/files/redis.conf- user: root- group: root- mode: 644- template: jinja- defaults:PORT: 6379IPADDR: {{ grains['fqdn_ip4'][0] }}redis-service:service.running:- name: redis- enable: True- reload: True- watch:- file: redis-config

View Code

2、mysql 安装,配置.sls

[root@# localhost /srv/salt/prod/modules/mysql]# cat install.sls
mysql
-install:pkg.installed:- pkgs:- mariadb- mariadb-servermysql-config:file.managed:- name: /etc/my.cnf- source: salt://modules/mysql/files/my.cnf- user: root- group: root- mode: 644

 

4、主从配置

1、目录结构

2、主从配置.sls

[root@# localhost /srv/salt/prod/modules/mysql]# cat master.sls
include:
- modules.mysql.installmaster-config:file.managed:- name: /etc/my.cnf.d/mariadb-server.cnf- source: salt://modules/mysql/files/mariadb-server-master.cnf- user: root- group: root- mode: 644master-service:service.running:- name: mariadb- enable: True

 

[root@# localhost /srv/salt/prod/modules/mysql]# cat slave.sls
include:
- modules.mysql.installslave-config:file.managed:- name: /etc/my.cnf.d/mariadb-slave.cnf- source: salt://modules/mysql/files/mariadb-server-slave.cnf- user: root- group: root- mode: 644slave-service:service.running:- name: mariadb- enable: True

3、file配置文件

[root@# localhost /srv/salt/prod/modules/mysql]# cp /etc/my.cnf.d/server.cnf files/mariadb-server-master.cnf
[root@# localhost
/srv/salt/prod/modules/mysql]# cp /etc/my.cnf.d/server.cnf files/mariadb-server-slave.cnf

 

[root@# localhost /srv/salt/prod/modules/mysql/files]# vim mariadb-server-master.cnf
[root@# localhost
/srv/salt/prod/modules/mysql/files]# vim mariadb-server-slave.cn

 

  

 

[root@# localhost ~]# salt 'linux-node1*' state.sls modules.mysql.master saltenv=prod
[root@# localhost
~]# salt 'linux-node2*' state.sls modules.mysql.slave saltenv=prod

 

 

 

 

5、主从同步用户,授权

赵班长:https://github.com/unixhot/salt-openstack/tree/master/states/openstack-mitaka/mysql

https://www.unixhot.com/page/ops 

官方文档 http://docs.saltstack.cn/ref/states/all/salt.states.mysql_user.html

 

完成这个命令: grant replication slave on *.* to 'xxx'@'xxxxx.%' identified by 'xxxxx';

必须启动mysql, 从0构建mysql

1、方式1:mysql授权

master.sls

[root@# localhost /srv/salt/prod/modules/mysql]# cat master.sls
include:
- modules.mysql.installmaster-config:file.managed:- name: /etc/my.cnf.d/mariadb-server.cnf- source: salt://modules/mysql/files/mariadb-server-master.cnf- user: root- group: root- mode: 644master-service:service.running:- name: mariadb- enable: Truerepl-user: ## 创建用户mysql_user.present:- name: repl_user- host: 192.168.194.0/255.255.255.0- password: repl_usergrant-user: ##授权mysql_grants.present:- grant: replication slave- database: '*.*'- user: repl_user- host: 192.168.194.0/255.255.255.0

 

slave.sls  不变

[root@# localhost /srv/salt/prod/modules/mysql]# cat slave.sls
include:
- modules.mysql.installslave-config:file.managed:- name: /etc/my.cnf.d/mariadb-slave.cnf- source: salt://modules/mysql/files/mariadb-server-slave.cnf- user: root- group: root- mode: 644slave-service:service.running:- name: mariadb- enable: True
[root@# localhost
/srv/salt/prod/modules/mysql]#

 

测试下

[root@# localhost ~]# salt '*' state.sls modules.mysql.master saltenv=prod

 

Question:执行时出错
Comment: MySQL Error 1142: SELECT command denied to user 'salt'@'linux-node1' for table 'user'

###解决办法:断开minion连接MySQL

[root@# localhost ~]# systemctl restart salt-minion

2、方式2:cmd方式授权

[root@# localhost /srv/salt/prod/modules/mysql]# cat master.sls
include:
- modules.mysql.installmaster-config:file.managed:- name: /etc/my.cnf.d/mariadb-server.cnf- source: salt://modules/mysql/files/mariadb-server-master.cnf- user: root- group: root- mode: 644master-service:service.running:- name: mariadb- enable: Truemaster-grant:cmd.run:- name: mysql -e "GRANT replication slave,super on *.* to 'repl_user'@'192.168.194.0/255.255.255.0' identified by 'repl_user@pass'"- unless: mysql -h 192.168.194.131 -u repl_user -prepl_user@pass -e "exit"

[root@# localhost ~]# salt '*' state.sls modules.mysql.master saltenv=prod

3、方式3:脚本  ---按业务来分  (有时候错误,用前两方式)

基础和业务分开

资源

业务:业务使用了资源

 

手动执行,安装mysql

[root@# localhost ~]# salt '*' state.sls modules.mysql.master saltenv=prod

(1)目录结构

(2)master,slave.sls还原

[root@# localhost /srv/salt/prod/modules/mysql]# cat master.sls
include:
- modules.mysql.installmaster-config:file.managed:- name: /etc/my.cnf.d/mariadb-server.cnf- source: salt://modules/mysql/files/mariadb-server-master.cnf- user: root- group: root- mode: 644master-service:service.running:- name: mariadb- enable: True[root@# localhost /srv/salt/prod/modules/mysql]# cat slave.sls
include:
- modules.mysql.installslave-config:file.managed:- name: /etc/my.cnf.d/mariadb-slave.cnf- source: salt://modules/mysql/files/mariadb-server-slave.cnf- user: root- group: root- mode: 644slave-service:service.running:- name: mariadb- enable: True

 

 (3)脚本文件

[root@# localhost /srv/salt/prod/shop-user/files]# cat start_slave.sh
#
!/bin/bash
for i in `seq 1 10`;domysql -h 192.168.194.131 -u repl_user -prepl_user@pass -e "exit"if [ $? -eq 0 ];thenPOS=$(mysql -h 192.168.194.131 -u repl_user -prepl_user@pass -e "show master status" | awk -F '|' 'NR==2 {print $1}' | awk '{print $2}')mysql -e "change master to master_host='192.168.194.131', master_user='repl_user', master_password='repl_user@pass', master_log_file='mysqlbin.000001'
, master_log_pos=$POS; start slave;"
touch /etc/my.cnf.d/slave.lockexit;elsesleep 60;fi
done

 

测试脚本

(4)业务与资源分开,配置文件

[root@# localhost /srv/salt/prod/shop-user]# cat mysql-master.sls
include:
- modules.mysql.mastermaster-grant:cmd.run:- name: mysql -e "GRANT replication slave,super on *.* to 'repl_user'@'118.190.201.0/255.255.255.0' identified by 'repl_user@pass'"- unless: mysql -h 192.168.194.131 -ur repl_user -prepl_user@pass -e "exit"

 

[root@# localhost /srv/salt/prod/shop-user]# cat mysql-slave.sls
include:
- modules.mysql.slaveslave-grant:file.managed:- name: /tmp/start_slave.sh- source: salt://shop-user/files/start_slave.sh- user: root- group: root- mode: 755cmd.run:- name: /bin/bash /tmp/start_slave.sh- unless: test -f /etc/my.cnf.d/slave.lock

 

(5) top.sls

[root@# localhost /srv/salt/base]#
[root@# localhost
/srv/salt/base]# cat top.sls
base:'*':- init.init-allprod:'linux-node1.example.com':- shop-user.mysql-master'linux-node2.example.com':- shop-user.mysql-slave

 

(6)清空数据库

[root@# localhost ~]# cd /var/lib/mysql/
[root@# localhost
/var/lib/mysql]# rm -rf *
[root@# localhost
/var/lib/mysql]# yum remove mariadb-server

 

 

(7)执行测试

个人建议:

Mysql 不放在 topfile

每次手动执行

[root@# localhost ~]# salt '*' state.sls modules.mysql.master saltenv=prod

Salt管理: 自动化安装,自动化配置

Prod整个目录  mysql  redis

 

执行top.file

[root@# localhost ~]# salt '*' state.highstatelinux-node2.example.com:
----------
.......省略部分.......
Summary
------------
Succeeded:
6 (changed=1)
Failed:
0
------------
Total states run:
6
linux
-node1.example.com:
----------
.......省略部分.......
Summary
------------
Succeeded:
6 (changed=1)
Failed:
0
------------
Total states run:
6

6、总结与问题

 1、问题

Question1

linuxyum安装时出现Loaded plugins: fastestmirror解决办法

https://blog.51cto.com/12922638/2412602 

网络问题,dhcp

 

Question2

 

Centos 7

https://www.linuxidc.com/Linux/2018-03/151403.htm 

vi /etc/my.cnf.d/server.cnf

 

Question3

授权失败

 

 

Salt用户没有权限

 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'salt'@'%' IDENTIFIED BY PASSWORD '*36F75ABC6D500DFA6E905046FD8BE5E115812DD0' WITH GRANT OPTION;

Query OK, 0 rows affected (0.04 sec)

 

MariaDB [(none)]> show grants for salt@'%'\G;

 

###执行时出错

Comment: MySQL Error 1142: SELECT command denied to user 'salt'@'linux-node1' for table 'user'###解决办法:断开minion连接MySQL

[root@linux-node1 ~]# vim /etc/salt/minion

#mysql.host: '118.190.201.11'

#mysql.user: 'salt'

#mysql.pass: 'salt'

#mysql.db: 'salt'

 2、心得

架构师:道法术

思路达到了运维架构的标准上

 

转:https://www.cnblogs.com/venicid/p/11475192.html



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
author-avatar
mobiledu2502860057
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有