galery.py文件内容

import pexpect
import os
import configparser HOSTNAME_DB1='db1'
HOSTNAME_DB2='db2'
HOSTNAME_DB3='db3' DB1 = '192.168.254.30'
DB2 = '192.168.254.31'
DB3 = '192.168.254.39'
PORT = 22
USERNAME = 'root'
PASSWORD = 'root'
#DB1
config = configparser.ConfigParser()
config.read("/etc/my.cnf.d/server.cnf", encoding="utf-8")
config.set('galera','wsrep_on','ON')
config.set('galera','wsrep_provider','/usr/lib64/galera/libgalera_smm.so')
config.set('galera','wsrep_cluster_address','"gcomm://%s,%s,%s"' % (DB1, DB2, DB3))
config.set('galera','wsrep_node_name','%s' % HOSTNAME_DB1 )
config.set('galera','wsrep_node_address','%s' % DB1)
config.set('galera','binlog_format','row')
config.set('galera','default_storage_engine','InnoDB')
config.set('galera','innodb_autoinc_lock_mode','2')
config.set('galera','wsrep_slave_threads','1')
config.set('galera','innodb_flush_log_at_trx_commit','1')
config.set('galera','innodb_buffer_pool_size','120M')
config.set('galera','wsrep_sst_method','rsync')
config.set('galera','wsrep_causal_reads','ON')
config.write(open('/etc/my.cnf.d/server.cnf','w'))
res = os.system('galera_new_cluster &>/dev/null')
if res == 0:
#cp server.cnf
child1 = pexpect.spawn('scp /etc/my.cnf.d/server.cnf %s@%s:/etc/my.cnf.d/server.cnf' % (USERNAME,DB2)
)
child1.expect('password:')
child1.sendline(PASSWORD)
child1.interact()
child1.close() child3 = pexpect.spawn('scp /etc/my.cnf.d/server.cnf %s@%s:/etc/my.cnf.d/server.cnf' % (USERNAME,DB3)
)
child3.expect('password:')
child3.sendline(PASSWORD)
child3.interact()
child3.close()
#connect DB2
child3 = pexpect.spawn('ssh %s@%s' % (USERNAME, DB2))
child3.expect('password:')
child3.sendline('root')
child3.expect('#')
child3.sendline('sed -i "s/wsrep_node_name = db1/wsrep_node_name = db2/g" /etc/my.cnf.d/server.cnf;se
d -i "s/wsrep_node_address = 192.168.254.30/wsrep_node_address = 192.168.254.31/g" /etc/my.cnf.d/server.c
nf')
child3.expect('#')
child3.sendline('systemctl restart mariadb > /dev/null')
child3.sendline('exit')
child3.interact()
child3.close() #connect DB3
child4 = pexpect.spawn('ssh %s@%s' % (USERNAME, DB3))
child4.expect('password:')
child4.sendline('root')
child4.expect('#')
child4.sendline('sed -i "s/wsrep_node_name = db1/wsrep_node_name = db3/g" /etc/my.cnf.d/server.cnf;se
d -i "s/wsrep_node_address = 192.168.254.30/wsrep_node_address = 192.168.254.39/g" /etc/my.cnf.d/server.c
nf')
child4.expect('#')
child4.sendline('systemctl restart mariadb > /dev/null')
child4.sendline('exit')
child4.interact()
child4.close()
print('galera集群配置完成')
else:
print('galera服务启动故障')

server_db2.conf

[server]

[mysqld]

[galera]
wsrep_on = ON
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://192.168.254.30,192.168.254.31,192.168.254.39"
wsrep_node_name = db2
wsrep_node_address = 192.168.254.31
binlog_format = row
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
wsrep_slave_threads = 1
innodb_flush_log_at_trx_commit = 1
innodb_buffer_pool_size = 120M
wsrep_sst_method = rsync
wsrep_causal_reads = ON [embedded] [mariadb] [mariadb-10.3]

python部署galery集群的更多相关文章

  1. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  2. python脚本实现集群检测和管理

    python脚本实现集群检测和管理 场景是这样的:一个生产机房,会有很多的测试机器和生产机器(也就是30台左右吧),由于管理较为混乱导致了哪台机器有人用.哪台机器没人用都不清楚,从而产生了一个想法-- ...

  3. supervisor的安装部署及集群管理

    supervisor的安装部署及集群管理 supervisor官网:http://www.supervisord.org/ 参考链接: http://blog.csdn.net/xyang81/art ...

  4. 部署TiDB集群

    架构图 节点规划 120.52.146.213 Control Machine 120.52.146.214 PD1_TiDB1 120.52.146.215 PD2_TiDB2 120.52.146 ...

  5. [自动化]基于kolla-ceph的自动化部署ceph集群

    kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...

  6. ceph-deploy离线部署ceph集群及报错解决FAQ

    ceph-deploy部署ceph集群 环境介绍 主机名 ip地址 操作系统 角色 备注 ceph-node1 10.153.204.13 Centos7.6 mon.osd.mds.mgr.rgw. ...

  7. [自动化]基于kolla的自动化部署ceph集群

    kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...

  8. 4. 利用MySQL Shell安装部署MGR集群 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 安装准备 2. 利用MySQL Shell构建MGR集群 3. MySQL Shell接管现存的MGR集群 4 ...

  9. 在 Kubernetes 中部署 Redis 集群

    在 Kubernetes 中部署 Redis 集群 在Kubernetes中部署Redis集群面临挑战,因为每个 Redis 实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色.为此,我们需 ...

随机推荐

  1. IO通信模型(三)多路复用IO

    多路复用IO 从非阻塞同步IO的介绍中可以发现,为每一个接入创建一个线程在请求很多的情况下不那么适用了,因为这会渐渐耗尽服务器的资源,人们也都意识到了这个 问题,因此终于有人发明了IO多路复用.最大的 ...

  2. Flask的请求处理机制

    在Flask的官方文档中是这样介绍Flask的: 对于Web应用,与客户端发送给服务器的数据交互至关重要.在Flask中由全局的request对象来提供这些信息 属性介绍 request.method ...

  3. 研发团队如何写好API接口文档

    导读 背景 痛点在哪? 为什么要写接口文档? API规范 接口工具 总结 背景        随着业务的发展,支撑组的项目也是越来越多.同时,从整个支撑组项目架构体系(含运维和运营体系),我们对系统业 ...

  4. C# 爬虫----Cookies处理(Set-Cookie)

    /// <summary> /// Cookie 助手 /// </summary> public class CookieHelper { /// <summary&g ...

  5. Android开发——Drawable与Bitmap知识

    从资源中获得drawable Drawable drawable = getResources().getDrawable(R.drawable.xxx); drawable转换bitmapdrawb ...

  6. 面试题之(vue生命周期)

    在面试的时候,vue生命周期被考察的很频繁. 什么是vue生命周期呢? Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这 ...

  7. 都2019年了,还问GET和POST的区别

    摘要: 对比GET与POST. 原文:都9102年了,还问GET和POST的区别 作者:程淇铭 Fundebug经授权转载,版权归原作者所有. 1. 前言 最近看了一些同学的面经,发现无论什么技术岗位 ...

  8. 使用 CODING 进行 Spring Boot 项目的集成

    本文作者:CODING 用户 - 高文 持续集成 (Continuous integration) 是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可 ...

  9. Android的WebView调试工具(无需Fan墙,可同时调试多个设备,永不过期)

    缘起 前端开发离不开Chrome的开发者工具,尤其是调试Android WebView时.然而,如果使用chrome://Inspect的方法,国内的开发者会惊奇地发现“空白啊”!为此,我发布过这个离 ...

  10. 详解 OneAlert 排班可以帮你做什么

    排班的存在,实质是通过有序安排,降低企业/团队人力成本,提升工作效率. 阅读导航(预计2min)   1. 详解排班功能 轮班机制 工作时间 双视图展示 灵活调整 2. 利用排班如何助力运维团队 排班 ...