GNU sed

mysqlbinlog结合sed命令恢复数据

假装没事ソ 提交于 2020-04-12 10:10:18
1 、环境说明 使用mysqlbinlog搭配sed命令完美还原 MySQL版本号:5.6.X及5.7.X; mysql必须开启binlog,并且mysql的binlog最好是Row模式; mysql数据库指定字符集位utf8,同时表的字符集也得为utf8,否则在mysqlbinlog 解析出来的sql文件对于中文汉字的会出现乱码,导致最后恢复数据到线上的表中报错。 满足以上条件这样可以极大的保证数据恢复的几率。 当然把控好数据库的权限问题,禁止采用不加where条件的delete 和update语句,以及禁止采用drop,truncate才是从根源保证数据安全行之有效的办法。 查看当前的binlog文件: show master status; 找到binllog文件路径下,再次之前需要确认一下你误操作的大概时间,因为我们要通过时间范围来搜索日志,执行命令如下: mysqlbinlog --base64-output=decode-rows -v -v --start-datetime=' 2019-10-17 14:40:00 ' --stop-datetime=' 2019-10-17 14:50:00 ' /data/mysql_data/binlog.000004 |grep -C 30 "UPDATE `test1`.`zx_scores`"

企业实战项目Linux+nginx+php+mysql+redis部署web服务

时光怂恿深爱的人放手 提交于 2020-04-11 18:37:48
第一部分,服务器优化(操作用户:root) 1、hostnamectl set-hostname SYT-test-001 2、yum -y install lrzsz 3、cp sysctl.conf sysctl.conf.bak vi /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 65536 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.tcp_max

MySQL主从复制(运维技术交流群:926402931,欢迎大家一起来交流。)

余生颓废 提交于 2020-04-11 11:25:43
目录 1.环境规划 2.所有MySQL都开启binlog功能,确保所有MySQL的server-id不同 3.主库授权主从复制用户 4.主库将数据库数据做全备,然后将备份文件推送到从库 5.从库将备份文件恢复到数据库 6.从库上找到binlog位置点 7.从库配置主从复制参数 8.主库创建数据库,然后到从库验证数据是否同步 1.环境规划 主机名 角色 IP地址 db01 MySQL主库 10.0.0.51 db02 MySQL从库 10.0.0.52 2.所有MySQL都开启binlog功能,确保所有MySQL的server-id不同 主库: [mysqld] basedir=/application/mysql datadir=/application/mysql/data socket=/application/mysql/tmp/mysql.sock port=3306 server_id=10 log-error=/var/log/mysql.log log-bin=/data/binlog/mysql-bin sync_binlog=1 binlog_format=row 从库: [mysqld] basedir=/application/mysql datadir=/application/mysql/data socket=/application/mysql/tmp

[复习] grep、sed、awk练习题(一)

放肆的年华 提交于 2020-04-10 15:28:17
打印文件中特定的某行到某行之间的内容 问题 :有个文件test的内容如下: ert fff ** [abcfd] 123 324 444 [rty] ** fgfgf 需求:怎么能截取 [abcfd] ~ [rty] 这几行的内容出来呢? 答案 : sed -n '4,8'p test 上面代码确实能够解决问题,如果我们设想一下test文件的行为1000行或者更多10000行我们又该怎么去解决呢? sed -nr '/(abcfd)/,/rty/'p test 我们可以匹配内容去寻找对应的匹配,更符合解决问题的方案。 sed 如何转换大小写字母 sed中常用的符号解释: \u : 就是表示把第一个字符转化成大写字母。uppercase \l : 表示小写 & : 就是表示匹配前面正则表达式的那部分 \b : 匹配一个单词边界,也就是指单词和空格间的位置 1.把每个单词的第一个小写字母变大写: [root@yolks1 awk]# sed 's/\b[a-z]/\u&/g' test_awk.txt X:0:0:Root:/Root:/Bin/Bash Bin:X:1:1:Bin:/Bin:/Sbin/Nologin Daemon:X:2:2:Daemon:/Sbin:/Sbin/Nologin Adm:X:3:4:Adm:/Var/Adm:/Sbin/Nologin Lp:X:4

[复习] grep、sed、awk练习题(二)

社会主义新天地 提交于 2020-04-10 14:40:44
awk 中使用外部shell变量 如: A=44echo "ABCD" | awk -v GET_A=$A ’{print GET_A}’ 说明:-v选项用于定义参数,这里表示将变量A的值赋予GET_A。 有多少个变量需要赋值,就需要多少个-v选项。与之等价的:应用于脚本中: #! /bin/bash # 切割文件第一部分去重排序写入id.txt文件中 sort -n test0709.txt |awk -F ':' '{print $1}'|uniq >id.txt # 循环遍历id.txt将值赋予变量id for id in `cat id.txt`; do echo "[$id]" # 此处id2变量就是外部被赋值变量 awk -v id2=$id -F ':' '$1==id2 {print $2}' test0709.txt # 另外的方式为: awk -F ':' '$1=="'id'" {print $2}' test0709.txt done 附件: cat test0709.txt 1111111:13443253456 2222222:13211222122 1111111:13643543544 3333333:12341243123 2222222:12123123123 运行脚本后结果为: [1111111] 13443253456 13643543544

Zookeeper-deploy

大城市里の小女人 提交于 2020-04-08 17:58:14
一、概述 1.1、简介 Zookeeper是一个开源的,分布式的,为分布式应用提供协调服务的Apache项目 1.2、工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化Zookeeper就将负责通知已经在Zookeeper.上注册的那些观察者做出相应的反应。 1.3、特点 1) Zookeeper: 一个领导者(Leader) ,多个跟随者(Follower) 组成的集群。 2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。 3)全局数据一致:每个Server保存一份相同的数据副本,Client无论 连接到哪个Server,数据都是一致的。 4)更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行。 5)数据更新原子性,一次数据更新要么成功,要么失败。 6)实时性,在一定时间范围内,Client能读到最新数据。 1.4、数据结构 ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。 znode一共有4种类型:持久的(persistent)、临时的 (ephemeral)、持久有序的

正则介绍及grep/egrep用法

我怕爱的太早我们不能终老 提交于 2020-04-07 07:31:29
​ 10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 9.1 正则介绍_grep上 什么是正则 正则就是一串有规律的字符串 掌握好正则对于编写shell脚本有很大帮助 各种编程语言中都有正则,原理是一样的 本章将要学习grep/egrep、sed 、awk 三剑客 #Cent OS 7.0以下的版本grep和egrep是不带颜色显示的,需要手动添加alias。 [root@centos6 ~]# vim .bashrc [root@centos6 ~]# . .bashrc [root@centos6 ~]# which egrep alias egrep='egrep --color=auto' /bin/egrep [root@centos6 ~]# which grep alias grep='grep --color=auto' /bin/grep grep grep [-cinvABC] 'word' filename -c 行数 -i 不区分大小写 -n 显示行号 -v 取反 -r 遍历所有子目录 -A 后面跟数字,过滤出符合要求的行以及下边的n行 -B 同上,过滤出符合要求的行以及上边的n行

正则介绍 、grep、egrep工具

人盡茶涼 提交于 2020-04-07 02:10:58
正则 一串有规律的字符串 掌握好正则对编写shell脚本有很大帮助 各种编程脚本中都有正则 grep sed awk grep/egrep工具 格式: grep [-cinvABC] 'word' filename -c 打印符合要求的行的行数 -i 不区分大小写 -n 显示行号 -v 打印不符合要求的行 -r 遍历所有子目录 -A 后面跟数字,例如-A2 表示打印符合要求的行以及下面两行 -B 后面跟数字,例如 -B2 表示打印符合要求的行以及上面两行 -C 后面跟数字,例如-C2 表示打印符合要求的行以及上下两行 grep/egrep用法示例: 过滤出带有某个关键词的行,并输出行号 过滤出不带有某个关键词的行,并输出行号 过滤出所有包含数字的行 过滤出所有不带数字的行,只要在上面命令中加上 -v 选项就行 过滤掉所有以#开头的行 符号 ^ 表示行的开始 过滤掉所有空行和以#开头的行 $表示行的结尾,空行就用 ^$ 表示 打印出除了符合中括号 [ ] 里的内容 过滤出任意一个字符和重复字符 符号 . 表示任意一个字符 符号 * 表示零个或多个前面的字符 .* 表示零个或多个任意字符,空行也包含在内 指定要过滤出的字符出现的次数 grep使用大括号 { } 要在大括号前使用脱义符号,不想使用脱义符号就要使用 -E 选项,或使用egrep 过滤出一个或多个指定的字符 符号 +