MySQL+Keepalived高可用

Categories: Mysql
一、结构 简介: 系统主要通过Keepalived+MySQL双主来实现MySQL-HA,我们必须保证两台MySQL数据库的数据完全一样,基本设计是两台MySQL互为主从关系,通过Keepalived配置虚拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台MySQL数据库,保证系统的高可用。 拓扑环境: OS: Red Hat Enterprise Linux Server release 7.1 (Maipo) MySQL version: 5.5.59-log MySQL Community Server (GPL) Keepalived version: keepalived-1.3.5-1.el7.x86_64 MySQL-Vip: 172.28.10.100 MySQL-Master1: 172.28.10.82 MySQL-Master2: 172.28.10.83 结构图: 二、 MySQL环境部署 修改MySQL配置文件 以下为master1数据库的my.cnf配置文件内容,目录为/etc/my.cnf,配置完成后重启数据库 [client] port = 3382 socket = /var/lib/mysql/mysql.sock [mysqld] port = 3382 socket = /var/lib/mysql/mysql.sock skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M log-bin=mysql-bin binlog_format=mixed # master2的server-id改为2 server-id = 1 # 要产生log的数据库 binlog-do-db=pms_db # 不产生log的数据库 binlog-ignore-db=mysql # 要复制的数据库 replicate-do-db=pms_db # 不复制的数据库 replicate-ignore-db=mysql log-bin=mysql-bin innodb_data_home_dir = /var/lib/mysql innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /var/lib/mysql innodb_buffer_pool_size = 16M innodb_additional_mem_pool_size = 2M innodb_log_file_size = 5M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout 将master1设置为master2的主服务器

Read More →

网络相关

Categories: Linux
arp -a 搜索同一网段机器 iptables -L -n -v 查看已添加的iptables规则 清空日志文件: cat /dev/null>/var/log/messages

cluster

Categories: Mysql
https://www.linuxidc.com/Linux/2016-07/133234.htm sestatus 防火墙 接下来就可以针对这个目录通过一些命令查看配置文件在哪了,如下 /usr/bin/mysql –verbose –help | grep -A 1 ‘Default options’

cdll windll oledll

Categories: Python
cdll windll oledll 它们的不同之处在于:动态链接库中的函数所遵守的函数调用方式(calling convention)以及返回方式有所不同。 cdll用于加载遵循cdecl调用约定的动态链接库,windll用于加载遵循stdcall调用约定的动态链接库,oledll与windll完全相同,只是会默认其载入的函数统一返回一个Windows HRESULT错误编码。

Decode HTML entities

Categories: Python
Python3.4+ import html print(html.unescape('£682m')) Python2.6-3.3 from html.parser import HTMLParser h = HTMLParser() print(h.unescape('£682m')) link

Python3自定义排序

Categories: Python
1. 笨方法,不推荐 a = ['星期一', '星期三', '星期二', '星期日'] c = {'星期一': 1, '星期二': 2, '星期三': 3, '星期四': 4, '星期五': 5, '星期六': 6, '星期日': 7} b = {} for i in a: b[i] = c[i] b = sorted(b.items(), key=lambda t: t[1]) # b = sorted(zip(b.values(), b.keys())) # 使用zip下面改为j[1] a = [] for j in b: day = j[0] a.append(day) print(a) 2. 自定义大小关系 python3中取消comparison function,使用key function,cmp_to_key帮助cmp过渡为key def compare_day(day1, day2): c = {'星期一': 1, '星期二': 2, '星期三': 3, '星期四': 4, '星期五': 5, '星期六': 6, '星期日': 7} value1 = c[day1] value2 = c[day2] if value1 > value2: return 1 if value1 < value2: return -1 return 0 a = ['星期一', '星期三', '星期二', '星期日'] from functools import cmp_to_key a.

Read More →

XML解析

Categories: Python
XML # document.xml为docx文件中的 from xml.etree.ElementTree import parse from xml.etree.ElementTree import XMLParser f = open('document.xml') doc = parse(f, XMLParser(encoding="utf-8")) # 1 t_elems = doc.findall('.//{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t') # 2 ns = {'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'} t_elems = doc.findall('.//w:t', ns) # 3 t_elems = doc.iter('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t') for elem in t_elems: print(elem.text) LXML from lxml import etree f = open('document.xml') doc_lxml = etree.parse(f, etree.XMLParser(encoding="utf-8")) # 1 p_lxml = doc_lxml.iter('{http://schemas.openxmlformats.org/wordprocessingml/2006/main}t') # 2 ns = {'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'} find_results = doc_lxml.findall('//w:t', ns) # Namespace prefix->URI mapping known in the context of this Element.

Read More →