MySQL 此例简单介绍基于docker的mysql安装与双主互备
来源:互联网 发布:能在mac上玩的网游 编辑:程序博客网 时间:2024/06/05 08:57
拓展连接
一 安装:
1 获取mysql镜像
docker pull mysql
2 。写配置文件my.cnf
[mysqld]log-bin=mysql-binserver-id=1port=3306innodb_buffer_pool_size=4G
3 启动容器
mysql -p 3306:3306 -e MYSQL_USER=root -e MYSQL_ROOT_PASSWORD=password -v /showcase/mysql/my.cnf:/etc/my.cnf --restart=always -d mysql:latest
二 双主互备
1 双主互备设置脚本mysql_master.py
# coding=utf-8__author__ = 'Bridge'import MySQLdbimport sys# 数据库连接def connection(settings): connect = MySQLdb.Connection(settings["host"], settings["user"], settings["passwd"], 'information_schema', settings["port"]) return connect.cursor()# 主备设置def set_slave(master, slave): master_conn = connection(master) master_conn.execute("GRANT REPLICATION SLAVE ON *.* to 'slave_user'@'%' identified by 'copy'") master_conn.execute("show master status") m_obj = master_conn.fetchone() slave_conn = connection(slave) slave_conn.execute("show slave status") s_obj = slave_conn.fetchone() print m_obj print s_obj if None == s_obj or m_obj[1] != s_obj[6] or m_obj[0] != s_obj[5] or "No" == s_obj[10] or "No" == s_obj[11]: slave_conn.execute("stop slave") sql = "CHANGE MASTER TO MASTER_LOG_FILE='" + str(m_obj[0]) + "',MASTER_LOG_POS=" + str(m_obj[1]) sql += ",MASTER_HOST='" + master["host"] + "',MASTER_USER='slave_user',MASTER_PASSWORD='copy'" slave_conn.execute(sql) slave_conn.execute("start slave") master_conn.close slave_conn.close## python mysql_master.py root:password@*.*.*.*:3306 root:password@*.*.*.*:3306master_arg = sys.argv[1]slave_arg = sys.argv[2]# 执行if "" != master_arg and "" != slave_arg: # user:password@ip:port master_settings = {'host': master_arg[master_arg.rfind("@") + 1:master_arg.rfind(":")], 'port': int(master_arg[master_arg.rfind(":") + 1:]), 'user': master_arg[0:master_arg.find(":")], 'passwd': master_arg[master_arg.find(":") + 1:master_arg.rfind("@")]} slave_settings = {'host': slave_arg[slave_arg.rfind("@") + 1:slave_arg.rfind(":")], 'port': int(slave_arg[slave_arg.rfind(":") + 1:]), 'user': slave_arg[0:slave_arg.find(":")], 'passwd': slave_arg[slave_arg.find(":") + 1:slave_arg.rfind("@")]} # # 主主互备 set_slave(master_settings, slave_settings) set_slave(slave_settings, master_settings)
2 仅在一个主上执行两次python脚本
python mysql_master.py root:password@*.*.*.*:3306 root:password@*.*.*.*:3306
三 主从
1 主从设置脚本mysql_master.py
# coding=utf-8__author__ = 'Bridge'import MySQLdbimport sys# 数据库连接def connection(settings): connect = MySQLdb.Connection(settings["host"], settings["user"], settings["passwd"], 'information_schema', settings["port"]) return connect.cursor()# 主备设置def set_slave(master, slave): master_conn = connection(master) master_conn.execute("GRANT REPLICATION SLAVE ON *.* to 'slave_user'@'%' identified by 'copy'") master_conn.execute("show master status") m_obj = master_conn.fetchone() slave_conn = connection(slave) slave_conn.execute("show slave status") s_obj = slave_conn.fetchone() print m_obj print s_obj if None == s_obj or m_obj[1] != s_obj[6] or m_obj[0] != s_obj[5] or "No" == s_obj[10] or "No" == s_obj[11]: slave_conn.execute("stop slave") sql = "CHANGE MASTER TO MASTER_LOG_FILE='" + str(m_obj[0]) + "',MASTER_LOG_POS=" + str(m_obj[1]) sql += ",MASTER_HOST='" + master["host"] + "',MASTER_USER='slave_user',MASTER_PASSWORD='copy'" slave_conn.execute(sql) slave_conn.execute("start slave") master_conn.close slave_conn.closemaster_arg = sys.argv[1]slave_arg = sys.argv[2]# 执行if "" != master_arg and "" != slave_arg: # user:password@ip:port master_settings = {'host': master_arg[master_arg.rfind("@") + 1:master_arg.rfind(":")], 'port': int(master_arg[master_arg.rfind(":") + 1:]), 'user': master_arg[0:master_arg.find(":")], 'passwd': master_arg[master_arg.find(":") + 1:master_arg.rfind("@")]} slave_settings = {'host': slave_arg[slave_arg.rfind("@") + 1:slave_arg.rfind(":")], 'port': int(slave_arg[slave_arg.rfind(":") + 1:]), 'user': slave_arg[0:slave_arg.find(":")], 'passwd': slave_arg[slave_arg.find(":") + 1:slave_arg.rfind("@")]} # 设置主从 set_slave(master_settings, slave_settings)
2 在主上执行两次python脚本
python mysql_master.py root:password@*.*.*.*:3306 root:password@*.*.*.*:3306
0 0
- MySQL 此例简单介绍基于docker的mysql安装与双主互备
- Redis此例简单介绍基于docker的redis安装与集群搭建
- ZooKeeper此例简单介绍基于docker的zookeeper安装与集群搭建
- ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建
- ZooKeeper此例简单介绍基于docker的zookeeper安装与集群搭建
- Zabbix 此例简单介绍基于docker的zabbix-agent安装
- Docker此例简单介绍docker的安装、使用以及打包
- HAProxy此例简单介绍基于docker的HAProxy反代
- MySQL安装与介绍
- MySql与数据库的简单介绍
- Docker安装mysql 就这么简单
- 绿色版MySql安装简单介绍
- mysql-python中间件的介绍与安装
- 1、重识MySQL-MySQL的介绍与安装
- 【数据库】MySQL的安装与简单使用
- 001 MySQL的简单安装与配置
- Docker学习+基于Docker MySQL的主从复制
- Docker 的介绍 ,安装以及简单应用
- 正向代理与反向代理的区别
- 操作系统精髓与设计原理-线程、对称多处理(SMP)和微内核
- 通过github上的项目理解HashMap
- [Vue warn]: Cannot find element: #app
- PAT 1097. Deduplication on a Linked List (25)
- MySQL 此例简单介绍基于docker的mysql安装与双主互备
- spring boot 知识点整理
- CSS3 Animation
- Mybatis-Mapper.xml输入输出映射
- Java的基本概念-三大循环
- Android源码编译
- keepalived vrrp 协议介绍
- des加密解密源码 C# key值问题分析
- Filter过滤器 过滤请求