使用python搭建Linux-mariadb主从架构

环境准备两台:

192.168.193.90 master

192.168.193.91 slave

需要Linux装python环境:

https://www.cnblogs.com/kingzhe/p/11124527.html

在做主从时,要保证两个数据库的信息一致

[[email protected] ~]# mysql_secure_installation

[[email protected] ~]# mysql_secure_installation

master

import configparser
import os
def config_mariadb_yum():
    exists = os.path.exists(‘/etc/yum.repos.d/mariadb.repo‘)
    if exists:
        print(‘mariadb.repo exist‘)
        yum_install_mariadb()
    else:
        config = configparser.ConfigParser()
        config.read(‘/etc/yum.repos.d/mariadb.repo‘, encoding=‘utf-8‘)
        config.add_section(‘mariadb‘)
        config.set(‘mariadb‘, ‘name‘, ‘MariaDB‘)
        config.set(‘mariadb‘, ‘baseurl‘, ‘http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/‘)
        config.set(‘mariadb‘, ‘gpgkey‘, ‘http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB‘)
        config.set(‘mariadb‘, ‘gpgcheck‘, ‘1‘)
        config.write(open("/etc/yum.repos.d/mariadb.repo", "w"))
        yum_install_mariadb()

def yum_install_mariadb():
        res1 = os.system(‘yum install MariaDB -y > /dev/null 2&>1‘)
        if res1 == 0:
            config = configparser.ConfigParser()
            config.read(‘/etc/my.cnf.d/server.cnf‘, encoding=‘utf-8‘)
            config.set(‘server‘,‘server_id‘,‘1‘)
            config.set(‘server‘,‘log-bin‘,‘mysql-bin‘)
            config.write(open("/etc/my.cnf.d/server.cnf", "w"))
            res2 = os.system(‘service mariadb restart‘)
            if res2 == 0:
                os.system(‘‘‘mysql -uroot -proot -e "grant replication slave on *.* to ‘slave‘@‘%‘ identified by ‘slave‘"‘‘‘)
                os.system("mysql -uroot -proot -e ‘show master status‘")

def main():
    config_mariadb_yum()
if __name__ == ‘__main__‘:
    main()

slave

import configparser
import os
master_ip = input(‘master_ip:‘).strip()
log_file = input(‘log_file:‘).strip()
pos = input(‘pos:‘).strip()
def config_mariadb_yum():
    exists = os.path.exists(‘/etc/yum.repos.d/mariadb.repo‘)
    if exists:
        print(‘mariadb.repo exist‘)
        yum_install_mariadb()
    else:
        config = configparser.ConfigParser()
        config.read(‘/etc/yum.repos.d/mariadb.repo‘, encoding=‘utf-8‘)
        config.add_section(‘mariadb‘)
        config.set(‘mariadb‘, ‘name‘, ‘MariaDB‘)
        config.set(‘mariadb‘, ‘baseurl‘, ‘http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/‘)
        config.set(‘mariadb‘, ‘gpgkey‘, ‘http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB‘)
        config.set(‘mariadb‘, ‘gpgcheck‘, ‘1‘)
        config.write(open("/etc/yum.repos.d/mariadb.repo", "w"))
        yum_install_mariadb()

def yum_install_mariadb():
        res1 = os.system(‘yum install MariaDB -y > /dev/null 2&>1‘)
        if res1 == 0:
            config = configparser.ConfigParser()
            config.read(‘/etc/my.cnf.d/server.cnf‘, encoding=‘utf-8‘)
            config.set(‘server‘,‘server_id‘,‘2‘)
            config.write(open("/etc/my.cnf.d/server.cnf", "w"))
            res2 = os.system(‘service mariadb restart‘)
            if res2 == 0:
                os.system(‘‘‘mysql -uroot -proot -e "CHANGE MASTER TO MASTER_HOST=‘%s‘, MASTER_USER=‘slave‘, MASTER_PASSWORD=‘slave‘, MASTER_LOG_FILE=‘%s‘, MASTER_LOG_POS=%s"‘‘‘ % (master_ip,log_file,pos))
                os.system("mysql -uroot -proot -e ‘start slave;‘")

def main():
    config_mariadb_yum()
if __name__ == ‘__main__‘:
    main()

在pycharm写入 rz上传

[[email protected] ~]# python3 1.py

[[email protected] ~]# python3 1.py
mariadb.repo hhh
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |      530 |              |                  |
+------------------+----------+--------------+------------------+

master成功

在运行是遇到的报错

[[email protected] ~]# python 1.py
Traceback (most recent call last):
  File "1.py", line 1, in <module>
    import configparser
ImportError: No module named configparser   #这条报错是没有configparser模块
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# pip install configparser    #下载模块
Collecting configparser
  Downloading https://files.pythonhosted.org/packages/ba/05/6c96328e92e625fc31445d24d75a2c92ef9ba34fc5b037fe69693c362a0d/configparser-3.7.4-py2.py3-none-any.whl
Installing collected packages: configparser
Successfully installed configparser-3.7.4    #下载成功

rz上传slave节点

[[email protected] ~]# python3 2.py

[[email protected] ~]# python3 2.py
master_ip:192.168.193.90
log_file:mysql-bin.000006
pos:530
Redirecting to /bin/systemctl restart  mariadb.service

这样就完成了主从架构

原文地址:https://www.cnblogs.com/kingzhe/p/11125472.html

时间: 2024-09-30 11:49:30

使用python搭建Linux-mariadb主从架构的相关文章

使用Innobackupex快速搭建(修复)MySQL主从架构

MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一.但对于较大的数据库则该方式并非理想的选择.使用Xtrabackup可以快速轻松的构建或修复mysql主从架构.本文描述了使用innobackupex快速来搭建或修复主从架构.供大家参考. 1.基于主库做一个完整备份 # mkdir -p /log/bakforslave # innobackupex --user=root -password=*** --socket=/tmp/mysql.sock --def

python部署mariadb主从架构

主机部署: import configparser import os def config_mariadb_yum(): exists = os.path.exists('/etc/yum.repos.d/mariadb.repo') if exists: print('mariadb.repo文件已经存在') yum_install_mariadb() else: config = configparser.ConfigParser() config.read('/etc/yum.repos

使用python3脚本部署mariadb主从架构

环境准备 一个脚本自动部署master服务 另一个部署slave服务 关闭主从节点的防火墙 以及事先设置好root远程登陆的权限. master import paramikossh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname='192.168.253.180',port=22,username='root',password='369369yn

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

使用innobackupex基于从库搭建mysql主从架构

?? MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一.但对于较大的数据库则该方式并非理想的选择.使用Xtrabackup可以快速轻松的构建或修复mysql主从架构.本文描述了基于现有的从库来快速搭建主从,即作为原主库的一个新从库.该方式的好处是对主库无需备份期间导致的相关性能压力.搭建过程中使用了快速流备份方式来加速主从构建以及描述了加速流式备份的几个参数,供大家参考. 有关流式备份可以参考:Xtrabackup 流备份与恢复 1.备份从库###远程备份期间

架构师成长之路6.4 DNS服务器搭建(部署主从DNS)

点击返回架构师成长之路 架构师成长之路6.3 DNS服务器搭建(部署主从DNS)  部署主DNS : 点击 部署从DNS : 如下步骤 1.与主DNS一样,安装bind yum -y install bind-utils bind bind-devel bind-chroot bind-libs 2.与主DNS一样,编辑/etc/named.conf options { version "1.1.1"; listen-on port 53 {any;}; #表示使用53端口 direc

【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构 一、业务发展驱动数据发展

一.业务发展驱动数据发展 随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长.特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成数据访问服务的失效,从而导致网站的业务中断,给公司和用户造成双重损失.那么,有木有一种方案能够解决此问题,使得数据库不再因为负载压力过高而成为网站的瓶颈呢?答案肯定是有的. 目前,大部分的主流关系型数据库都提供了主从热备功能,通过配置

mysql/mariadb主从复制架构配置及过程中出现的问题

两台CentOS7系虚拟主机:分别是:主服务器172.16.75.1,从服务器172.16.75.2使用的是mariadb-5.5.56,即centOS自带的软件版本为了使实验结果显示精准,此处关闭两台服务器的防火墙和SELinux:[[email protected] ~]# setenforce 0[[email protected] ~]# iptables -F 一.首先在主服务器172.16.75.1上配置:在/etc/my.cnf中配置如下:[mysqld]###定义二进制日志的存放

如何搭建高可用redis架构?

1 题记 Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API. 如今,互联网业务的数据正以更快的速度在增长,数据类型越来越丰富,这对数据处理的速度和能力提出了更高要求.Redis 是一种开源的内存非关系型数据库,给开发人员带来的体验是颠覆性的.在自始至终的设计过程中,都充分考虑高性能,这使得 Redis 成为当今速度最快的 NoSQL 数据库. 考虑高性能的同时,高可用也是很重要的考虑因素.互联网 7