From 38fa85e749e738aa9404deb71a89e73fe16a3685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E9=93=AD=E8=BF=9C?= <11816773+chang-mingyuanqwe@user.noreply.gitee.com> Date: Tue, 2 Jul 2024 09:12:43 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=E4=B8=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 常铭远 <11816773+chang-mingyuanqwe@user.noreply.gitee.com> --- .../\345\256\211\350\243\205mysql.md" | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 "\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" diff --git "a/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" "b/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" new file mode 100644 index 0000000..c0d45bc --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" @@ -0,0 +1,12 @@ +下载deb包 +win+r +cmd +上传deb包到linux系统 +scp deb文件的路径 root@你的ip或者域名:/要存放的位置 +安装deb包形成数据源 +dpkg deb文件名 +更新一下数据源 +apt update +安装数据库 +apt install mysql-server +然后会有设置密码 \ No newline at end of file -- Gitee From 35a2a89f45144554b09fde306745652646cd69f5 Mon Sep 17 00:00:00 2001 From: unknown <2624845576@qq.com> Date: Thu, 4 Jul 2024 17:20:00 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...34\347\250\213\350\256\277\351\227\256.md" | 45 +++++++++++ .../postgresql.md" | 67 ++++++++++++++++ .../\345\256\211\350\243\205mysql.md" | 78 ++++++++++++++++--- 3 files changed, 178 insertions(+), 12 deletions(-) create mode 100644 "\345\270\270\351\223\255\350\277\234/mysql\350\277\234\347\250\213\350\256\277\351\227\256.md" create mode 100644 "\345\270\270\351\223\255\350\277\234/postgresql.md" diff --git "a/\345\270\270\351\223\255\350\277\234/mysql\350\277\234\347\250\213\350\256\277\351\227\256.md" "b/\345\270\270\351\223\255\350\277\234/mysql\350\277\234\347\250\213\350\256\277\351\227\256.md" new file mode 100644 index 0000000..46e5e32 --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/mysql\350\277\234\347\250\213\350\256\277\351\227\256.md" @@ -0,0 +1,45 @@ +## 设置MySQL,使可以远程访问 + +1. mysql -uroot -p : 进入数据库 + +2. use mysql; : 切换为MySQL数据库 + +3. 查询信息 + + ``` + select user,host from user; + +------------------+-----------+ + | user | host | + +------------------+-----------+ + | mysql.infoschema | localhost | + | mysql.session | localhost | + | mysql.sys | localhost | + | root | localhost | + +------------------+-----------+ + 4 rows in set (0.00 sec) + + host字段中,localhost表示只允许本机访问 + ``` + +4. 实现远程连接,可以将root用户的host改为% + + ``` + update user set host="%" where user="root"; + ``` + +5. flush privileges : 使本次修改立即生效 + +6. ``` + ststemctl status firewalld --- 查看防火墙是运行 + firewall-cmd --add-port=3306/tcp --permanent -- 添加需要开放的端口 + firewall-cmd --reload -- 重新载入添加的端口 + firewall-cmd --query-port=3306/tcp -- 查询端口是否开启 + ``` + +7. sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT -- 开放5432端口 + +8. 使用服务器的话还需要开启安全组 + +9. 测试能否远程登录: + + mysql -h 1IP地址 -u root -P3306 -p \ No newline at end of file diff --git "a/\345\270\270\351\223\255\350\277\234/postgresql.md" "b/\345\270\270\351\223\255\350\277\234/postgresql.md" new file mode 100644 index 0000000..b5aa84f --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/postgresql.md" @@ -0,0 +1,67 @@ +## 安装postgresql + +1. apt install -y postgresql-common + +2. ``` + /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh 点回车 + ``` + +3. apt install postgrepsql + +4. 进入postgresql:su postgres + +5. psql + +6. \l:列出当前所有数据库 \c:连接数据库 \dt:查看数据库 + +## 远程登录 + +删除postgres密码:sudo passwd -d postgres + +更改postgres密码:sudo -u postgres passwd + +``` +修改密码 +sudo -u postgres psql +ALTER USER postgres WITH PASSWORD 'postgres'; +``` + +1. vim /etc/postgresql/版本号/main/postgresql.conf + +2. 找到#listen_addresses = 'localhost' 取消注释,改为listen_addresses = '*' + +3. vim /etc/postgresql/16/main/pg_hba.conf + +4. 在文件末尾添加以下行,允许所有IP地址通过密码连接:host all all 0.0.0.0/0 md5 + +5. sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT -- 开放5432端口 + +6. 服务器需要设置安全组端口 + +7. ``` + ststemctl status firewalld --- 查看防火墙是运行 + firewall-cmd --add-port=3306/tcp --permanent -- 添加需要开放的端口 + firewall-cmd --reload -- 重新载入添加的端口 + firewall-cmd --query-port=3306/tcp -- 查询端口是否开启 + ``` + +## 创建1000万条数据 + +``` +标题、内容、作者、出版时间、昵称、头像 +create database qq; +use qq; +create table blog ( +title varchar(255), +content varchar(255), +author varchar(255), +publishedtime timestamp, +nickname varchar(255), +avatar varchar(255) +); + + +EXPLAIN (ANALYZE, TIMING) insert into blog select generate_series(1,10000000),md5(random()::varchar),md5(random()::varchar),clock_timestamp(),md5(random()::varchar),md5(random()::varchar); + +插入时间:63.1s 55529.030 ms +``` \ No newline at end of file diff --git "a/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" "b/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" index c0d45bc..774da87 100644 --- "a/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" +++ "b/\345\270\270\351\223\255\350\277\234/\345\256\211\350\243\205mysql.md" @@ -1,12 +1,66 @@ -下载deb包 -win+r -cmd -上传deb包到linux系统 -scp deb文件的路径 root@你的ip或者域名:/要存放的位置 -安装deb包形成数据源 -dpkg deb文件名 -更新一下数据源 -apt update -安装数据库 -apt install mysql-server -然后会有设置密码 \ No newline at end of file +## 安装MySQL + +1. scp -r C:\Users\20168\Downloads\mysql-apt-config_0.8.30-1_all.deb root@192.168.92.13:/root + +2. apt install gnupg + +3. dpkg -i mysql-apt-config_0.8.29-1_all.deb + +4. apt update + +5. apt install mysql-server + +6. ``` + systemctl status mysql 查看服务状态 + ``` + +7. mysql -uroot -p : 登录 + +## 题目 + +1. #### 如果我有一个sql的文件,如何在服务器中执行,以便导入数据 + + - 上传到服务器上(记住所在路径) + - 进入MySQL,使用source 绝对路径 + +2. #### 创建和插入一个至少有1000W条记录的数据库表,无论用什么方式 + + - create databaseqq; + + use qq; + + create table t1 ( + + id int auto_increment primary key, + + Name varchar(255), + + age int + + ); + + DELIMITER $ + + create PROCEDURE kk() + + BEGIN + + DECLARE i int DEFAULT 1; + + while (i <=10000000) DO + + insert into t1 (Name,age) values (CONCAT('Name',i),RAND() * 100); + + set i=i+1; + + end while; + + END$ + + CALL kk(); + + - scp 上传到服务器上 + + - 进入数据库 + + - source 绝对路径 \ No newline at end of file -- Gitee From ea068bfde2acca766fba5361cd4f725eec89dbae Mon Sep 17 00:00:00 2001 From: chang <2624845576@qq/com> Date: Mon, 8 Jul 2024 11:40:28 +0800 Subject: [PATCH 3/4] biji --- ...72\345\255\227\347\254\246\344\270\262.md" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "\345\270\270\351\223\255\350\277\234/postgresql\347\224\237\346\210\220\351\232\217\346\234\272\345\255\227\347\254\246\344\270\262.md" diff --git "a/\345\270\270\351\223\255\350\277\234/postgresql\347\224\237\346\210\220\351\232\217\346\234\272\345\255\227\347\254\246\344\270\262.md" "b/\345\270\270\351\223\255\350\277\234/postgresql\347\224\237\346\210\220\351\232\217\346\234\272\345\255\227\347\254\246\344\270\262.md" new file mode 100644 index 0000000..acb6f5a --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/postgresql\347\224\237\346\210\220\351\232\217\346\234\272\345\255\227\347\254\246\344\270\262.md" @@ -0,0 +1,38 @@ +写一个自义函数,要求传入一个1到30到正整数,返回指定参数个的随机字符 +string_agg:连接字符串 + +create or replace function gen_hanzi(int) +returns text as $$ +declare -- 局部变量 + res text; +begin + if $1 >=1 then + select string_agg(chr(int4(random()*25)+65), '') into res from generate_series(1,$1); + return res; + end if; + return null; +end; +$$ language plpgsql strict; + +select gen_hanzi(3); +create or replace function random_string(integer) +returns text as +$$ + select upper(array_to_string(array(select substring('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' FROM (ceil(random()*62))::int FOR 1) FROM generate_series(1, $1)), '')); +$$ +language sql; + +select random_string(5); +自定义函数,要求随机返回1到30位的英文字符,最少返回一个,最多长度30 +create or replace function random_text1() +returns text as $$ +declare +res text; +begin + select string_agg(chr(int4(random()*25)+65),'') into res from generate_series(1,(select floor(random()*30+1)::int)); + return res; +end; +$$ language plpgsql; + + +select random_text1(); \ No newline at end of file -- Gitee From 1c0e0edce7a64d782b3798cd96ad9c87872e4176 Mon Sep 17 00:00:00 2001 From: changmingyuan <2624845576@qq.com> Date: Fri, 12 Jul 2024 14:18:02 +0800 Subject: [PATCH 4/4] biji --- ...37\345\222\214\345\244\207\344\273\275.md" | 16 ++++ ...20240711-shell\345\205\245\351\227\250.md" | 21 +++++ ...15\345\220\221\344\273\243\347\220\206.md" | 85 +++++++++++++++++++ ...32\344\271\211\345\207\275\346\225\260.md" | 17 ++++ 4 files changed, 139 insertions(+) create mode 100644 "\345\270\270\351\223\255\350\277\234/20240709-\346\225\260\346\215\256\345\272\223\347\232\204\350\277\230\345\216\237\345\222\214\345\244\207\344\273\275.md" create mode 100644 "\345\270\270\351\223\255\350\277\234/20240711-shell\345\205\245\351\227\250.md" create mode 100644 "\345\270\270\351\223\255\350\277\234/20240711-shell\357\274\214\345\217\215\345\220\221\344\273\243\347\220\206.md" create mode 100644 "\345\270\270\351\223\255\350\277\234/20242708-\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" diff --git "a/\345\270\270\351\223\255\350\277\234/20240709-\346\225\260\346\215\256\345\272\223\347\232\204\350\277\230\345\216\237\345\222\214\345\244\207\344\273\275.md" "b/\345\270\270\351\223\255\350\277\234/20240709-\346\225\260\346\215\256\345\272\223\347\232\204\350\277\230\345\216\237\345\222\214\345\244\207\344\273\275.md" new file mode 100644 index 0000000..f7e9a0f --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/20240709-\346\225\260\346\215\256\345\272\223\347\232\204\350\277\230\345\216\237\345\222\214\345\244\207\344\273\275.md" @@ -0,0 +1,16 @@ +### 备份: + +- 完整备份(Full Backup) 完整备份是指对整个数据库进行备份,包括所有数据和表。完整备份是最基本的备份类型,可以独立恢复数据库到某个时间点的状态。 +- 增量备份(Incremental Backup) 增量备份是指备份自上次完整备份或增量备份以来发生变化的数据。增量备份只备份自上次备份以来新增或修改的数据,因此备份文件相对较小,但恢复时需要依次应用完整备份和所有增量备份。 +- 差异备份(Differential Backup) 差异备份是指备份自上次完整备份之后发生变化的数据。与增量备份不同的是,差异备份只备份自上次完整备份以来发生变化的数据,而不是自上次备份以来的所有变化。在恢复时,只需要应用一次完整备份和最近的一次差异备份即可。 + +### mysql备份数据库 + +- 备份:mysqldump -uroot -p 数据库名称 > 备份文件名称.sql + +##### MySQL恢复数据库(mysql命令) + +mysql -u username -P [dbname] < filename.sql username 表示用户名称; dbname 表示数据库名称,该参数是可选参数。如果 filename.sql 文件为 mysqldump 命令创建的包含创建数据库语句的文件,则执行时不需要指定数据库名。如果指定的数据库名不存在将会报错; filename.sql 表示备份文件的名称 + +- 练习:直接在内网服务器上,向windows主机传递文件(PS:要求必须使用SCP命令),掌握清楚scp命令能成功的 +- scp root@目标IP地址:/目录/文件名称 . \ No newline at end of file diff --git "a/\345\270\270\351\223\255\350\277\234/20240711-shell\345\205\245\351\227\250.md" "b/\345\270\270\351\223\255\350\277\234/20240711-shell\345\205\245\351\227\250.md" new file mode 100644 index 0000000..649c543 --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/20240711-shell\345\205\245\351\227\250.md" @@ -0,0 +1,21 @@ +## postgresql备份和还原 + +- 还原:psql -h 172.16.90.13 -U postgres -d db1 -f /root/db1.sql +- 备份:pg_dump -U postgres -h 172.16.90.13 -d db -f /root/db1.sql + +## Shell 教程 + +- Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 +- Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 +- Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 + +## 运行 Shell 脚本有两种方法: + +- 1、作为可执行程序 +- chmod +x ./test.sh #使脚本具有执行权限 +- . /test.sh #执行脚本 +- 2、作为解释器参数 +- 这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如: +- /bin/sh test.sh +- /bin/php test.php +- echo 命令用于向窗口输出文本。 \ No newline at end of file diff --git "a/\345\270\270\351\223\255\350\277\234/20240711-shell\357\274\214\345\217\215\345\220\221\344\273\243\347\220\206.md" "b/\345\270\270\351\223\255\350\277\234/20240711-shell\357\274\214\345\217\215\345\220\221\344\273\243\347\220\206.md" new file mode 100644 index 0000000..352dafb --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/20240711-shell\357\274\214\345\217\215\345\220\221\344\273\243\347\220\206.md" @@ -0,0 +1,85 @@ +### 反向代理 + +- 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率 + +### 负载平衡 + +- 负载均衡(Load Balance)的主要作用是采用了负载均衡算法将请求分发到集群模式中的应用服务器上,这样即使某个后台应用服务器挂了,其他应用服务器还可以正常接收请求,实现了高可用,并且集群模式模式下的应用服务器支持纵向扩展,可以应对业务快速增长带来的高并发应用场景~ +- 原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(1次),则在失效时间fail_timeout(10秒)内不会再转发请求到该节点~ + +``` +upstream defaultReverseProxyServer{ + server 192.168.0.1:8080; + server 192.168.0.2:8080; +} +``` + +### shell + +#### 命名变量 + +``` +shell编程中,定义变量是直接定义的,没有明确的数据类型,shel允许用户建立变量存储数据,但是将认为赋给变量的值都解释为一串字符,如下 +cout=1 # 定义变量 +name="ohuohuo" # 定义变量 +echo $cout # 取变量值 +echo $name # 取变量值 +``` + +- shell中,英文符号"$"用于取变量值 + +#### 如果在变量中使用系统命令,需要加上 " `"符号(ESC键下方),如下所示 + +- DATE1=`date` +- DATE2=$(date) + +#### 使用变量的时,用英文符号"$"取变量值,对于较长的变量名,建议加上{ }花括号,帮助解释器识别变量的边界,如下 + +- name="test_name" +- echo "My name is ${name}and you" + +#### 字符串 + +- 获取字符串长度:在对变量进行取值时,使用" # "符号对字符串进行取值 +- 单引号 +- 双引号:可以在双引号中使用变量,可以在双引号中使用转移字符 + +#### shell数组 + +在 Shell 中,用括号()来定义表示数组,数组中元素用"空格"符号分割开。定义数组的一般形式为: + +#### 一般定义 + +``` +array_name=(value1 value2 value3 value4) +``` + +#### 多级定义 + +``` +array_test=( +value1 +value2 +value3 +value4 +) +``` + +#### 读取数组:和读取变量名相同,使用$符号,需要加上下标名 + +``` +valuen=${array_name[n]} +echo ${array_name[@]} # 读取所有 +``` + +#### 取得数组元素的个数 + +- length=${#array_name[@]} # 从头到尾取 + +#### 或者 + +- length=${#array_name[*]} # 取所有 + +#### 取得数组单个元素的长度 + +- lengthn=${#array_name[n]} # 取特定 \ No newline at end of file diff --git "a/\345\270\270\351\223\255\350\277\234/20242708-\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" "b/\345\270\270\351\223\255\350\277\234/20242708-\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" new file mode 100644 index 0000000..a4d532c --- /dev/null +++ "b/\345\270\270\351\223\255\350\277\234/20242708-\350\207\252\345\256\232\344\271\211\345\207\275\346\225\260.md" @@ -0,0 +1,17 @@ +BEGIN -- 生成随机的字符串总长度 rndTotal:=ceil(random()*30+1) as num; -- 循环,一次生成一个随机字符,然后合并到结果字符串中 WHILE rndTotal>0 LOOP rndIndex:=ceil(random()*length(originString)+1) as num; result:=result || substr(originString,rndIndex,1); + +``` +rndTotal=rndTotal-1; +``` + +END LOOP; + +return result; end; + +LANGUAGEplpgsql;doLANGUAGEplpgsql;do + +declare total int:=10000000; begin + + + +while total >0 LOOP insert into blog (title,content,author,flag,subtitle) (select generateRndString() s1 ,generateRndString() s2 ,generateRndString() s3 ,generateRndString() s4,generateRndString() s5); total:=total -1; END LOOP; END $$; \ No newline at end of file -- Gitee