首页
AI导航
美图
服务
付费
树洞
留言
云主机
推荐
邻居
更多
我的书单
我的足迹
罗盘时钟
圈小猫
工作打分
本站统计
版本历史
推荐
txt阅读器
主机监控
M商城
网址导航
在线工具
证件照制作
Search
1
docker和docker-compose一键安装脚本
824 阅读
2
docker下运行grafana和grafana Image Renderer
664 阅读
3
grafana的Dashboard面板添加阈值报警
632 阅读
4
WooCommerce对接第三方支付插件开发
503 阅读
5
基于docker的部署fecmall开源电商系统
442 阅读
ChatGPT
虚拟化
数据库
运维
基础知识
监控预警
数据展示
运维工具
web安全
系统服务
开发
python
php
java
shell
go
html5
项目
博客
电商
工具
娱乐
影视
读书
读书笔记
综合
VPS报告
规范文档
知识总结
经验分享
关于本站
登录
Search
标签搜索
python
django
电商平台
运维工具
Joe主题
docker
zabbix
蓝鲸智云
运维
监控
typecho
grafana
wordpress
运维知识
mysql
php
elk
nginx
web安全
VPS测试
IT不难
累计撰写
245
篇文章
累计收到
209
条评论
首页
栏目
ChatGPT
虚拟化
数据库
运维
基础知识
监控预警
数据展示
运维工具
web安全
系统服务
开发
python
php
java
shell
go
html5
项目
博客
电商
工具
娱乐
影视
读书
读书笔记
综合
VPS报告
规范文档
知识总结
经验分享
关于本站
页面
美图
服务
留言
邻居
我的足迹
本站统计
版本历史
推荐
M商城
网址导航
搜索到
8
篇与
的结果
2022-12-07
sqlite3数据库基本使用
基本命令# 打开 sqlite3 mm.db # 当前数据库 .database # 所有表 .tables # 表结构 .schema items # 表索引 .indices items # 删除表 drop table option; # 查询数据 select * from items;数据导入导出# 导出 .output items.csv .separator , select * from items; # 建表 CREATE TABLE "items" ( "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "cat" integer NOT NULL, "itemId" integer NOT NULL, "count" integer NOT NULL ); # 导入 .import items.csv items
2022年12月07日
14 阅读
0 评论
0 点赞
2022-10-21
SQL中的循环和游标
前言{callout color="#f0ad4e"}我们使用SQL语句处理数据时,可能会碰到一些需要循环遍历某个表并对其进行相应的操作(添加、修改、删除),这时我们就需要用到咱们在编程中常常用的for或foreach,但是在SQL中写循环往往显得那么吃力,翻遍网上的资料,找不到几个正确的并能执行的循环处理数据的方法。要SQL中写类似for循环,我这里使用的是SQL中的游标来实现。{/callout}示例1{message type="success" content="利用游标循环更新、删除MemberAccount表中的数据"/}DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中 OPEN My_Cursor; --打开游标 FETCH NEXT FROM My_Cursor ; --读取第一行数据 WHILE @@FETCH_STATUS = 0 BEGIN --UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新 --DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除 FETCH NEXT FROM My_Cursor; --读取下一行数据 END CLOSE My_Cursor; --关闭游标 DEALLOCATE My_Cursor; --释放游标 GO示例2{message type="success" content="利用游标循环更新MemberService表中的数据(更新每个用户所购买服务的时间)"/}隐藏内容,请前往内页查看详情
2022年10月21日
12 阅读
0 评论
1 点赞
2022-07-27
docker启动mariadb单机版
前言{callout color="#f0ad4e"}MariaDB则是MySQL的一个分支,作为mysql的替代品。{/callout}部署基本环境配置参考: docker和docker-compose一键安装脚本配置文件{message type="success" content="目录结构"/}tree mariadb/ mariadb/ ├── conf │ └── my.cnf └── docker-compose.yaml{message type="success" content="my.cnf"/}隐藏内容,请前往内页查看详情{message type="success" content="docker-compose.yaml"/}version: '3.5' services: mariadb: container_name: mariadb image: mariadb:10.3.28 ports: - "3306:3306" volumes: - /etc/localtime:/etc/localtime:ro - ./conf/my.cnf:/etc/mysql/my.cnf - /data/mysqldb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: rooxxxx123 TIME_ZONE: Asia/Shanghai restart: always networks: - mariadb_net networks: mariadb_net:启动docker-compose up -d
2022年07月27日
41 阅读
1 评论
4 点赞
2022-07-23
mysql数据库基础知识总结
概述在centos系统下的默认安装目录结构目录说明/usr/bin客户端程序和脚本/usr/sbinmysqld服务器/var/lib/mysql日志文件,数据库/usr/share/doc/packages文档/usr/include/mysql包含(头)文件/usr/lib/mysql数据/usr/share/mysql错误消息和字符集文件/usr/share/sql-bench基准程序主从复制{callout color="#f0ad4e"}mysql复制概述 mysql数据库支持单向、异步复制,一个服务器充当主服务器。一个或多个充当从服务器 mysql数据库复制基于主服务器在二进制日志中跟踪所有数据的更新,进行复制,在主服务器上启用二进制日志 从服务器执行不会干扰主服务器,在备份过程中主服务器可以继续处理更新。复制实现细节 mysql使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上)。 主服务器Binlog Dump 线程 从服务器I/O线程 从服务器SQL线程mysql数据库多主一从实现方式也是基于一主一从的实现{/callout}常用语句# 查询一个数据库有多少张数据表; select count(*) TABLES,table_schema from information_schema.TABLES where table_schema = 'ultrax' group by table_schema; # 查看某张表的字段信息; mysql> desc pre_common_connect_guest; # 查看mysql默认引擎 show variables like '%storage_engine%';锁表问题# mysql查看表的状态 show OPEN TABLES where In_use > 0; # 查看锁表进程 mysql> show processlist; mysql> kill 112498; #进程ID重置密码# 无密码启动 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 &update user set password = Password('123456') where User = 'root'; flush privileges;
2022年07月23日
24 阅读
0 评论
0 点赞
2022-04-22
mysql数据库基本操作语句,模拟误删数据恢复
{card-default label="mysql" width="80%"}{/card-default}前言{callout color="#f0ad4e"} 作为小站长,mysql数据库算是比较常用的了。作为运维,肯定遇到过数据被误删的情况。下面模拟数据库为误操作删除后的恢复过程。{/callout}mysql常用配置开启binlog修改配置vim /etc/my.cnf.d/mariadb-server.cnf server-id = 1 log-bin=mysql-bin binlog_format=mixed expire_logs_days = 10常用查询-- 查看binlog 状态 use mysql show variables like '%log_bin%'; -- 查看所有binlog文件列表 show master logs; -- 查看最后一个binlog日志的编号名称及其最后一个操作事件pos结束点的值 show master status; -- 刷新日志,此刻开始产生一个新编号的binlog文件 Flush logs; -- 每当mysqld服务重启时,会自动执行刷新binlog日志命令,mysqldump备份数据时加-F选项也会刷新binlog日志 -- 清空所有binlog reset master; -- 查看binlog 内容 -- 方法1 mysqlbinlog mysql-bin.000001 -- 方法2 show binlog events in 'mysql-bin.000001'; -- 指定查询 -- 从mysql-bin.000003 的pos 点328 开始 show binlog events in 'mysql-bin.000003' from 328; -- 从pos点154开始查询,中间跳过1行,查询2条数据 show binlog events in 'mysql-bin.000004' from 256 limit 1,2; 数据备份恢复#数据备份 mysqldump --single-transaction -uroot -proot@123 -S /opt/app/mysql/mysql.sock taskmonitor | /bin/gzip >/tmp/mysql_taskmonitor_`date +%m%d`.gz #下载 scp root@ip:/tmp/mysql_taskmonitor_0913.gz . #导入 gzip -d mysql_taskmonitor_0913.gz mysql -uroot -p123456 taskmonitor < mysql_taskmonitor_0913 建库授权CREATE DATABASE `taskmonitor` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; create user 'tmuser'@'%' IDENTIFIED BY 'tmuser@123'; grant all privileges on taskmonitor.* to 'tmuser'@'%'; flush privileges;清理数据库删除所有表SELECT CONCAT('drop table ',table_name,';') FROM information_schema.`TABLES` WHERE table_schema='wpc';模拟恢复实验配置备份计划任务检查binlog 是否开启use mysql show variables like '%log_bin%';备份脚本隐藏内容,请前往内页查看详情定时全量备份,每周日4点10分 全备10 4 * * 0 /bin/bash /opt/scripts/backup_db_taskmonitor.sh >/dev/null 2>&1手动执行/bin/bash /opt/scripts/backup_db_taskmonitor.sh执行误删操作drop database taskmonitor;恢复准备数据恢复,登录数据库,刷新binlogflush logs;备份 mysql-bin 文件mkdir dbbak && cp /data/mysql/mysql-bin.* dbbak/根据binlog继续恢复,找出错误操作的posmysqlbinlog -v --base64-output=DECODE-ROWS mysql-bin.000002 |grep -C 10 -i "drop database"{card-default label="pos" width="75%"}{/card-default}{message type="success" content="通过上图看到误操作的点是604"/}查找mysqldump全备结束的pos点grep -i "change master" /data/db_backup/2021-09-29-15-29-13.taskmonitor{card-default label="查询结果" width="75%"}{/card-default}{message type="success" content="全备pos点 371"/}开始恢复通过全备份恢复数据mysql -uroot -p123456 < /data/db_backup/2021-09-29-15-29-13.taskmonitor开始增量恢复到误操作,同一个binlog内mysqlbinlog --start-position=371 --stop-position=604 mysql-bin.000002 |mysql -uroot -p123456
2022年04月22日
88 阅读
1 评论
3 点赞
2022-04-20
redis部署与使用
前言{callout color="#f0ad4e"}redis即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。{/callout}{card-default label="redis" width="70%"}{/card-default}部署{message type="success" content="系统版本:centos7.9版本"/}# 源 yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm #安装软件 yum --enablerepo=remi install redis #启动服务 systemctl enable --now redisdocker部署配置文件{message type="success" content="docker-compose.yaml"/}version: '3.5' services: redis: container_name: redis-server image: redis:latest ports: - "6379:6379" volumes: - /etc/localtime:/etc/localtime:ro - ./conf/redis.conf:/etc/redis/redis.conf - /data/redis:/data environment: TIME_ZONE: Asia/Shanghai command: ["redis-server", "/etc/redis/redis.conf"] restart: always networks: - redis_net networks: redis_net:{message type="success" content="redis.conf"/}bind 0.0.0.0 port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 #loglevel notice #logfile "/logs/redis.log" databases 16 requirepass redis@2022启动docker-compose up -d使用#连接 redis-cli #有密码 redis-cli -a redis@2022 #列表 keys * #redis查看值 #查看类型 type spiders:crawl_lotto:h_spider_time #string类型 get dedup:bloomfilter:bloomfilter0 #hash 类型 HKEYS spiders:crawl_lotto:h_spider_time #zset 类型 ZRANGE spiders:crawl_lotto:z_failed_requsets 0 -1 #获取key 的值 get dedup:bloomfilter:bloomfilter0 #清空当前库的所有key flushdb #删除key 重新导入 del dedup:bloomfilter:bloomfilter0 #删除所有 redis-cli -a redis@2022 keys "*" | xargs redis-cli -a redis@2022 del #查看内存分配机制 config get maxmemory-policy #选择数据库 ##默认为0 select 1
2022年04月20日
59 阅读
0 评论
3 点赞
2022-03-09
mariadb数据库安装配置
{card-default label="mysql数据库" width="80%"}{/card-default}前言{callout color="#f0ad4e"}但是mariadb与mysql在使用范围和使用目的上都有所不同,两者的主要功能都是为了通过开源社区在维护中,从而获得GPL授权许可。从关系上来看,mariadb是属于数据库管理系统的开发和升级版本,它仅仅代表MySQL的一个分支。{/callout}{card-default label="版本信息" width="100%"}系统版本:centos7.9软件版本:mariadb 10.3.28{/card-default}安装mariadb(单机版)直接安装到centos7.9系统内配置yum源编辑配置文件vim /etc/yum.repos.d/MariaDB.repo文件内容[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3.28/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1安装yum install MariaDB-server MariaDB-devel MariaDB-shared配置文件编辑配置文件vim /etc/my.cnf.d/mariadb-server.cnf配置内容隐藏内容,请前往内页查看详情创建数据目录mysql -p /data/log/mariadb/ && chown -R mysql:mysql /data/log/mariadb/ mkdir -p /run/mariadb/ && chown -R mysql:mysql /run/mariadb/数据库初始化mysql_install_db chown -R mysql:mysql /data/mysql/启动systemctl enable --now mariadb安全设置mysql_secure_installationdocker运行mariadb安装docker和docker-compose docker和docker-compose一键安装编写docker-compose.yamlversion: '3.5' services: mariadb: container_name: mariadb image: mariadb:10.3.28 ports: - "3306:3306" volumes: - /etc/localtime:/etc/localtime:ro - ./conf/my.cnf:/etc/mysql/my.cnf - /data/mysqldb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: xxxxxxx@123 TIME_ZONE: Asia/Shanghai restart: always networks: - mariadb_net networks: mariadb_net: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" ipam: driver: default config: - subnet: 172.16.237.0/24启动docker-compose up -dmariadb所有配置下载地址隐藏内容,请前往内页查看详情双机主主模式配置基于binlog的传统模式启动数据库#m1执行 cd /opt/mariadb-m-m/m1/ docker-compose up -d #m2执行 cd /opt/ly-traffic/mariadb-m-m/m2/ docker-compose up -d进入m1节点执行#进入mariadb docker exec -it mariadb_m1 /bin/bash mysql -uroot -pUtemyan001db -h 127.0.0.1 #确认系统时间 select now(); #确认字符集 show variables like '%character%'; #查看file和positon show master status; 图1 #创建同步账号 grant replication slave,replication client on *.* to 'slave'@'49.119.119.%' identified by "slave@123"; flush privileges; #同步配置 change master to master_host='mariadb_m2',master_user='slave',master_password='slave@123',master_port=3306,master_log_file='mysql-bin.000003', master_log_pos=342,master_connect_retry=30; #启动 start slave; #查看slave状态; show slave status\G进入m2执行docker exec -it mariadb_m2 /bin/bash mysql -uroot -pUtemyan001db -h 127.0.0.1 #检查系统时间 select now(); #确认字符集 show variables like '%character%'; #查看file和positon show master status; 图1 #创建同步账号 grant replication slave,replication client on *.* to 'slave'@'49.119.119.%' identified by "slave@123"; flush privileges; #同步配置 change master to master_host='mariadb_m1',master_user='slave',master_password='slave@123',master_port=3306,master_log_file='mysql-bin.000003', master_log_pos=342,master_connect_retry=30; #启动 start slave; #查看slave状态; show slave status\G{card-default label="图一" width="80%"}{/card-default}{card-default label="配置完成" width="80%"}{/card-default}完成后测试#m1创建数据库 create database test1; #m2 查看 show database; #m2创建数据库 create database test2; #m1 查看 show database; #关闭m2,m1创建数据库test3,test2数据库创建表,然后启动m2 看是否自动同步基于GTID模式m1到m2的复制#m1 执行 #查看master状态 show master status; 图3 #查看gtid_binlog show variables like '%gtid_binlog%'; #m2执行 #设置slave_pos set global gtid_slave_pos='0-11-7192'; #配置master change master to master_host='mariadb_m1',master_user='slave',master_password='slave@123',master_port=3306,master_use_gtid=slave_pos,master_connect_retry=30; #启动 start slave;{card-default label="图3" width="80%"}{/card-default}m2到m1的复制#m1配置 set global gtid_slave_pos='0-12-7192'; #配置master change master to master_host='mariadb_m2',master_user='slave',master_password='slave@123',master_port=3306,master_use_gtid=slave_pos,master_connect_retry=30; #启动 start slave;配置完成其他安装客户端yum install mariadb创建数据库CREATE DATABASE `xwaf` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; create user 'xwafuser'@'127.0.0.1' IDENTIFIED BY 'xwafuser@123'; grant all privileges on xwaf.* to 'xwafuser'@'127.0.0.1'; flush privileges;
2022年03月09日
103 阅读
0 评论
4 点赞
2022-02-25
mysql数据库全量备份方案
{card-default label="数据备份" width="90%"}{/card-default}全量备份脚本dbback.sh#!/bin/bash ##备份数据库脚本 ##email: 1940728253@qq.com ##xwzy1130 #MySQL User Information HOST=127.0.0.1 USERNAME=root PASSWORD=***** #Date Format DATE=`date +%Y%m%d` #Back directory DAYS=20 #备份文件存放位置 BACKUP_DIR=/data/db-backup/ #MySQL directory MYSQL_DIR=/usr/bin/ #Go to the backup directory if [ -d ${BACKUP_DIR} ];then cd ${BACKUP_DIR} else mkdir -p ${BACKUP_DIR} fi #The first instance of the backup while read dbname do if [ -f ${dbname}_${DATE}.gz ]; then echo "MySQL Database ${dbname}_${DATE}.gz already exists." else ${MYSQL_DIR}/mysqldump -u${USERNAME} -p${PASSWORD} -h${HOST} --default-character-set=utf8 --master-data=2 --single-transaction ${dbname} | /bin/gzip > ${BACKUP_DIR}/${dbname}_${DATE}.gz fi done < /opt/ly-traffic/db-backup/dbs.txt ##删除旧备份文件 find ${BACKUP_DIR} -name "*.gz" -type f -mtime +22|tee -a ${BACKUP_DIR}/del.log|xargs rm -r 2>>${BACKUP_DIR}/err.log exit 0数据备份可用行测试gzid -d 文件名 mysql -uroot -p -h127.0.0.1 数据库 < 文件名
2022年02月25日
60 阅读
0 评论
9 点赞