Linux的数据库阶段

PROJ数据库丢失怎么办?3种方法快速修复‘proj_create_from_database‘报错(含Docker部署方案) 本文详细解析了PROJ数据库丢失导致的'proj_create_from_database'报错问题,提供了3种修复方法,包括环境变量配置、虚拟环境修复及Docker容器化部署方案。针对不同技术栈和部署环境,给出了具体的排查步骤和解决方案,帮助开发者快速恢复GIS应用功能。 阅读详情

数据库知识
数据库第一天 4
两台服务器4.50与4.51 4
常见软件: 4
Mysql数据类型: 5
Mysql管理环境 7
常用的SQL命令分类 7
表管理命令: 8
记录管理 8
枚举类型 11
时间函数的应用: 12
数据库第二天 13
约束条件: 13
修改表结构: 15
更改表字段类型 16
更改总表名 17
键值: 17
Primary key 复合主键: 20
删除主键 22
数据库第三天 24
搜索路径 24
数据库导入 25
数据的导出 26
管理表记录 27
匹配条件 28
高级匹配条件:(适用于 select/update/delete) 30
四则运算:+ - * / %取余 ()提高优先级 31
聚集函数: 32
限制查询结果显示行数: 33
数据库第四天 35
Grant授权: 35
授权库: 37
Root密码: 38
数据的备份: 39
完全备份: 40
binlog日志 41
差异备份: 43
分析日志: 44
数据库第五天 45
Mysql备份工具 45
1 安装percona软件 45
增量恢复: 46
恢复数据 47
删除单张表: 48
数据库进阶一天 50
主从同步: 50
4 主从同步扩展 52
配置主主结构:( 把数据库服务器192.168.4.56 和 53
数据库进阶第二天 55
数据读写分离: 55
Maxscale服务: 55
部署maxscale服务 57
配置多实例: 58
数据库进阶第三天 61
分库分表: 61
**重要配置文件说明: 63
创建连接用户: 63
数据库进阶第四天 65
部署MHA集群 65
MHA集群环境 66
管理集群命令: 67
创建故障切换脚本 68
启动管理服务 69
数据库进阶第五天 70
MHA 70
PXC集群 70
管理员登录查看状态: 72
列出可用的存储引擎: 73
Mysql锁机制 74
事务特征(ACID): 74
数据库NOSQL第一天 76
RDBMS软件: 76
部署Redis服务: 76
常用命令: 77
优化设置: 79
连接密码: 80
部署LNMP+Redis: 80
配置php支持redis 81
测试配置 82
数据库NOSQL第二天 84
Redis-trib脚本用法: 84
创建集群: 84
管理服务器设备创建集群 86
查看集群信息: 86
访问集群 87
4. 添加服务器 87
在管理主机,查看集群新消息 89
5. 添加slave角色主机到集群里 90
在管理主机,添加slave角色主机 91
移除服务器 91
数据库NOSQL第三天 93
配置主从复制: 93
配置master 93
配置哨兵服务: 94
RDB: 94
AOF 95
优化配置: 96
数据类型分类 97

数据库第一天
准备环境
两台服务器4.50与4.51
[stud@room9mysql]$scp mysql-5.7.17.tar root@192.168.4.50:/root/
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-client-5.7.17-1.el7.x86_64.rpm
[root@1 ~]# tar -xf mysql-5.7.17.tar //解包
[root@1 ~]# yum -y install mysql-community-.rpm
//安装数据库相应软件包rdbms软件,部署redis服务,常用命令,优化设置,连接密码,部署LNMP+Redis
[root@1 ~]# systemctl start mysqld
[root@1 ~]# systemctl enable mysqld
[root@1 ~]# systemctl status mysqld
[root@1 ~]# netstat -anput | grep 3306
tcp6 0 0 :::3306 :::
LISTEN 23419/mysqld
常见软件:
关系型:oracle mysql sql server db2 开源2跨平台
非关系型:redis memcache mongodb
数据库 默认端口:3306
主配置文件: /etc/my.cnf
错误日志文件: /var/log/mysqld.log
数据库目录: /var/lib/mysql
进程名:mysqld
传输协议:TCP协议
进程所有者:mysql 进程所有组:mysql
数据库信息刷新:flush privileges;
数据库密码默认长度为8 最短长度4
切换概要库:use informarion_schema
切换授权库:use mysql
切换性能结构库:use performancr_schema
切换系统元数据库:use sys;
Mysql数据类型:
定长char
变长varchar
整数型
浮点型
日期时间类型
枚举类型
[root@1 ~]# grep password /var/log/mysqld.log
2019-10-08T02:30:49.705931Z 1 [Note] A temporary password is generated for root@localhost: W1Cjw1uhvo=1
[root@1 ~]# mysql -hlocalhost -uroot -p’W1Cjw1uhvo=1’
//生成随机密码,进入mysql
mysql> alter user root@“localhost” identified by ‘123qqq…A’;
mysql> show databases;
//重新设置数据库密码
mysql> show variables like “%password%”; //查看密码变量
mysql> set global validate_password_policy=0;
//修改密码策略
mysql> set global validate_password_length=6;
//修改密码长度
mysql> alter user root@localhost identified by ‘123456’;
//直接命令行生效非永久
[root@1 ~]# vim /etc/my.cnf 永久生效(主配文件)
[mysqld]
validate_password_policy=0
validate_password_length=6
[root@1 ~]# systemctl restart mysqld
[root@1 ~]# mysql -hlocalhost -uroot -p123456
mysql> use mysql; //使用mysql库
mysql> show tables; //查看mysql表
Mysql管理环境
SQL命令不区分字母大小写;
每条SQL以;结束
默认命令不支持TAB自动补齐.
/c 终止sql命令;
常用的SQL命令分类
1.DDl 数据定义语言 如:create alter drop
2.DML数据操作语言 如:insert update delete
3.DCL 数据控制语言 如:grant revoke
4.DTL 数据事物语言 如:commit rollback savepoint
库管理命令:
库名 命名规则
仅可以使用数字.字母.下划线.不能纯数字
区分字母大小写,具有唯一性
不可使用指令关键字.特殊字符
mysql> show databases; //显示所有的库
mysql> select user(); //显示连接用户
mysql> use 库名; //切换库
mysql> select database(); //显示当前所在的库
mysql> create database 库名 //创建新库
mysql> show tables; //显示已有的表
mysql> drop database 库名 //删除库
表管理命令:
Desc 库名.表名;
Drop table 库名.表名;
Mysql>create table 库名.表名(字段名1 类型 (宽度)
字段名2 类型(宽度),…) default charset=utf8; (中文必备)
mysql> create database db1; //创建db1库
mysql>create table db1.studinfo
( name char(15),homeaddr char(20));
//创建表在db1库中两个字符字段表头name与homeaddr
mysql> use db1; //使用db1表
mysql>show tables; //查看db1库的表
mysql> desc db1.studinfo; //查看db1库的表结构
记录管理
Select * from 库名.表名; /查看表记录
Insert into 库名.表名 values(值); /插入表记录
Update 库名.表名 set 字段=值 /修改表记录
Delete From 表名; /删除表记录
mysql>insert into db1.studinfo
values (“bob”,“USA”),(“lucy”,“USA”),(“lilei”,“china”);
//写入内容三个括号代表三行分别为两列
mysql> select * from db1.studinfo; //查看表内容
mysql> update db1.studinfo set homeaddr=“bejing”;
//替换二列homeaddr所有都为 beijing
mysql> select * from db1.studinfo; //查看表改后内容
mysql> delete from db1.studinfo; //删除表中内容
mysql> create table 学生信息表(姓名 char(15) , 性别 char(2) ) default charset=utf8;
mysql> show tables;
mysql> insert into db1.学生信息表 values (“张三”,“男”);
mysql> select * from db1.学生信息表;
mysql> create table db1.t1 (class char(7), name char(15), email varchar(30)); //创建t1表 email为变长类型
mysql> show tables;
mysql> desc t1; //查表结构
mysql>insert into db1.t1
values (“nsd1907”,“bob”,“chaolinux@sina.com”);
//写入内容class,名字,与变长类型邮箱
mysql> select * from db1.t1 //查看表t1
mysql> drop table 学生信息 //删除学生信息表
mysql> create table t3 (name char(10) , age tinyint unsigned ); //创建t3表 名字 指定长度,年龄微小整数无符号范围
mysql> insert into t3 values (“bob”,-11);
ERROR 1264 (22003): Out of range value for column ‘age’ at row 1 //有unsigned不支持负值
mysql> insert into t3 values (“bob”,11); //写入信息
mysql> insert into t3 values (“bob”,256);
ERROR 1264 (22003): Out of range value for column ‘age’ at row 1 //tinyint超出范围
mysql> insert into t3 values (“bob”,255); //写入信息
mysql> select * from t3; //查看t3 表
浮点型类型
mysql> create table t4 (name char(10) ,pay float(5,2) );
//创建浮点型类型 格式:字段名 类型(总个数,小数位数)
mysql> show tables;
mysql> insert into t4 values (“john”,1000);
ERROR 1264 (22003): Out of range value for column ‘pay’ at row 1 //写入浮点型信息 超出pay float(5,2) 范围
mysql> insert into t4 values (“john”,999); //写入信息
mysql> select * from t4; //查看表信息
mysql> insert into t4 values ( “johnA”, 999.12 ); //写入信息
mysql> select * from t4; //查看表信息
日期时间类型
mysql> use db1
mysql> create table t5( name char(10), csnf year, up_time time, birthday date, party datetime);
//创建t5表,五个表头.
mysql> desc t5; //查看表结构
mysql>insert into t5
values (“bob”,2000,083000,20191120,20190101083000);
//写入五个日期字段
mysql> select * from t5; //查看t5表

枚举类型
字段名 enum(值1,值2,值n) /单选
字段名 set(值1,值2,值n) /多选
mysql> create table t6 ( name char(10),
Sex enum(“boy”,“girl”,“noboynogirl”),
likes set (“eat”,“game”,“piao”,“du”));
//创建枚举表头 enum控制多选一 likes set 多选
mysql> desc t6; //查看t6表结构
mysql> insert into t6
values (“alices”,“noboynogirl”,“game,piao”); //写入表信息
mysql> select * from t6; //查看表信息
时间函数的应用:
mysql>use db1;
mysql> show tables;
mysql> select now(); //显示当前系统时间与日期
mysql> select curtime(); //查看当前系统时间
mysql> select curdate(); //查看当前系统日期
mysql> select year(now()); //查看指定时间年
mysql> select month(now()); //查看指定时间月
mysql> select day(now()); //查看指定时间日
mysql> select date(now()); //查看指定时间日期
mysql> select time(now()); //查看指定时间 时间
mysql>insert into t5
values (“tom”,year(now()),curtime(),curdate(),now());
//写入新内容
mysql> create table t7(name char(10),meetting datetime,party timestamp);
//创建t7表 datetime无值为空timestamp无值应用现默认
mysql> desc t7; //查看t7表结构
mysql> insert into db1.t7 values
-> (“bob”,20191009112545,20191009213025);
//写入表内容
mysql> select *from t7;
//查看表信息
mysql> insert into t7(name,meetting) values(“tom”,20191224204558);
//写入两个字段 metting有值,party默认当前时间
mysql>insert into t7(name,party) values(“jim”,20171224204558);
//写入两个字段 metting无值,party有值
mysql> desc t5;
mysql> insert into t5(name ,csnf) values
-> (“john”,21),
-> (“jerry”,71),(“jack”,2071);
mysql> select * from t5;

数据库第二天
约束条件:
Null 允许为空(默认设置)
Not null 不允许为null(空)
Key 键值类型
Default 设置默认值,没有为null
Extra 额外设置
mysql>use db1;
mysql>create table t8(name char(10) not null,
-> age tinyint unsigned default 19,
-> class char(7) not null default “nsd1907”,
-> pay float(7,2) default 28000);
//创建t8表名字为定长10,不能为空,年龄为微整型,无符号默认值19,班级为定长7不能为空默认值nsd1907,支付为浮点型总个数为7,小数位为2默认值为28000.00
mysql> insert into t8(name)values(“bob”);
//使用默认值
mysql> select * from t8; //查看t8表内容
mysql> insert into t8 values(“tom”
-> ,21,“nsd1908”,28888.88);
//不使用默认值
mysql> insert into t8 values (null,28,null,30088);
ERROR 1048 (23000): Column ‘name’ cannot be null
//name字段不能为空
mysql> insert into t8 values (“jerry”,28,null,30088);
ERROR 1048 (23000): Column ‘class’ cannot be null
//class字段不能为空
mysql>insert into t8
values (“jerry”,28,“nsd1907”,30088);
//非空建立表内容
mysql> select * from t8; //查看t8表内容
mysql> create table t9(
-> name char(10) not null,
-> homeaddr char(30) not null default “”);
mysql> desc t9;
mysql> insert into t9 values (“null”,“null”);
mysql> select *from t9;
mysql> insert into t9(name) values (“tom”);
修改表结构:
添加表字段
Alter table 库名.表名 add 字段名 类型 [约束条件after | first]:
mysql> alter table db1.t1
-> add school char(15) not null default “tarena”;
mysql> desc t1;
mysql> alter table db1.t1
-> add age tinyint unsigned default 19 after name;
mysql> desc t1;
mysql> alter table db1.t1
-> add stu_num int first;
mysql> desc t1;
mysql> select *from t1;
更改表字段类型
Alter table 库名.表名 modify 字段名 类型 [约束条件 after | first];
mysql> delete from db1.t1;
mysql> alter table db1.t1
-> modify name varchar(15) not null default “”;
mysql> alter table db1.t1
-> modify name varchar(15) not null default “” after stu_num;
mysql> desc t1;
改变表字段名字
Alter table change 源字段名 新字段名
mysql> alter table db1.t1 change
->stu_num stu_id int;
mysql> alter table db1.t1 change
-> school xuexiao varchar(30) default “tedu”;
mysql> desc t1;
删除表字段
Alter table 库名.表名 drop 字段名;
mysql> alter table db1.t1 drop email;
mysql> alter table db1.t5 drop csnf;
更改总表名
Alter table 表名 rename 新表明;
mysql> alter table t9 rename school;
mysql> show tables;
批量修改表结构
mysql> alter table db1.t1
-> add qq char(11),
-> add phone char(11),
-> modify class char(9),
-> change name user varchar(15) not null default “”,
-> drop xuexiao;
mysql> desc t1;
键值:
键值类型:
Index 普通索引:
一个表中可以有多个index字段
字段值允许重复,可以赋null值
Index字段标志是MUL
Unique 唯一索引
Fulltext 全文索引
Primary key 主键:
一个表中只能有一个primary key主键.
多个字段作为主键,称为复合主键,必须一起创建.
字段值不允许重复,不允许赋null值.
主键标志PRI
主键通常与auto_increment连用
通常设置表中唯一标识的纪录的字段设置为主键
Foreign key 外键
普通索引:
Create index 索引名 on 表名(字段名); /创
Drop index 索引名 on 表名; /删
Show index from 表名 \G; 查索引
mysql> desc t3; //查看t3表结构
mysql> create index name on t3(name);
//给name设置普通索引MUL
mysql> create index age on t3(age);
//给age设置普通索引MUL
mysql> show index from t3 \G;
//显示设置索引详细信息
mysql> desc t3;
mysql> drop index age on t3; //删除age上的索引
mysql> show index from t3 \G;
↓创建新的数据库
mysql> create database db2;
mysql> create table db2.t1(
-> name char(10),
-> age int,
-> sex enum(“boy”,“girl”),
-> index(name),index(sex));
//建立新t1表设置name与sex为普通索引
mysql> desc db2.t1; //查看t1表结构
2)unique ##唯一索引,不允许有重复值,比如身份证,银行账号
3)fulltext ##全文索引,适合在进行模糊查询的时候使用
Primary key主键:
alter table 表名 字段 primary key(字段名列表);
mysql> create table t8(
-> name char(10) primary key,
-> age int,
-> class char(7));
//建立t8表设置name为主键索引
mysql> desc t8; //查看t8表结构
mysql> create table t9(
-> name char(10),age int,class char(7),primary key(name)); //等同t8表
mysql> insert into t9 values (null,19,“nsd1907”);
ERROR 1048 (23000): Column ‘name’ cannot be null
//验证设置主键索引不得为null值
mysql> insert into t9 values (“bob”,19,“nsd1907”);
//在t9写入表内容
mysql> insert into t9 values (“bob”,20,“nsd1908”);
ERROR 1062 (23000): Duplicate entry ‘bob’ for key ‘PRIMARY’
//验证主键索引name不得重复
Primary key 复合主键:
alter table 表名 字段 primary key(多字段名列表);
mysql> create table pay(
-> name char(10),class char(7),
-> pay enum(“yes”,“no”),
-> primary key(name,class,pay));
//创建pay表同时设置复合主键(name,class与pay)验证不得三段重复,依然可以写入.
mysql> desc pay; //查看pay表结构
mysql> insert into db2.pay values (
-> “bob”,“nsd1907”,“yes”);
mysql> insert into db2.pay values (
-> “bob”,“nsd1907”,“no”);
mysql> insert into db2.pay values (
-> “bob”,“nsd1908”,“yes”);

mysql> select *from pay; //查看pay表内容
mysql> insert into db2.pay
values ( “bob”,“nsd1908”,“yes”);
ERROR 1062 (23000): Duplicate entry ‘bob-nsd1908-yes’ for key ‘PRIMARY’
//验证同时三个字段建立报错
主键与auto_increment连用:
mysql> create table db2.t3(
-> id int primary key auto_increment,
-> name char(10),age tinyint unsigned,
-> class char(7) default “nsd1907”);
mysql> desc t3;
mysql> insert into t3(name,age) values(“bob”,19);
mysql> select *from t3;
mysql> insert into t3(name,age) values(“tom”,16);
mysql> insert into t3(name,age) values(“john”,27);
mysql> select *from t3;
mysql> select *from t3 where id=2;
mysql> insert into t3 values(6,“lili”,18,“nsd1906”);
mysql>insert into t3 values(null,“hanmem”,28,“nsd1906”);
mysql> select *from t3;
删除主键
mysql> alter table 库名.表名 drop primary key;
mysql> alter table t3 modify id int not null;
//改变自增长将其去掉
mysql> alter table t3 drop primary key;
//删除主键
添加主键
在已有表里添加主键
Alter table 表名 add primary key(字段名);
创建复合主键
Alter table 表名 add primary key(字段名列表) ;
mysql> alter table db2.pay add primary key(name,class,pay);
mysql> alter table t1 add stu_num tinyint primary key auto_increment first
外键的使用
Create table 表名( 字段名列表,foreign key(字段名) references 表名(字段名) #指定外键 on update cascade #同步更新 on delete cascade #同步删除 )engine=innodb; #指定存储引擎
;
mysql> create table db2.yg(yg_id int primary key auto_increment,yg_name char(10)
-> )engine=innodb;
mysql> insert into db2.yg(yg_name)
-> values(“bob”),(“bob”),(“tom”),(“lili”);
mysql> select *from db2.yg;
mysql> create table db2.gz(
-> gz_id int ,gz float(7,2),
-> foreign key(gz_id) references yg(yg_id)
-> on update cascade on delete cascade
-> )engine=innodb;
mysql> show create table gz \G;
mysql> insert into gz values (1,25000);
mysql> insert into gz values (2,35000);
mysql> insert into gz values (3,45000);
mysql> insert into gz values (4,55000);
mysql> select *from gz;
mysql> update db2.yg set yg_id=8 where yg_id=1;
//单独更改一个字段单个内容
mysql> delete from yg where yg_id=2;
删除外键
mysql> show create table gz\G;
mysql> alter table gz drop foreign key gz_ibfk_1;

数据库第三天
搜索路径
Show variables like “secure_file_priv”; //查看
目录:/var/lib/mysql-files/
数据库导入
Load data infile “目录名/文件名”
Into table 库名.表名
Fields terminated by “分隔符”
Lines terminated by “\n”;
注意事项:字段分隔符要与文件一致
表字段类型和字段个数要与文件匹配
导入数据时指定文件的绝对路径.
#mkdir /myload
#chown mysql /myload
#vim /etc/my.cnf
[mysqld]
Secure_file_priv=”/myload”
#systemctl restart mysqld
mysql> system cp /etc/passwd /myload/
//拷贝passwd到myload目录
mysql> system ls /myload
//查看myload目录
mysql> create database db3;
mysql> use db3;
mysql> create table user (
-> name char(50), password char(1),
-> uid int, gid int, comment char(150),
-> homedir char(150), shell char(100));
//建立user表
mysql> desc user; //查看表结构
mysql> load data infile “/myload/passwd” into table db3.user fields terminated by “:” lines terminated by “\n”;
mysql> alter table db3.user add id int primary key auto_increment first;
mysql> select * from user;
mysql> select *from user where id =1;
数据的导出
Select命令 into outfile “目录名/文件名”;
//多行数据清晰显示
Select命令 into outfile “目录名/文件名”
Fields terminated by “分隔符”; (任意符号都可做分隔符)
//多行数据以分隔符进行显示
Select 命令 into outfile “目录名/文件名”
Fields terminated by “分隔符”(任意符号都可做分隔符)
Lines terminated by “分行符” 多行数据合并一行
注意事项:
导出数据行数由SQL查询决定.
导出的是表记录,不包括字段名.
自动创建存储数据的文件.
存储数据文件,具有唯一性.

管理表记录
Insert into
Insert into 表名 values (字段值列表); //添加一条纪录
Insert into 表名 values(字段值列表),(字段值列表);
查询表记录:
Select 字段1…,字段N from 库名.表名;
Select 字段1…,字段N from 库名.表名 where 条件式;
更新表记录:
批量更新:
update 库名.表名 set 字段名=值,字段名=值,…;
条件匹配更新:
Update 库名.表名 set 字段名=值,字段名=值,…where 条件式;
mysql> update user set password=“a” , comment=“student”;
mysql> select password ,comment from user;
mysql> update user set password=“x”, comment=“root” where id =1;
mysql> select id , password ,comment from user;
删除表记录
Delete from 库名.表名 where 条件格式;
mysql> delete from db2.yg;
mysql> delete from db3.user where id >=22;

匹配条件
基本匹配条件:(适用于 select/update /delete)
数值比较:= != > >= < <=
mysql> select * from user where uid =2 ;
mysql> select name ,uid ,gid from user where uid =gid;
mysql> select from user where id <=10;
字符比较:= !=
mysql> select name from user where name= “mysql”
mysql> select name ,shell from user where shell !="/bin/bash";
范围内比较:
in(在…里)
mysql>select * from wg.t3 where shell
in ("/bin/bash","/sbin/nologin");
not in(不在…里)
select * from wg.t3 where shell
not in ("/bin/bash","/sbin/nologin");
Between 数字 and 数字 (在…之间)
select * from wg.t3 where id between 1 and 10;
Distinct字段名
select distinct shell from wg.t3;
is null 空 is not null 非空
mysql> select id , name from user where name is null;
mysql> select id , name from user where name is not null;
逻辑匹配:or 逻辑或 and 逻辑与 !或not 逻辑非
mysql> select name ,uid , gid, shell from user
-> where name =“root” and uid =100 and gid =100;
mysql> select name ,uid , gid, shell from user where name =“root” or uid =100 or gid =100;
mysql> select name ,uid from user where uid in (1,10,25);
mysql> select name from user
->where name in (“mysql”,“bin”,“httpd”,“root”);
mysql> select name , shell from user
->where shell not in ("/bin/bash","/sbin/nologin");
mysql> select * from user where id between 10 and 20 ;
mysql> select distinct gid from user;
mysql> select distinct shell from user;
高级匹配条件:(适用于 select/update/delete)
1.模糊查询 like ‘通配符’
2._ 表示一个字符
3.% 表示0~n个字符
mysql> select name from user where
name like ‘____’;
mysql> select name from user where
name like “%a%”;
mysql> select name from user where
name like “%_____%”;
正则表达式: ^以开头 以 结 尾 . 一 个 [ ] 范 围 ∗ 多 个 ∣ 或 W h e r e 字 段 名 r e g e x p ‘ 正 则 表 达 式 ’ m y s q l > s e l e c t n a m e f r o m u s e r w h e r e n a m e r e g e x p ′ a ∣ t 以结尾 .一个 []范围 *多个 | 或 Where 字段名 regexp ‘正则表达式’ mysql> select name from user where name regexp '^a|t 以结尾.一个[]范围∗多个∣或Where字段名regexp‘正则表达式’mysql>selectnamefromuserwherenameregexp′a∣t'; //以a开头t结尾的正则
mysql> select name from user where
name regexp ‘1’; //以abc任意范围开头正则
mysql> select name from user where
name regexp ‘^… ′ ; / / 三 字 符 的 正 则 m y s q l > s e l e c t n a m e f r o m u s e r w h e r e n a m e r e g e x p ′ . . '; //三字符的正则 mysql> select name from user where name regexp '^.. ′;//三字符的正则mysql>selectnamefromuserwherenameregexp′..’; //两个的正则
四则运算:+ - * / %取余 ()提高优先级
mysql> select name ,uid from user where uid %2 =0;
mysql> update user set uid=uid+1 where id <=5;
mysql> select name ,uid from user where id <=5;
mysql> update user set uid=uid-1 where id <=5;
mysql> select name ,uid from user where id <=5;
mysql> show databases;
mysql> use db3;
mysql> select name ,2019 - age csnf from user
-> where name =“root”;
mysql> select name , 2019 -age csnf from user;
mysql> select name ,uid,gid, uid+gid he , (uid+gid)/2 pjz from user where name=“bin”;
聚集函数:
Avg(字段名) //统计字段平均值
Sum(字段名) //统计字段之和
Min(字段名) //统计字段最小值
Max(字段名) //统计字段最大值
Count(字段名) //统计字段值个数
mysql> select count(
) from user;
mysql> select count(name) from user where shell != “/sbin/nologin”;
mysql> select avg(uid) from user;
mysql> select sum(uid) from user;
mysql> select min(uid) from user;
mysql> select max(uid) from user;
mysql> select max(uid) from user where id<=10;
查询结果排序:
Select字段from库名.表名order by 字段名 [asc | desc ]; //asc升序 desc降序
mysql> select name ,uid from user where id <=15 order by uid ; //默认排序升序
mysql> select name ,uid from user where id <=15 order by uid desc; //查询结果排序降序
查询结果分组:
Select 字段 from 库名.表名 group by 字段名;
mysql> select gid from user group by gid;
查询结果过滤:在查找出来的记录里再查一遍
Select 字段 from 库名.表名 where 条件
having 条件表达式;
mysql> select name from user where uid > 5
-> having name =“root”;
mysql> select name from user where uid > 5 having name =“mysql”;
mysql> select name from user where uid >5
-> having name in (“mysql”,“shutdown”);
限制查询结果显示行数:
Select 字段名 from user limit 数字;
Select 字段名 from user limit 数字1,数字2;
Mysql> select name,uid,gid from user limit 3;
Mysql> select name,uid,gid from user limit 3,3;
Mysql管理工具
常见的mysql管理工具:
Mysql 命令行 跨平台
Mysql-workbench 图形 跨平台
Mysql-front 图形 windows
Navicat 图形 windows
phpMyAdmin 浏览器 跨平台
[root@1 ~]# yum -y install httpd php php-mysql
[root@1 ~]# systemctl start httpd
[root@1 ~]# systemctl enable httpd
[root@1~]#tar -xf phpMyAdmin
-2.11.11-all-languages.tar.gz
[root@1 ~]# mv phpMyAdmin-2.11.11-all-languages /var/www/html/phpmyadmin
[root@1 ~]# cd /var/www/html/phpmyadmin/
[root@1 phpmyadmin]# cp config.sample.inc.php config.inc.php
[root@1 phpmyadmin]# vim config.inc.php

数据库第四天
用户授权:在数据库服务器上添加新的链接用户.
Grant 权限列表 on 库名 to 用户名@”客户端地址”
Identified by “密码” //授权用户密码 with grant option; //有授权权限,可选项
[root@1 ~]# mysql -uroot -p123456
mysql> grant all on db4.* to yaya@"%" identified by “123qqq…A”;
[root@2 ~]# mysql -h192.168.4.50 -uyaya -p123qqq…A;
mysql> select user(); 51虚拟机
mysql> select user(); 50虚拟机
Grant授权:
权限列表:

  • all /所有权限
    -usage //无权限
  • select, update,insert //个别权限
  • select,update(字段1,…字段N) //指定字段
    库名:
  • . //所有库所有表
  • 库名.* //一个库
  • 库名.表名 //一张表
    客户端地址:
    % //所有主机
    192.168.4.% //网段内的主机
    192.168.4.X ///一台主机
    Localhost //数据库服务器本机
    Mysql > grant all on . to mydba@”%” identified
    By “123qqq…A” with grant option;
    //对所有库,所有表有完全权限
    Mysql >grant select on db3.user to admin@”192.168.4.%” identified by “123qqq…A”
    //grant授权在相应网段的相应权限
    Mysql >grant select on db3.user to admin2@”localhost” identified by “123qqq…A”
    //对本机db3库表给予授权查,更,插,删
    Select user(); //显示登录用户名及客户端地址
    Show grants; //用户显示自身访问权限
    Show grants for 用户名@”客户端地址”
    //查看已有授权用户权限
    Set password=password(“密码”)
    授权用户连接后修改连接密码
    Set password for 用户名@”客户端地址” =password(“密码”); //管理员重置授权用户链接密码
    Drop user 用户名@”客户端地址”; //删除授权用户
    授权库:
    User表 记录已有的授权用户及权限
    Db表 记录已有授权用户对数据库的访问权限
    Tables_priv表 记录已有授权用户对表的访问权限
    Columns_priv表 记录已有授权用户对字段的访问权限
    撤销权限:
    Revoke 权限列表 on 库名.表名 From 用户名@
    ”客户端地址”;
    mysql> show grants for admin2@localhost;
    //查看admin2有那些权限
    mysql> revoke update,delete on db3.* from admin2@localhost;
    //撤销db3表有权限admin2的更新删除权限
    mysql> show grants for admin2@localhost;
    //查看撤销结果是否撤销成功
    mysql>select *from mysql.db where user=“admin2”\G;
    //查看表记录是否更新
    Root密码:
    重置root密码:

恢复root密码:
1.停止mysql服务程序
2.跳过授权表启动mysql服务程序
3.修改root密码
4.以正常方式重启mysql服务程序
[root@mysql51 ~]# systemctl stop mysqld.service
[root@mysql51 ~]# vim /etc/my.cnf
[mysqld]
…
Skip-grant-tables
[root@mysql51 ~]# systemctl restart mysqld
[root@mysql51 ~]# mysql
mysql> update mysql.user set authentication_string=password(“123abc…A”)
-> where
-> user=“root” and host=“localhost”;
mysql> flush privileges;
mysql> quit
重置root密码
[root@mysql51 ~]#mysqladmin -uroot -p
password “新密码”
Enter password://输入旧密码
数据的备份:
物理备份及恢复:
Cp -r /var/lib/mysql 备份目录/mysql.bak
Scp -r /var/lib/mysql root@”客户机ip” :/tmp
恢复操作
Cp -r 备份目录/mysql.bak /var/lib/mysql/
Chown -R mysql:mysql /var/lib/mysql
[root@mysql50 ~]# cp -r /var/lib/mysql /root/mysql.bak
[root@mysql50 ~]# scp -r /root/mysql.bak/ root@192.168.4.51:/tmp/
[root@mysql51 ~]# systemctl stop mysqld.service
[root@mysql51 ~]# rm -rf /var/lib/mysql
[root@mysql51 ~]# cp -r /tmp/mysql.bak /var/lib/mysql
[root@mysql51 ~]# chown -R mysql:mysql /var/lib/mysql
[root@mysql51 ~]# systemctl start mysqld
[root@mysql51 ~]# systemctl status mysqld.service
[root@mysql51 ~]# mysql -uroot -p123456
完全备份:
Mysqldump -uroot -p密码 库名 > 目录/xxx.sql
备份时库名标识方式:
–all-databases 或 -A //所有库
-数据库名 //单个库
-数据库名 表名 //单张表
-B 数据库1 数据库2 //多个库
[root@mysql50 ~]# mkdir /mybak //存放备份文件
[root@mysql50 ~]# mysqldump -uroot
-p123456 -A > /mybak/all.sql //完全备份所有表
[root@mysql50 ~]# mysqldump -uroot
-p123456 db2 > /mybak/db2.sql //完全备份db2表
[root@mysql50 ~]# ls /mybak/
[root@mysql50 ~]# cd /mybak/
[root@mysql50 mybak]# scp db2.sql root@192.168.4.51:/root/ //传入恢复主机
[root@mysql51 ~]# mysql -uroot -p123456
mysql> drop database db2;
mysql> create database db2; //模拟误删除
完全恢复:
Mysql -uroot -p密码 [库名] < 目录/xxx.sql
[root@mysql51 ~]# mysql -uroot -p123456 db2 < /root/db2.sql //db2表完全恢复
[root@mysql50 mybak]# scp all.sql root@192.168.4.51:/root/
[root@mysql51 ~]# mysql -uroot -p123456 < /root/all.sql //全部完全恢复替换掉
逻辑备份:
Mysqldump //备份命令
Mysql //恢复命令
增量备份:备份上次备份后,所有新产生的数据
binlog日志
定义:1.也称作 二进制日志
2.mysql服务日志文件的一种
3.记录除查询之外的所有sql命令
4.可用与数据备份和恢复
5.配置mysql主从同步的必要条件
启用日志:
Server_id=数字 (指定id值(1-255)
Log_bin[=目录名/文件名] 启用binlog日志
Max_binlog_size=数值m 指定日志文件容量,默认1G
Vim /etc/my.cnf
[mysqld]
…
Log_bin
Server_id=100
Systemctl restart mysqld
]# mysql -uroot -p123456
mysql> show master status;
mysql> create database db5;
mysql> create table db5.t1(id );
mysql> insert into db5.t1 values(100);
mysql> insert into db5.t1 values(200);
mysql> insert into db5.t1 values(300);
mysql> show master status;
mysql> select * from db5.t1;
手动生成新的日志文件
1.systemctl restart mysqld
2.mysqldump -uroot -p123456
–flush-logs db5 > /root/db5.sql
3.mysql -uroot -p123456 -e “flush logs”
4.mysql> flush logs
删除已有的日志文件
mysql> purge master logs to “plj.000004” ;
mysql> reset master ;

rm -rf /logdir/*

使用日志恢复数据

mysqlbinlog 日志文件 | mysql -uroot -p密码

差异备份:
备份完全备份后,所有新产生的数据
分析日志:
查看日志当前记录格式
Mysql>show variables like “binlog_format”;
三种记录方式:
1.Statement //报表模式
2.Row //行模式
3.Mixed //混合模式
修改日志记录格式:

vim /etc/my.cnf

[mysqld]
binlog_format=“mixed”

systemctl restart mysqld

mysql> show variables like “binlog_format”
分析日志:
Mysqlbinlog [选项] binloh 日志文件名
–start-datetime=”yyyy-mm-dd hh:mm:ss” 起始时间
–stop-datetime=”yyyy-mm-dd hh:mm:ss” 结束时间
–start-position=数字 起始偏移量
–stop-position=数字 结束偏移量
恢复数据:
格式:mysqlbinlog 日志文件 | mysql -uroot -p密码
#cd /var/lib/mysql
#mysqlbinlog mysql-bin.000001 | mysql -uroot -p123456

数据库第五天
Mysql备份工具
物理备份缺点:
跨平台性差
备份时间长.冗余备份.浪费存储空间
Mysqldump备份缺点
效率较低,备份和还原速度慢,锁表
备份过程中,数据插入和更新操作被阻塞
1 安装percona软件
innobackupex 命令的常用选项
–user 用户名 --host 主机名
–password 密 码 --no-timestamp 不用时间轴
–apply-log 准备恢复数据 --export 导出表信息
–import 导入表空间 --copy-back 拷贝数据
–redo-only 日志合并
完全备份与恢复:
Innobackupex --user 用户名 --password 密码 备份目录名 --no-timestamp
[root@host50 ~]#innobackupex --user
root --password 123456 /allbak --no-timestamp
[root@host50 ~]# ls /allbak
Innobackupex --apply-log 目录名 //准备恢复数据
Innobackupex --copy-back 目录名 //恢复数据
增量备份:
Innobackupex --user用户名 --password 密码
–incremental 增量目录 --incremental-basedir=
目录名 --no-timestamp
增量恢复:
Innobackupex --apply-log --redo-only 目录名
–incremental-dir=目录名 //准备恢复数据
Innobackupex --copy-back 目录名 //恢复数据
必须先有一次备份,通常是完全备份.周一完全备份,周二到周日增量备份.
[root@mysql50 ~]# innobackupex --user root --password 123456 /zhouyi --no-timestamp
//周一做完全备份
[root@mysql50 ~]# ls /zhouyi
添加记录
[root@mysql50 ~]# mysql -uroot -p123456
mysql> insert into db5.a values(301);
mysql> insert into db5.a values(302);
mysql> insert into db5.a values(908);
[root@mysql50 ~]# innobackupex --user root --password 123456 --incremental /new1dir --incremental-basedir=/zhouyi --no-timestamp
//周二做增量备份
[root@mysql50 ~]# ls /new1dir
添加记录
mysql> insert into db5.a values(401);
mysql> insert into db5.a values(888);
[root@mysql50 ~]# innobackupex --user root --password 123456 --incremental /new2dir --incremental-basedir=/new1dir --no-timestamp
//周三做增量备份
[root@mysql50 ~]# ls /new2dir
恢复数据
完全恢复:
[root@mysql51 ~]# systemctl stop mysqld.service
[root@mysql51 ~]# rm -rf /var/lib/mysql/*
[root@mysql51 ~]# innobackupex --apply-log --redo-only /tmp/zhouyi/
[root@mysql51 ~]# innobackupex --apply-log --redo-only /tmp/zhouyi/ --incremental-dir=/tmp/new1dir
//合并
[root@mysql51 ~]# innobackupex --apply-log --redo-only /tmp/zhouyi/ --incremental-dir=/tmp/new2dir
[root@mysql51~]# innobackupex --copy-back /tmp/zhouyi/
[root@mysql51 ~]# chown -R mysql:mysql /var/lib/mysql
[root@mysql51 ~]# systemctl start mysqld
[root@mysql51 ~]# mysql -uroot -p123456

删除单张表:
删除表空间
mysql> alter table db5.b discard tablespace;
导出表信息
]# innobackupex --apply-log --export /tmp/allbak
拷贝表信息文件到数据库目录下
]# cp /tmp/allbak/db5/b.{cfg,exp,ibd} /var/lib/mysql/db5/
修改表信息文件的所有者及组用户为mysql
]# chown mysql:mysql /var/lib/mysql/db5/b.*
导入表空间
mysql> alter table db5.b import tablespace;
删除数据库目录下的表信息文件
mysql> system rm -rf /var/lib/mysql/db5/b.cfg
mysql> system rm -rf /var/lib/mysql/db5/b.exp
查看表记录
mysql> select * from db5.b;

数据库进阶一天
主从同步:
实现数据自动同步的服务结构
主服务器:接受客户端访问链接
从服务器:自动同步主服务器数据
主从同步原理:
主服务器master
启用binlog日志
从服务器slave
设置server_id
确保与主服务器数据一致
指定主库信息
启动slave程序
常看状态信息
配置主服务器
#vim /etc/my.cnf
[mysqld]
Log_bin=日志名 启用binlog日志
Server_id=id值 指定服务器ID号
#sysetmctl restart mysqld
授权用户:
Mysql> grant replication slave on . to repluser
@”%” identified by ‘123qqq…A’;
51:
]#mysqldump -uroot -p123456 --master-data db5 > /root/db5.sql
]#scp /root/db5.sql root@192.168.4.52:/root/
52:
mysql> create database db5;
]# mysql -uroot -p123qqq…A db5 < /root/db5.sql
mysql> select count(
) from db5.a;
mysql> select count(
) from db5.b;
]# grep master51 /root/db5.sql

mysql>change master to master_host=“192.168.4.51” ,
master_user=“repluser” ,
master_password=“123qqq…A” ,
master_log_file=“master51.000001” , master_log_pos=441 ;
mysql> start slave ;
mysql> show slave status\G;
Master_Host: 192.168.4.51
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_IO_Running: Connecting
Last_IO_Error: error connecting to master ‘repluser@192.168.4.51:3306’ - retry-time: 60 retries: 49

Slave_SQL_Running: No
Last_SQL_Error:

stop slave ;
change master to 选项目=值 , 选项目=值 ;
start slave ;
show slave status \G;

3 验证配置

4 主从同步扩展
配置一主多从
配置主从从

[root@53 ~]# mysql -uroot -p123qqq…A -e ‘grant all on gamedb.* to yaya88@"%" identified by “123qqq…A”’

[root@50 ~]# mysql -h192.168.4.53 -uyaya88 -p123qqq…A
mysql> create database gamedb;
mysql> create table gamedb.t1 ( id int);
mysql> insert into gamedb.t1 values(100);
mysql> select * from gamedb.t1;

[root@50 ~]# mysql -h192.168.4.54 -uyaya88 -p123qqq…A -e ‘select * from gamedb.t1’

[root@50 ~]# mysql -h192.168.4.55 -uyaya88 -p123qqq…A -e ‘select * from gamedb.t1’

配置主主结构:( 把数据库服务器192.168.4.56 和 192.168.4.57 配置为主主结构)
修改复制模式?
主服务器修改为半同步复制模式

从服务器修改为半同步复制模式
1 命令行加载模块
mysql> show variables like ‘have_dynamic_loading’; 查看
mysql> install plugin rpl_semi_sync_master SONAME “semisync_master.so”;
mysql> install plugin rpl_semi_sync_slave SONAME “semisync_slave.so”;
mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like ‘%semi%’;
2 命令行启用模块
mysql> set global rpl_semi_sync_slave_enabled=1;
mysql> set global rpl_semi_sync_master_enabled=1;
mysql> show variables like “rpl_semi_sync_%_enabled”;
3 修改配置文件永久有效
]# vim /etc/my.cnf
[mysqld]
plugin-load= “rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so”
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
数据库进阶第二天
数据读写分离:
原理:有mysql代理面向客户端提供服务
收到sql写请求时,交给master服务器处理
收到sql写请求时,交给slave服务器处理
构建思路:
1.确保一主一从结构
2.部署mysql代理服务器
装包,修改配置文件,启动服务
3.测试配置
客户端链接代理服务访问数据
Maxscale服务:
部署maxscale服务:
[root@mysql57 ~]# systemctl stop mysqld.service
[root@mysql57~]#systemctl disable mysqld
修改配置/etc/maxscale.cnf
[maxscale] //定义线程个数
Threads=1
[server1] //定义数据库服务器
Type=server
Address =192.168.4.51 //master主机ip地址
Port=3306
Protocol=mysqlbackend

[server2]
Type=server
Address =192.168.4.52 //slave主机ip地址
Port=3306
Protocol=mysqlbackend

[MySQL Monitor] //定义要监视的数据库节点
type=monitor
module=mysqlmon
servers=server1, server2 //主,从数据库的主机名
user=maxscalemon //监控用户(自定义)
passwd=123qqq…A
monitor_interval=10000

[Read-Write Service] //定义读写分离的数据库节点
type=service
router=readwritesplit
servers=server1, server2 //主从数据库的主机名
user=maxscalerouter //路由用户(自定义)
passwd=123qqq…A //密码
max_slave_connections=100%

[Read-Write Listener] //定义读写分离服务端口号
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006

[MaxAdmin Listener] //定义管理服务端口号
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=4016
部署maxscale服务
在主/从服务器创建授权用户
Mysql> grant replication slave,replication client on . to maxscalemon@’%’ identified by ‘123qqq…A’
//创建监控用户
Mysql> grant select on mysql.* to maxscalerouter@ ‘%’ identified by ‘123qqq…A’; //创建路由用户
启动服务:
#maxscale -f /etc/maxscale.cnf
#netstat -anput | grep maxscale
#kill -9 PID号
测试配置:
代理服务器访问:
#maxadmin -uadmin -pmariadb -P端口 list servers
//查看服务器列表
客户端链接代理访问数据
#mysql -h服务地址 -P端口 -u用户名 -p密码
Mysql多实例:
配置多实例:
修改目录名:
Mv 数据目录 /usr/local/mysql
#yum -y install libaio
#useradd mysql
#tar -zxvf mysql-5.7.20…tar.gz
#mv mysql-5.7.20…tar.gz
修改PATH路径
#PATH=/usr/local/mysql/bin:KaTeX parse error: Expected 'EOF', got '#' at position 6: PATH #̲vim /etc/bashrc…PATH

主配置文件/etc/my.cnf
[mysqld_multi] //启用多实例

mysqld=/usr/local/mysql/bin/mysqld_safe
//指定进程文件
mysqladmin = /usr/local/mysql/bin/mysqladmin
//指定管理命令路径
user = root //指定进程用户
[mysqld1] //实例进程名称
port = 3307 //端口号
datadir = /dir1 //数据库目录,手动创建
socket = /dir1/mysqld1.sock
//指定sock文件的路径和名称
pid-file = /dir1/mysqld1.pid //进程pid号文件位置
log-error = /dir1/mysqld1.err //错误日志位置
启动服务
Mysqld_multi start 实例编号
停止服务
Mysqld_multi --user=root --password=密码 stop 实例编号
连接多实例
Mysql -uroot -p”密码’ -S sock文件

数据库进阶第三天
[root@mysql56~]# tar -xf Mycat-server-1.6-
RELEASE-20161028204710-linux.tar.gz
[root@mysql56 ~]# mv mycat/ /usr/local/
[root@mysql56 ~]# ls /usr/local/mycat/
分库分表:
水平分割,垂直分割,
横向切分,纵向切分
分片规则:
Mycat支持提供10种分片规则
1.枚举法:sharding-by-intfile
2.固定分片: rule1
3.范围约定: auto-sharding-long
4.求模法: mod-long
5.日期列分区发: sharding-by-date
6.通配取模: sharding-by-pattern
7.ASCII码求模通配: sharding-by-prefixpattern
8.编程指定:sharding-by-substring
9.字符串拆分hash解析sharding-by-stringhash
10.一致性hash sharding-by-murmur
部署mycat服务:
#yum -y install java-1.8.0-openjdk /装jdk
#tar -xf Mycat-server-1.6-RELEASE-
20161028204710-linux.tar.gz /装mycat
#mv mycat/ /usr/local/ /移动到/usr/local
#ls /usr/local/mycat/ /查目录
#cd conf
2.2 修改文件
2.2.1 定义客户端连接mycat服务的用户 server.xml
2.2.2 配置数据分片 schema.xml
]#sed -i ‘56,77d’ /usr/local/mycat/conf/schema.xml
]# sed -i ‘39,42d’ /usr/local/mycat/conf/schema.xml
]# sed -i ‘16,18d’ /usr/local/mycat/conf/schema.xml
]# sed -i ‘45,47d’ /usr/local/mycat/conf/schema.xml
]# sed -i ‘43d’ /usr/local/mycat/conf/schema.xml
目录结构:ls /usr/local/mycat/
Bin //mycat命令
Catlet //扩展功能
Conf //配置文件
Lib //mycat使用的jar包
Logs //mycat启动日志和运行日志
Wrapper.log //mycat服务启动日志
Mycat.log //记录sql脚本执行后的报错内容
**重要配置文件说明:
Server.xml //设置连接账号及逻辑库
Schema.xml //配置数据分片
Rule.xml //分片规则
其他文件 //函数调用文件
创建连接用户:
/usr/local/mycat/conf/server.xml
定义客户端mycat服务的用户

配置数据分片:
定义分片的表
… //定义分片信息

.......
//定义表 Name //逻辑库名或逻辑表名 dataNode //指定数据节点名 rule //指定使用的分片规则 type=global //数据不分片存储

定义数据节点
<dataNode 选项=值,…/> //定义数据节点
Name //数据节点名
Datahost //数据库服务器主机名
Database //数据库名
<dataNode name=”dn1” datahost=”mysql53” database=”db1”
<dataNode name=”dn2” datahost=”mysql54” database=”db2”
<dataNode name=”dn3” datahost=”mysql55” database=”db3”

数据库进阶第四天
集群定义:多台服务一起提供相同的服务
集群类型:LB HA HPC
部署过那些集群:LB HA
使用的是什么软件: LVS 、 Nginx 、Haproxy 、keepalived
部署MHA集群
2.1 配置管理主机192.168.4.57
配置ssh免密认证登录
#ssh-keygen
#ssh-copy-id root@192.168.4.X
配置一主多从
51主:
#vim /etc/my.cnf
[mysqld]
Server_id=51
Log-bin=master51
#systemctl restart mysqld
Mysql> grant replication slave on . to repluser@”%” identified by ‘123qqq…A’;
Mysql> show master status;
52.53从
#vim /etc/my.cnf
[mysqld]
Server_id=52
#systemctl restart mysqld
Mysql>change master to
Master_host=’192.168.4.51’,
Master_user=’repluser’,
Master_password=’123qqq…A’,
Master_log_file=”master51.000001”,
Master_log_pos=441;
53从同步 查看主值进行写入
MHA集群环境
配置ssh免密登录
安装依赖包
配置一主多从结构
1 安装mha软件

yum -y install perl-ExtUtils-*

yum -y install perl-CPAN*

#yum -y install mha4mysql-
node-0.56-0.el6.noarch.rpm

tar -zxf mha4mysql-manager-0.56.tar.gz

cd mha4mysql-manager-0.56

perl Makefile.pl

make

make install

管理集群命令:
#ls /root/perl5/bin/masterha_*

2 创建主配置文件app1.cnf
]# mkdir /etc/mha
]# cp mha4mysql-manager-0.56/samples/conf/app1.cnf /etc/mha/
]# vim /etc/mha/app1.cnf
[server default] //管理服务的默认配置
manager_workdir=/etc/mha
manager_log=/etc/mha/manager.log //工作目录
master_ip_failover_script=/etc/mha/master_ip_failover
//故障切换脚本
Ssh_user=root //访问ssh服务用户
ssh_port=22 //ssh服务端口

	Repl_user=repluser					//主服务器数据同步授权用户
	repl_password=123qqq...A			//密码
	
	User=root							//监控用户
	password=123qqq...A				//密码
	[server1]							 //定义1台数据库服务器
	hostname=192.168.4.51			//服务器ip地址
	port=3306							//服务端口
	candidate_master=1				//竞选主服务器

	[server2] 							//定义2台数据库服务器
	hostname=192.168.4.52		
	port=3306
	candidate_master=1

	[server3] //定义3台数据库服务器
	hostname=192.168.4.53
	port=3306
	candidate_master=1
	:wq

创建故障切换脚本
[root@mgm57 ~]# cp mha-soft-student/master_ip_failover /etc/mha/
[root@mgm57 ~]#
[root@mgm57 ~]# chmod +x /etc/mha/master_ip_failover
[root@mgm57 ~]#
[root@mgm57 ~]# vim /etc/mha/master_ip_failover
my $vip = “192.168.4.100/24”; //定义vip地址
my $key = “1”; //定义地址编号
my s s h s t a r t v i p = “ / s b i n / i f c o n f i g e t h 0 : ssh_start_vip = “/sbin/ifconfig eth0: sshs​tartv​ip=“/sbin/ifconfigeth0:key $vip”;
//绑定vip地址
my s s h s t o p v i p = “ / s b i n / i f c o n f i g e t h 0 : ssh_stop_vip = “/sbin/ifconfig eth0: sshs​topv​ip=“/sbin/ifconfigeth0:key down”;
//释放vip地址

配置数据库服务器
把vip地址手动部署在当前的主服务器51 上
host51~]# ifconfig eth0:1 192.168.4.100/24
host51~]# ifconfig eth0:1

在所有数据库服务器上安装mha_node包
]#yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm

在所有数据库服务器上做授权用户
mysql> grant all on . to root@"%"
identified by “123qqq…A”; //监控用户
Mysql> grant replication slave on . to repluser@’%’ identified
By ‘123qqq…A’;

配置主服务器,修改数据库服务运行参数

vim /etc/my.cnf

[mysqld]
plugin-load = “rpl_semi_sync_master=
semisync_master.so;rpl_semi_sync_slave=semisync_slave.so”
//加载模块
rpl_semi_sync_master_enabled=1 //启用master模块
rpl_semi_sync_slave_enabled=1 //启用slave模块

relay_log_purge=0 //禁止自动删除中级日志文件
[root@host51 ~]# systemctl restart mysqld
备用服务器52…53,与51同步
启动管理服务
[root@mgm57 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover

[root@mgm57 ~]# masterha_check_status  --conf=/etc/mha/app1.cnf
    app1 (pid:24311) is running(0:PING_OK), master:192.168.4.51

[root@mgm57 ~]# cd /etc/mha/
[root@mgm57 mha]# ls
app1.cnf                   manager.log
app1.master_status.health  master_ip_failover

客户端连接vip地址访问数据库服务
]# mysql  -h192.168.4.100   -uyaya55  -p123qqq…A
Mysql> show grants;
Mysql> insert into  db9.a values(100);
Mysql> select  *   from  db9.a;

数据库进阶第五天
MHA
环境准备: 安装依赖软件perl ssh免密登陆 一主多从
配置管理主机 : 安装软件 修改app1.cnf 创建故障切换脚 本 指定vip地址
配置数据库服务器: 安装软件 用户授权 主服务器手动配置vi p地址
启动管理服务: 测试ssh配置 测试主从同步配置 启动服务
测试高可用:当前主服务器宕机 客户端依然可以访问vip地址 连接数据库服务
把宕机的服务器添加到集群里:
启动服务 数据一致 在app1.cnf文件添加主机
测试配置 启动管理服务
PXC集群
环境准备:3台服务器上分别安装pxc软件
[root@pxcnode73 ~]# cd PXC/

rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

#yum -y install percona-xtrabackup-
24-2.4.13-1.el7.x86_64.rpm

rpm -ivh qpress-1.1-14.11.x86_64.rpm

yum -y install Percona-XtraDB-Cluster-*.rpm

ls /etc/percona-xtradb-cluster.conf.d/

vim wsrep.cnf

Wsrep_cluster_address=gcomm://192.168.4.71,192. 168.4.72,192.168.4.73 //集群成员列表,号分割
Wsrep_node_address=192.168.4.71 //本机ip地址
Wsrep_cluster_name=pxc-cluster
//集群名称,几台集群几台必须相同
Wsrep_node_name=pxcnode71
//本机主机名随主机名改变
Wsrep_sst_auth=”sstuser:123qqq…A”
//sst数据同步授权用户,什么授权用户什么密码随机应变

vim mysqld.cnf

[mysqld]
Server-id=1 //server-id不允许重复

#vim /etc/mysqld_safe.cnf //此配置文件保持默认配置即可
#systemctl start mysql@bootstrap.service /启动集群服务

systemctl start mysql

分别修改3台服务器的配置文件
mysqld.cnf //数据库服务运行参数配置文件
Wsrep.cnf //pxc集群配置文件
Mysqld_safe.cnf //percona server 配置文件
启动服务:
#systemctl start mysql@bootstrap.service

grep pass /var/log/mysqld.log

mysql -uroot -p’Fwh5Mftfsx%;’

mysql> alter user root@localhost identified by ‘123456’;
mysql> grant reload,lock tables,replication client,process on . to sstuser@‘localhost’ identified by ‘123qqq…A’;
mysql> show databases;
72和73分别启动数据库服务
#systemctl start mysql
#netstat -anput | grep :3306
#netstat -anput | grep :4567
管理员登录查看状态:
show status like “%wsrep%”;
客户端访问集群存取数据:

mysql -h192.168.4.71/72/73 -u用户 -p密码

192.168.4.71 主机的恢复步骤
]# systemctl stop mysql@bootstrap.service
]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.72,192.168.4.73
:wq
]# systemctl start mysql
]# netstat -utnlp | grep :3306
]# netstat -utnlp | grep :4567

 ]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
     wsrep_cluster_address=gcomm://192.168.4.72,192.168.4.73,192.168.4.71

mysql配置存储引擎:
列出可用的存储引擎:
Mysql>show engines;
格式:alter table 表明 engine=存储引擎名;
Mysql>use test;
Mysql>create table intab(id int(4)) engine=innoDB;
Mysql>show create table intab\G;
设置数据库服务使用的存储引擎(/etc/my.cnf)
#vim /etc/my.cnf
[mysqld]
Default-storage-engine=存储引擎
#systemctl restart mysqld
Myisam存储引擎:支持表级锁,不支持事务.事务回滚.外键
表文件:表名.frm //表结构 表名.MYI //索引 表名.MYD //数据
Innodb存储引擎:支持行级锁定,只是事务.事务回滚.外检
表文件:表名:frm //表结构 表名.ibd
事务日志文件:ibdata1 ib_logfile0 ib_logfile1
Mysql锁机制
锁粒度
表级锁:对整张表加锁
行级锁:仅对被访问的行分别加锁
锁类型
读锁:支持并发读
写锁:是独占锁,上锁期间其他线程不能读表或写表
查看当前锁的状态
Show status like “table_lock%”;
事务特征(ACID):
Atomic:原子性
Consistency:一致性
Isolation:隔离性
Durability:持久性
Mysql>show variables like “autocommit”; //查看提交状态
Mysql>set autocommit=off
Mysql>rollback; //数据回滚(恢复删除的内容=撤销)
Mysql>commit; //提交数据(确定撤销生成)

数据库NOSQL第一天
RDBMS软件:
MySql MariaDB Oracle DB2 SQL Server
NoSqL软件:
Memcached Redis MongoDB
CouchDB Neo4j FlockDB
部署Redis服务:
#yum -y install gcc //源码编译安装
#tar -zxvf redis-4.0.8.tar.gz

cd redis-4.0.8/

make && make install

#./utils/install_server.sh
Redis初始化:回车直接跳过
6379                  //端口号
/etc/redis/6379.conf //配置文件目录
/var/log/redis_6379.log //日志目录
/var/lib/redis/6379 //数据库目录
/usr/local/bin/redis-server //启动程序的目录
/usr/local/bin/redis-cli //命令行的连接工具
不同服务更改脚本:/etc/init.d/redis_6379

/etc/init.d/redis_6379 stop //停止服务

/etc/init.d/redis_6379 start //启动服务

]# netstat -antupl |grep :6379 //查看端口

ps -C redis-server //查看进程

redis-cli //默认连接127.0.0.1地址的 6379端口

127.0.0.1:6379> ping
PONG            //PONG说明服务正常
127.0.0.1:6379> set name bob //存数据
127.0.0.1:6379> get name //取数据
常用命令:
Set 名字 数据 //存储1个数据
Mset 名字列表 //存储多个数据
Get 名字 //获取单个数据
Mget //获取多个数据
Select 数据库编号0-15 //切换库
Keys * //显示所有数据
Keys a? //显示指定a名字
Exists 名字 //测试名字是否存在
Ttl 名字 //查看key生存时间
Type 名字 //查看名字类型
Move 名字 库编号 //移动名字到指定库
Expire 名字 数字 //设置名字有效时间
Del 名字 //删除指定的名字
Flushall //删除所有名字
Flushdb //删除所有库的所有名字
Save //保存所有名字到硬盘
Shutdown //停止服务
配置分类:

常用配置:

优化设置:
Maxmemory //最大内存
Maxmemory-policy //定义使用策略
Maxmemory-samples //选取模块的个数
(对于lru和ttl策略)
连接密码:
#vim /etc/redis/6379.conf
Requirepass 123456 //不改密码勿用操作
Bind 192.168.4.50 //redis访问-h IP地址
Port 6350 //redis访问-p 自设端口
例:
#redis-cli -h192.168.4.50 -p 6350 //连接服务
192.168.4.50:6350>auth123456 //输入密码
OK
192.168.4.50:6350>ping
PONG
#redis-cli -h 192.168.4.50 -p 6350 -a 123456
//设置密码的连接方式
#redis-cli -h 192.168.4.50 -p 6350 shutdown
//无密码停止服务(有密码加 -a 123456 shutdown)
部署LNMP+Redis:
1)安装源码nginx软件及php-fpm
#yum -y install gcc pcre-devel zlib-devel //安装依赖
]#tar -zxvf nginx-1.12.2.tar.gz //解压
]#cd nginx-1.12.2 //进源码目录
]#./configure //配置
]#make && make install
]#yum -y install php-fpm //安装php-fpm
] # vim +65 /usr/local/nginx/conf/nginx.con

/usr/local/nginx/sbin/nginx

]# systemctl start php-fpm //启动服务
]# netstat -utnlp | grep :9000 //查看端口
]# /usr/local/nginx/sbin/nginx
]# vim /usr/local/nginx/html/test.php
//编写php文件
]# curl http://localhost/test.php //访问nginx服务
配置php支持redis

yum -y install php php-devel automake autoconf //安装依赖

tar -zxf php-redis-2.2.4.tar.gz //安装扩展包

]# cd phpredis-2.2.4/
]# phpize //生成配置文件php-config及 configure命令
]# ./configure --with-php-config=/usr/bin/php-config //配置
]# make && make install //编译安装
修改php.ini文件
]#vim /etc/php.ini
728 extension_dir = “/usr/lib64/php/modules/”
//模块文件目录
730 extension = “redis.so” //模块文件名
]# systemctl restart php-fpm //重启php-fpm服务
]# php -m | grep -i redis //查看已加载的模块

测试配置
[root@host50 ~]# netstat -utnlp | grep redis-server
[root@host50 ~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 //访问服务
编写网站脚本
]# vim /usr/local/nginx/html/linkredis.php

<?php $redis = new redis(); $redis->connect("192.168.4.50","6350"); $redis->auth("123456"); $redis->set("linux","redhat"); echo $redis->get("linux"); ?>

访问网站脚本
]#curl http://localhost/linkredis.php     
//访问nginx服务
[root@host50 ~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 //连接redis服务
192.168.4.50:6350> keys * //查看变量

数据库NOSQL第二天
Redis-trib脚本用法:
#redis-trib.rb <命令> <选项><参数>
Create 创建集群 check 检查集群
Info 查看集群信息 reshard 重新分片
Del-node 删除主机 add-node --slave 添加从主机
Add-node 添加master主机
rebalance 平均分配hash slots
创建集群:
1.部署管理主机:
[root@mgm57 ~]#yum -y install rubygems
[root@mgm57 ~]# which gem
[root@mgm57 ~]# gem install redis-3.2.1.gem
2.创建管理集群脚本:
[root@mgm57 ~]#mkdir /root/bin
//创建命令检索目录
[root@mgm57 ~]#tar -zxvf redis-4.0.8.tar.gz
[root@mgm57 ~]#cd redis-4.0.8/src/
[root@mgm57 ~]#cp redis-trib.rb /root/bin/
//创建管理集群脚本
[root@mgm57 ~]#chmod +x /root/bin
/redis-trib.rb
[root@mgm57 ~]#redis-trib.rb help
//查看命令帮助
3.启动服务器192.168.4.51的集群功能:
[root@redisA ~]# /etc/init.d/redis_6379 stop
//停止redis服务
Stopping …
Waiting for Redis to shutdown …
Redis stopped
[root@redisA ~]# vim /etc/redis/6379.conf
//修改配置文件
bind 192.168.4.51 //修改ip
port 6351 //修改端口(可选配置)
cluster-enabled yes //启用集群功能
cluster-config-file nodes-6379.conf
//存储集群信息的配置文件
cluster-node-timeout 5000
//集群节点通信超时时间
[root@redisA ~]# vim +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.51 -p 6351 shutdown
//更改脚本下的进入方式(不同端口需要进行设置)
[root@redisA ~]# /etc/init.d/redis_6379 start
[root@redisA ~]# netstat -utnlp | grep redis-server
//查看运行进程
以下服务器52-56-N 与上同步↑
管理服务器设备创建集群
[root@mgm57 ~]# redis-trib.rb create --replicas 1 \

192.168.4.51:6351 192.168.4.52:6352 192.168.4.53:6353
192.168.4.54:6354 192.168.4.55:6355 192.168.4.56:6356
Can I set the above configuration? (type ‘yes’ to accept): yes //同意以上配置
[OK] All nodes agree about slots configuration.

Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
//提示16384个槽分配完毕
查看集群信息:
1)在管理主机查看集群信息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
//查看集群信息
2)在管理主机检测集群
[root@mgm57 ~]# redis-trib.rb check 192.168.4.51:6351 //检测集群
3)在任意一台redis服务器,查看集群信息
[root@redisA ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> cluster info //查看集群信息
192.168.4.51:6351> cluster nodes //查看集群节点信息
访问集群
1)客户端连接随意服务器存数据
[root@client50 ~]# redis-cli -c -h 192.168.4.51 -p 6351 //连接服务器51
192.168.4.51:6351>
192.168.4.51:6351> set x 100 //存储
-> Redirected to slot [16287] located at 192.168.4.53:6353 //提示存储在53主机
192.168.4.53:6353> set y 200 //存储
192.168.4.53:6353> keys * //查看所有
192.168.4.53:6353> set z 300 //存储
-> Redirected to slot [8157] located at 192.168.4.52:6352 //提示存储在52主机
4.添加服务器
1)装包,初始化,启用集群功能,重启服务
]#yum -y install gcc
]#tar -zxvf redis-4.0.8.tar.gz
]#cd redis-4.0.8/
]#make && make install
]#./utils/install_server.sh
]# /etc/init.d/redis_6379 stop
vim /etc/redis/6379.conf
bind 192.168.4.58
port 6358
cluster-enabled yes //启用集群
cluster-config-file nodes-6379.conf
//存储集群信息文件
cluster-node-timeout 5000
]# vim +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.58 -p 6358 shutdown
:wq
]# /etc/init.d/redis_6379 start
]# netstat -utnlp | grep redis-server
2)添加master角色主机到集群
[root@mgm57 ~]# redis-trib.rb add-node 192.168.4.58:6358 192.168.4.53:6353
//执行添加命令
[OK] New node added correctly. //提示添加完成

在管理主机,查看集群新消息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.53:6353 //查看集群信息
[OK] 8 keys in 4 masters.
0.00 keys per slot on average.
3)在管理主机,检测集群
[root@mgm57 ~]# redis-trib.rb check 192.168.
4.53:6353 //检测集群
[OK] All nodes agree about slots configuration.

Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.
4)管理主机,重新分配hash槽
[root@mgm57 ~]# redis-trib.rb reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 //拿出4096个hash 槽给主机192.168.4.58(平均值)
What is the receiving node ID? c5e0da48f335c46a2ec199faa99b830f537dd8a0
//主机192.168.4.58的id值
Source node #1:all
//从当前所有master服务器获取hash槽
Do you want to proceed with the proposed reshard plan (yes/no)?yes //同意以上配置
5.添加slave角色主机到集群里
1)部署新的redis服务器4.59
]#yum -y install gcc
]#tar -zxvf redis-4.0.8.tar.gz
]#cd redis-4.0.8/
]#make && make install
]#./utils/install_server.sh

]# /etc/init.d/redis_6379 stop
vim /etc/redis/6379.conf
bind 192.168.4.59
port 6359
cluster-enabled yes //启用集群
cluster-config-file nodes-6379.conf //存储集群信息文件
cluster-node-timeout 5000
]# vim +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.59 -p 6359 shutdown
]# /etc/init.d/redis_6379 start
]# netstat -utnlp | grep redis-server
在管理主机,添加slave角色主机
[root@mgm57 ~]# redis-trib.rb add-node --slave 192.168.4.59:6359 192.168.4.51:6351 //执行添加命令

Configure node as replica of 192.168.4.58:6358. //提示添加完成
[OK] New node added correctly.
2)在管理主机,查看集群新消息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351 //查看信息
移除服务器
1)移除slave服务器,从服务器没有槽,直接移除即可
[root@mgm57 ~]# redis-trib.rb del-node 192.168.4.51:6351 f6649ea99b2f01faca26217691222c17a3854381 //执行移除命令
2)移除master服务器占用的hash槽
[root@mgm57 ~]# redis-trib.rb reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 //移除4096个数槽
What is the receiving node ID? bc5c4e082a5a3391b634cf433a6486c867cfc44b
//要移动给谁的id即目标主机(这里可以随机写一个master的ID hash槽给那个ip
Source node #1: c5e0da48f335c46a2ec199faa99b830f537dd8a0
//从谁那移动即源主机(这里写4.58的ID//移除主机的号
Source node #2:done //第二个主机号设置完毕

数据库NOSQL第三天
主从复制: 一主一从,一主多从, 主从从
配置主从复制:
配置从库:redis服务运行后,默认都是master服务器

redis-cli -h 192.168.4.52 –p 6352

192.168.4.52:6352> info replication //查看复制信息

Replication

role:slave //从服务器
master_host:192.168.4.51        //主服务器ip地址
master_port:6351 //主服务器端口
master_link_status:up //与主库连接状态开启
192.168.4.52:6352> slaveof 192.168.4.51 6351
//使52作为51的主库
#vim /etc/redis/6379.conf
slaveof 192.168.4.51 6351
//在文件末尾添加或在原有配置项上修改都可以
配置待验证的主从复制:
配置master
#sed -n ‘501p’ /etc/redis/6379.conf
Requirepass 123456
配置slave
#vim +289 /etc/redis/6379.conf
Masterauth 123456
哨兵服务:发现master宕机后,从服务器升级为主服务器
主配文件 sentinel.conf
配置哨兵服务:
#vim /etc/sentinel.conf //新建主配置文件
sentinel monitor server51 192.168.4.52 6352 1
bind 0.0.0.0 //服务地址
port 26379 //哨兵服务端口
Sentinel auth-pass server51 123456 //连接服务
:wq
#redis-sentinel /etc/sentinel.conf //启动服务
持久化:RDB AOF
RDB:
定义RDB文件名: dbfilename “dump.rdb” //文件名

使用RDB文件恢复数据
备份数据:备份dump.rdb文件到其他位置
]#cp 数据库目录/dump.rbd 备份目录
恢复数据:拷贝备份文件到数据库目录,重启redis服务
#/etc/init.d/redis_6379 stop //先停服务
#scp /var/lib/redis/6379/dump.rdb root@目标IP地址
:/var/lib/redis/6379/ //实现备份数据恢复

优化设置:
数据从内存保存到硬盘的频率
Save 900 1 //15分钟且有1个key改变
Save 300 10 //5分钟且有10个key改变
Save 60 10000 //1分钟且有10000个key改变
手动存盘:
Save //阻塞写存盘
Bgsave //不阻塞写存盘

AOF
AOF:追加方式写操作文件,记录redis服务写操作,新的写操作追加到文件的末尾.默认未启用,使用cat进行文件查看.
>config set appendonly yes //启用
>config get appendonly //查看状态
>config rewrite //永久写进配置文件

AOF文件恢复数据:
备份数据:备份appendonly.aof文件到其他位置
]#cp 数据库目录/applendonly.aof 备份目录
恢复数据:拷贝备份文件到数据库目录,重启redis服务
#/etc/init.d/redis_6379 stop //先停服务
#scp /var/lib/redis/6379/appendonly.aof root@目标IP地址:/var/lib/redis/6379/ //实现备份数据恢复
#/etc/redis/redis_6379 start

优化配置:
定义文件名:
Appendonly yes //启用aof,默认no
Appendfilename “appendonly.aof” //指定文件名
AOF文件记录写操作的方式
Appendfsync always //时时记录,并完成磁盘同步
Appendfsync everysec //每秒记录1次,并完成磁盘同步
Appendfsync no //写入aof,不执行磁盘同步

修复AOF文件:把文件恢复到最后一次的正确操作
#redis-check-aof --fix appendonly.aof
Continue?:y
(启动这服务进行)

AOF优点:可以灵活设置持久化方式.出现意外宕机时,仅可能丢失1秒数据
AOF缺点:持久化文件的体积通常会大于RDB方式.执行fsync策略时的速度可能会比RDB方式慢
数据类型分类
数据类型:string字符串,list列表,hash表
String字符串
Set key value
List列表

Hash表


  1. abc ↩︎

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS 阅读详情

相关推荐

android mtk camera如何自定义默认拍照与录像分辨率

本文详细解析了在Android MTK平台上自定义相机默认拍照与录像分辨率的方法。通过分析Camera2应用默认选择逻辑,定位并修改PictureSize.java与VideoQualityCaptureRequestConfig.java中的关键代码,实现绕过系统智能选择,强制指定最高或特定分辨率。文章还提供了进阶的可配置化方案与验证避坑指南,帮助开发者精准控制相机行为。

weixin_29194817的博客 424

linux 扩展分区,逻辑分区,挂载

一、查看新磁盘 [root@desktop61 Desktop]# fdisk -cul /dev/sdc Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors Units = sectors of 1 * 512 = 512 byt...

qq_41658067的博客 3743

基于STM32的多普勒雷达测速

基于多普勒雷达传感器,以STM32单片机为主控芯片,根据不同模块检测距离的不同,使用不同多普勒雷达传感器实现对远近距离车辆行驶速度及方向的测量。 1、基础知识 无线电探测和测距,是用无线电(电磁波)方法发现目标并测定其空间位置的装置。随着雷达技术的发展,现代雷达不仅可以对目标进行定位,还可以测量目标的速度、对目标进行成像甚至测量目标的大小和材料特性。所有利用雷达波来检测物体速度的原理,其理论基础皆源自于“多普勒效应”,...

weixin_52801934的博客 6307

关于树莓派不能扩展分区的解决方案

环境:树莓派3 CentOS7(ARM架构) 具体信息:Linux centos-rpi3 4.9.40-v7.1.el7 #1 SMP Tue Aug 8 14:03:02 UTC 2017 armv7l armv7l armv7l GNU/Linux 我发现SD卡有16G,而显示磁盘只有2G,于是按照一篇文章进行磁盘扩容参考资料原文的扩展分区方法,我进行了尝试,但执行到最后时,发生了错误:...

吉吉的博客 1595

格(Lattice)基础(一)

有关格的基础概念,和相关的格难题

Amire0x的小乐园 5692

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

Linux-磁盘管理

警告: WARNING: the kernel failed to re-read the partition table on /dev/sdb (设备或资源忙). As a result, it may not reflect all of your changes until after reboot.是/Yes/否/No?警告: 正在使用 /dev/sdb 上的分区。忽略/Ignore/放弃/Cancel?可以在/etc/fstab上配置,重启也可以生效。使用 /dev/sdb。

rexinshimingli的博客 434

车载以太网测试技术解析

在智能汽车与HiL测试领域,高效解析与模拟车载网络通信是开发验证的关键。ZD-Converter 2000以媒体/介质转换器、嗅探器、拦截器、仿真器四合一的颠覆性设计,成为工程师应对复杂车载以太网测试的瑞士军刀。它支持双路车载/标准以太网智能转换、实时通信嗅探、硬件级数据拦截及ECU通信模拟,更通过串口命令实现全参数远程配置,赋能自动化测试流程。本文将深度解析其核心功能与实战应用场景。

Triv2025的博客 1134

Linux 关于逻辑分区的误解

之前没有理解好逻辑分区的概念,导致做实验除了错误。分享给大家: 先看一下实验: [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─rhel-root...

hlttlcooL123的博客 1285

金融科技风险管理实践之监管评级全解

内部审计是公司治理的四大基石之一。因此,建议银行以问题与结果为导向,推动科技风险分级分类管理,重点防范重大中断、重大事件,并进一步加强科技风险评估与监测,加强对重要管理流程、重要系统、网络等重点管控环节的评估监测,对于评估发现的问题,及时完善管理手段,举一反三解决问题,提高风险管理的有效性。投入更多审计资源,加大对重点机构、薄弱环节、重要领域的审计力度,如:加强对境外机构的审计,加强网络安全、数据安全、业务连续性等高风险领域审计,加强数字化转型过程中的风险审计,以高水平安全,为数字金融高质量发展保驾护航。

银行信息系统应用架构详解 436

基于ARKitScenes和YOLOv11的元宇宙3D物体检测系统设计与实现

引言随着元宇宙概念的兴起和增强现实(AR)技术的快速发展,3D物体检测成为了计算机视觉领域的重要研究方向。与传统的2D物体检测不同,3D物体检测不仅需要识别物体类别,还需要估计物体在三维空间中的位置、大小和朝向。本文将详细介绍如何利用ARKitScenes数据集和YOLOv11算法构建一个完整的3D物体检测系统,并提供可视化UI界面。相关工作与技术背景2.1 ARKitScenes数据集介绍ARKitScenes是苹果公司发布的一个大规模的3D场景理解数据集,包含丰富的室内场景数据。

YOLO 408

zzz同学修复U盘的记录

root's password: linux-mrph:~ # dd if=/dev/zero of=/dev/sdb bs=1024 count=10 10+0 records in 10+0 records out 10240 bytes (10 kB) copied, 0.00486736 s, 2.1 MB/s linux-mrph:~ # mkfs.vfat /dev/sdb  mkfs

eltaera的专栏 903

手把手教你在ARM64架构下编译和部署Milvus:从环境搭建到Docker镜像制作全攻略

本文详细介绍了如何在ARM64架构下编译和部署Milvus,包括环境搭建、源码下载与编译、Docker镜像制作等关键步骤。通过本文的方法,您可以快速构建适用于ARM64设备的Milvus编译环境,并解决常见的编译错误。同时,还提供了基于Docker Compose的测试方法,帮助用户高效地完成向量数据库的部署与应用。这是一次深入探索开源AI工具的实用指南,为开发者在多种硬件架构上的创新应用提供了强有力的支持。

小盒子的博客 1262

Linux与云计算——第二阶段Linux服务器架设 第一十二章:数据库搭建—Oracle Database 12c...

Linux与云计算——第二阶段Linux服务器架设第一十二章:数据库搭建—Oracle Database 12c3.1 预需求安装Oracle Database 12c.在安装之前,更改一些安装Oracle数据时的要求设置[1] 安装Desktop Environment, refer to here.[2] 安装required.[root@server ~]# yum...

weixin_34381687的博客 134

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Linux 第三阶段课程:数据库基础与 SQL 应用

本阶段课程围绕数据库基础展开,重点介绍了关系型数据库与非关系型数据库的区别、MySQL 的特性与安装流程,以及 SQL 语句的核心用法。通过理论与实操结合,掌握数据库的基本管理和数据操作技能,为后续深入学习数据库优化、复杂查询等内容奠定基础。

weixin_51705943的博客 833

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

阶段三 —— Linux和数据库(未完)

:根目录,唯一/home :用户目录/root :系统管理员root目录/usr :应用程序/etc :系统配置/boot : 内核文件/tmp : 临时文件/bin : 放命令的目录。

研究生在读,分享学习日常。(零基础学习后端编程) 936

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蒲公英软件课堂第二阶段之Linux、数据库讲解

虚拟机软件VMware安装 安装VMware 在官网下载VMware安装包下载地址 双击安装程序VMware-workstation-full-15.0.2-10952284.exe运行安装 Linux服务器之VMware虚拟机安装Centos7.6 下载Cent...

chunfu5367的博客 521

Java学习三阶段-Linux安装MariaDB数据库

Linux安装MariaDB数据库

奔跑的小猫 160

阶段总结 ———— linux shell 判断mysql数据库密码是否为空、是否正确

去年的项目用shell写了一个管理mysql数据库的小工具,

Benjamin_Xu的专栏 3026

软件测试第二阶段Linux和数据库(复习)

这篇文章总结了一下我之前学习linux和数据库的内容主要是为了应对面试中的基础知识这一块。文章包含Linux命令的基础知识, linux中常见的11个命令, MySQL的基础知识和实例练习。

alan_zhang226的博客 571

Ruby on Rails 开发环境容器化:Docker Compose 实战指南

容器化是现代 Web 应用开发的基础能力,其核心在于通过声明式配置实现环境一致性与可复现性。Docker Compose 作为轻量级多容器编排工具,天然适配 Rails 的约定优于配置哲学,能有效解决 Ruby 生态长期存在的‘本地能跑、容器报错’‘在我机器上是好的’等协作熵增问题。它不替代本地开发流,而是构建一个按需启用、隔离可靠、与生产高度对齐的开发沙盒——支持代码热重载、数据库持久化、服务依赖编排及一键启停。本文聚焦 Rails 开发阶段的 Containerizing 实践,涵盖 Alpine 镜像

weixin_30808693的博客 409

Linux系统编程阶段:MySQL数据库相关知识点和函数。

MySQL数据库相关知识点和函数。

wanghongshuai1的博客 917

达梦数据库的全量备份与恢复

cd到达梦数据库安装的bin目录下,要先开启达梦数据库的服务器(必须要先开启服务器,后面才能够进行连接数据库的操作),输入语句./dmserver path=/opt/dmdbms/DAMENG/dm.ini。这里点击确定之前,需要先打开DM服务查看器,保证“达梦数据库实例服务”是处于关闭的状态,以及“达梦数据库辅助插件服务”是正在运行(否则点击备份会报错)。弹出新建备份的弹窗,选择库备份,填写备份名和备份集目录,我这里将目录地址放在了data目录下,取名为backup。进入DM管理工具,连接数据库。

Justin_ZZ的博客 598

K8s+DB+Linux+网络综合学习路径概览

整理一套涵盖 Kubernetes、数据库、Linux 和网络的全面深入研究资料和学习路径,重点覆盖项目搭建、架构原理、安全、调优与运维实战。

喝醉酒的小白 1124

阶段三:Linux数据库1 Linux测试环境搭建与实战指南

1、环境(Environment):可以定义为程序或系统运行时所依赖的软件硬件网络等资源集合。2、对应项目类型架构角度:(1)单体项目:所有功能堆到一起(2)分布式项目:在多台服务器上部署了单体应用(3)微服务项目:把系统应用拆分为独立的模块(微服务)利用常见的16个Linux命令辅助测试执行,搭建测试环境、查服务端日志协助定位bug1、Linux:是一款免费使用和自由传播的(服务器)操作系统2、Linux常见目录结构(根目录下统一管理)/:表示根目录。

m0_74869962的博客 181

黑马程序员-软件测试--06阶段2-linux和数据库-01-08第一章-linux操作系统阶段内容说明,linux命令基本格式以及常见形式的说明,操作系统的常见的分类,查看命令帮助信息方法,

软件测试-黑马程序员

VAN 1387
下一篇: Linux基本知识
hchaolinux
博客等级 码龄7年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值