MySQL · 物理备份 · XtraBackup 备份原理
前言Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle)、Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心。我们 RDS MySQL 的物理备份就是基于这个工具做的。
项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Launchpad,现在已经迁移到 Github 啦,项目更新发布非常快,感兴趣的可以关注 :-)
本文会介绍下备份工具的工作原理,希望对大家有所帮助。
工具集软件包安装完后一共有4个可执行文件,如下:
usr├── bin│ ├── innobackupex│ ├── xbcrypt│ ├── xbstream│ └── xtrabackup
其中最主要的是 innobackupex 和 xtrabackup,前者是一个 perl 脚本,后者是 C/C++ 编译的二进制。
xtrabackup 是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 mys ...
PHP 安装 pdo_sqlsrv 扩展(CentOS7)
一、安装相关依赖1.1 安装微软源$ curl -s -o /tmp/prod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
1.2 防止冲突先卸载原有版本(可选)$ yum remove -y unixODBC
1.3 安装驱动(三个都要装上,缺一不可)$ yum install -y msodbcsql mssql-tools unixODBC-devel
二、编译pdo_sqlsrv插件2.1 下载pdo_sqlsrv扩展包$ wget http://pecl.php.net/get/pdo_sqlsrv-5.9.0.tgz
2.2 解压编译$ tar xf pdo_sqlsrv-5.9.0.tgz$ cd pdo_sqlsrv-5.9.0
2.3 预编译$ /usr/bin/phpize$ ./configure --with-php-config=/usr/bin/php-config
2.4 编译安装$ make && make install
三、添加pdo_ ...
MongoDB单节点升级为副本集高可用集群
项目背景由于历史原因,我们有一个作数据同步的业务,生产环境中MongoDB使用的是单节点。但随着业务增长,考虑到这个同步业务的重要性,避免由于单节点故障造成业务停止,所以需要升级为副本集保证高可用。
副本集架构下面这架构图是这篇文章需要实现的MongoDB副本集高可用架构:
升级架构前注意事项在生产环境中,做单节点升级到集群前,一定要先备份好mongodb的所有数据,避免操作失误导致数据丢失。
并且在保证在升级期间不会有程序连接到MongoDB进行读写操作,建议停服务升级,且在凌晨业务低峰期,进行操作。
一、原单节点MongoDB配置信息IP: 192.168.30.207Port: 27017
1.1 原配置文件systemLog: destination: file logAppend: true path: /home/server/mongodb/logs/mongodb.logstorage: journal: enabled: true dbPath: /home/server/mongodb/data directoryPerDB: tru ...
解决 Elasticsearch 7.X 分片数量不足问题
问题分析这是Logstash向ES请求创建新索引时,Logstash日志出现以下报错信息。
[2021-01-11T13:23:52,381][WARN ][logstash.outputs.elasticsearch][main][08029a8bd56dc10a64b84e502acbac75f20dc2c03ac3454af5ea5a31d7aade2c] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"catalina-prod-openapi-2021.01.11", :routing=>nil, :_type=>"_doc"}, #<LogStash::Event:0x3a2c6612>], :response=>{"index"=>{" ...
Docker Compose 部署 EFK
准备环境系统版本:CentOS 7.6
服务器配置:2H 4G
软件版本(docker镜像):
elasticsearch 6.6.0kibana 6.6.0filebeat 6.6.0
安装 Docker-CE添加 stable 版本的 docker 仓库$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安装 docker-ce安装最新版的 docker$ yum install docker-ce docker-ce-cli containerd.io
安装指定版本 docker
查询可安装的版本:
$ yum list docker-ce --showduplicates | sort -r * updates: mirrors.tuna.tsinghua.edu.cnLoading mirror speeds from cached hostfileLoaded plugins: fastestmi ...
Elasticsearch 6.6.0 X-PACK 破解
准备环境软件包版本
elasticsearch-6.6.0.rpmkibana-6.6.0-x86_64.rpmlogstash-6.6.0.rpm
在做下列操作前,建议先停止Elasticsearch、Kibana
systemctl stop elasticsearch kibana
如果是相同版本,可直接使用已破解好的相关 x-pack-6.6.0 文件:下载地址
反编译 x-pack-core-6.6.0.jar下载Luyten:https://github.com/deathmarine/Luyten/release
从ES服务器上把x-pack-core-6.6.0.jar 下载到PC,打开Luyten软件,并把x-pack-core-6.6.0.jar包拖入。
rpm包安装的elasticsearch插件路径:/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-6.6.0.jar
找到 org.elasticsearch.license.LicenseVerifier、org.elastic ...
CentOS 7 配置 mailx 代理 163&QQ 邮箱
网易 163 邮箱一、安装服务软件安装 mailx、sendmail 软件
$ yum install -y mailx sendmail
二、配置修改$ vim /etc/mail.rcset from=xxx@163.com # 发送邮件后显示的邮件发送方set smtp=smtps://smtp.163.com:465 # 163 smtp邮件服务器set smtp-auth-user=youremail@163.com # 你的163邮箱set smtp-auth-password=xxxxxx # 你的163邮箱密码(设置页面加密后的授权码)set smtp-auth=login # 动作、登录set nss-config-dir=/root/.certs/ # 证书路径set ssl-verify=ignore # 忽略ssl验证
三、生成邮箱证书$ mkdir -p /root/.certs/$ echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne ' ...
MySQL 之 mysqldump 备份权限
1.创建一个用于备份数据库的用户mysql> create user 'backup'@'localhost' identified by '123';
2.添加权限2.1 添加 SELECT 权限根据报错,backup用户缺少select权限
[root@private_server ~]# mysqldump -ubackup -p123 -B wordpress > wordpress.sqlmysqldump: Got error: 1044: "Access denied for user 'backup'@'localhost' to database 'wordpress'" when selecting the database
给backup用户添加select权限
mysql> GRANT SELECT ON *.* TO 'backup'@'localhost& ...
MySQL 半同步复制
一、半同步复制1.原理在半同步复制出现之前,虽然异步复制可以满足主从实例之间的数据同步,同时row 格式的binlog也能够大幅度避免主从实例的数据不一致的情况,但是如果碰到主库崩溃,写业务故障切换到从库,将从库提升为主库时,原来的主库上可能有一部分数据还没来得及被从库接收,而事实上这部分丢失的数据可能在主库上已经正常提交完成了。为解决这个问题,在MySQL 5.5版本中引入了半同步复制,半同步复制的关键改进就是当客户端在 主库上写入一个事务时,需要等待从库接收到主库的binlog,且主库接收到ACK确认之后,客户端才能收到事务成功提交的消息,如图
这里有一个小细节需要注意:早期的半同步复制有一个缺陷,在正常的半同步复制流程中,当客户端对主库发起事务提交之后,主库发送binlog给从库,从库接收到binlog并返回ACK,然后主库返回事务提交成功的消息给发起提交的客户端。这里对于发起事务提交的客户端看起来没有任何问题,但实际上在早期的半同步复制中,主库在等待ACK 的InnoDB存储引擎内部已经提交事务,只是阻塞了返回给发起事务提交的客户端消息而已。此时如果有其他会话对该事务修改的数 ...
ZABBIX 4.4安装部署
安装zabbix
配置Zabbix的yum源仓库
安装一个Zabbix官方源仓库:
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
改用官方源为阿里云镜像源:
由于官方源是国外的镜像仓库,速度非常慢,改用阿里云的镜像仓库会非常快。只需在官方源的repo文件中修改URL即可。
sed -i 's@http://repo.zabbix.com@https://mirrors.aliyun.com/zabbix@g' /etc/yum.repos.d/zabbix.repo
安装zabbix
安装Zabbix 服务端,web前端,客户端
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
安装Zabbix前端软件包。
yum install -y zabbix-web-mysql zabbix-nginx-conf
安装配置数据库数据库 ...