快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

Linux的数据库阶段

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

数据库知识

数据库的第一天4

两台服务器4.50和4.51 4

常用软件:4

Mysql数据类型:5

Mysql管理环境7

常用的SQL命令分类7

表管理命令:8

记录管理8

枚举类型11

时间功能的应用:12

第二天的数据库13

限制条件:13

修改表结构:15

更改表字段类型16

更改表名称17

键:17

主键:20

删除主键22

数据库第三天24

搜索路径24

数据库导入25

数据导出26

管理表格记录27

匹配条件28

高级匹配条件:(适用于选择/更新/删除)30

四个算术运算:+-*/%余数()增加优先级31

汇总功能:32

限制查询结果中显示的行数:33

数据库第4天35

授权授权:35

授权图书馆:37

根密码:38

数据备份:39

完整备份:40个

binlog日志41

差异备份:43

分析日志:44个

数据库第5天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

Advanced Database 65第4天

部署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.将从属角色主机添加到群集90

在管理主机中,添加从属角色主机91

删除服务器91

数据库NOSQL 93第三天

配置主从复制:93

配置主服务器93

配置Sentinel服务:94

RDB:94

AOF 95

优化的配置:96

数据类型分类97

数据库的第一天

准备环境

两台服务器4.50和4.51

[螺柱@ 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启动mysqld

[root @ 1]#systemctl启用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

数据库信息刷新:刷新特权;

数据库密码的默认长度为8,最小长度为4

切换摘要库:使用notifyarion_schema

切换授权库:使用mysql

切换性能结构库:使用performancr_schema

切换系统配置数据库:使用sys;

Mysql数据类型:

固定长度char

可变长度varchar

整数

浮点数

日期时间类型

枚举类型

[root @ 1]#grep密码/var/log/mysqld.log

2019-10-08T02:30:49.705931Z 1 [注意]为root @ localhost生成一个临时密码:W1Cjw1uhvo = 1

[root @ 1]#mysql-hlocalhost-uroot-p’W1Cjw1uhvo = 1’

//生成随机密码并输入mysql

mysql \ gt;更改以” 123qqq…A”标识的用户根@ @localhost。

mysql \ gt;显示数据库;

//重置数据库密码

mysql \ gt;显示变量,例如”%password%”;//查看密码变量

mysql \ gt;设置全局validate_password_policy = 0;

//修改密码策略

mysql \ gt;设置全局validate_password_length = 6;

//更改密码长度

mysql \ gt;更改由” 123456″标识的用户root @ localhost;

//直接命令行不是永久的

[root @ 1]#vim/etc/my.cnf永久有效(主配置文件)

[mysqld]

validate_password_policy = 0

validate_password_length = 6

[root @ 1]#systemctl重新启动mysqld

[root @ 1]#mysql-hlocalhost-uroot-p123456

mysql>使用mysql;//使用mysql库

mysql>显示表格;//查看mysql表

Mysql管理环境

SQL命令不区分大小写;

每个SQL以;

默认命令不支持TAB自动完成。

/c终止sql命令;

常用的SQL命令分类

1.DDl数据定义语言,例如:create alter drop

2.DML数据操作语言,例如:insert update delete

3.DCL数据控制语言,例如:授予撤销

4.DTL数据事务处理语言,例如:commit rollback savepoint

库管理命令:

库名称命名规则

您只能使用数字,字母,下划线,不能使用纯数字

区分具有唯一性的大写和小写字母

不允许使用命令关键字。特殊字符

mysql>显示数据库;//显示所有库

mysql>选择用户();//显示已连接的用户

mysql>使用库名;//切换库

mysql>选择数据库();//显示当前数据库

mysql>创建数据库库名称//创建新库

mysql>显示表格;//显示现有表

mysql>删除数据库库名称//删除库

表管理命令:

Desc库名。表名;

删除表库名称。表名;

Mysql>创建表库名称。表名(字段名1类型(宽度)

字段名称2类型(宽度),…)默认字符集= utf8; (需要中文)

mysql>创建数据库db1;//创建db1库

mysql \ gt;创建表db1.studinfo

(名称为char(15),homeaddr char(20));

//在db1库中创建表,两个字符字段标题名称和homeaddr

mysql>使用db1;//使用db1表

mysql>显示表格;//查看db1库的表

mysql> desc db1.studinfo;//检查db1库的表结构

记录管理

从库名称中选择*。表名;/查看表记录

插入库名。表名值(value);/插入表记录

更新库名称。表名称设置字段=值/修改表记录

从表名删除;/删除表记录

mysql>插入db1.studinfo

值(” bob”,” USA”),(” lucy”,” USA”),(” lilei”,” china”);

//写内容的三个方括号代表三行是两列

mysql>从db1.studinfo选择*;//查看表格内容

mysql \ gt;更新db1.studinfo set homeaddr =” bejing”;

//将第二列中的所有homeaddr替换为北京

mysql \ gt;从db1.studinfo选择*;//查看表格更改后的内容

mysql>从db1.studinfo删除;//删除表的内容

mysql> create table学生信息表(名称char(15),性别char(2))默认charset = utf8;

mysql \ gt;显示表格;

mysql>插入db1。学生信息表值(“张三”,“男”);

mysql>从db1选择*。学生信息表;

mysql>创建表db1.t1(类char(7),名称char(15),电子邮件varchar(30));//将t1表电子邮件创建为可变长度类型

mysql \ gt;显示表格;

mysql> desc t1;//检查表格结构

mysql>插入db1.t1

值(” nsd1907″,” bob”,” chaolinux@sina.com”);

//编写内容类,名称和变长邮箱

mysql> select * from db1.t1//查看表t1

mysql \ gt;放下学生信息表//删除学生信息表

mysql \ gt;创建表t3(名称char(10),age tinyint无符号);//创建t3表名称指定的长度,年龄的无符号范围微小整数

mysql \ gt;插入t3值(“bob”,-11);

错误1264(22003):第1行的’年龄’列超出范围//不支持无符号负值

mysql>插入t3值(“bob”,11);//写信息

mysql \ gt;插入t3个值(“bob”,256);

错误1264(22003):第1行的”年龄”列的值超出范围////tinyint超出范围

mysql>插入t3值(“bob”,255);//写信息

mysql>从t3选择*;//查看t3表

浮点型

mysql>创建表t4(名称char(10),pay float(5,2));

//创建浮点类型格式:字段名称类型(总数,小数位)

mysql \ gt;显示表格;

mysql \ gt;插入t4个值(“john”,1000);

错误1264(22003):第1行的”支付”列的范围值超出//写入超出支付浮动(5,2)范围的浮点信息

mysql>插入t4值(“john”,999);//写信息

mysql>从t4选择*;//查看表格信息

mysql>插入t4值(“johnA”,999.12);//写信息

mysql>从t4选择*;//查看表格信息

日期时间类型

mysql \ gt;使用db1

mysql>创建表t5(名称为char(10),csnf年,运行时间,生日,聚会日期时间);

//创建t5表,五个标题。

mysql> desc t5;//查看表格结构

mysql \ gt;插入t5

值(“bob”,2000,083000,20191120,20190101083000);

//编写五个日期字段

mysql \ gt;从t5中选择*;//查看t5表

枚举类型

字段名称枚举(值1,值2,值n)/收音机

字段名称集(值1,值2,值n)/多项选择

mysql>创建表t6(名称为char(10),

性枚举(”男孩”,”女孩”,” noboynogirl”),

喜欢设置(”吃”,”游戏”,”票”,”杜”));

//创建枚举表标头枚举以控制多项选择,如设置多项选择

mysql> desc t6;//查看t6表结构

mysql \ gt;插入t6

价值观(“驴友”,“noboynogirl”,“游戏,票”);//写表信息

mysql>从t6选择*;//查看表格信息

时间功能的应用:

mysql \ gt;使用db1;

mysql \ gt;显示表格;

mysql>现在选择();//显示当前系统时间和日期

mysql>选择curtime();//查看当前系统时间

mysql>选择curdate();//查看当前系统日期

mysql>选择年份(现在());//查看指定的时间年份

mysql>选择月份(现在());//查看指定时间的月份

mysql>选择日期(现在());//查看指定的时间日期

mysql>选择日期(现在());//查看指定的时间和日期

mysql>选择时间(现在());//查看指定的时间和时间

mysql \ gt;插入t5

值(“tom”,年(now()),curtime(),curdate(),now());

//编写新内容

mysql \ gt;创建表t7(名称为char(10),会议日期时间,聚会时间戳记);

//创建t7表datetime no value为空timestamp no value application现在是默认值

mysql> desc t7;//查看t7表结构

mysql \ gt;插入db1.t7值

-> (”鲍勃”,20191009112545,20191009213025);

//写入表格内容

mysql \ gt;从t7中选择*;

//查看表格信息

mysql>插入t7(name,metting)值(” tom”,20191224204558);

//写两个字段,metting有值,一方默认当前时间

mysql>将值插入t7(名称,参与方)(“jim”,20171224204558);

//写两个没有值的字段,party有值

mysql \ gt; desc t5;

mysql>插入t5(name,csnf)值

-> (” john”,21岁),

-> (” jerry”,71),(” jack”,2071);

mysql \ gt;从t5中选择*;

数据库的第二天

约束:

Null允许为空(默认设置)

不为null不允许(为null)

键键值类型

默认设置默认值,不为null

Extra Extra设置

mysql \ gt;使用db1;

mysql>创建表t8(名称char(10)不为null,

->年龄tinyint无符号默认值19,

->类char(7)不为null默认为” nsd1907″,

->支付浮动(7,2)默认28000);

//创建t8表的名称为固定长度10,不能为空,age为微整数,无符号默认值19,类为固定长度7不能为空,默认值nsd1907,浮点类型总数为7,小数位数为2,默认值为28000.00

mysql>插入t8(name)值(“bob”);

//使用默认值

mysql>从t8选择*;//查看t8表的内容

mysql \ gt;插入t8值(“tom”

-21,” nsd1908″,28888.88);

//不要使用默认值

mysql \ gt;插入t8值(null,28,null,30088);

错误1048(23000):”名称”列不能为空

//名称字段不能为空

mysql \ gt;插入t8个值(“jerry”,28,null,30088);

错误1048(23000):”类”列不能为空

//类字段不能为空

mysql>插入到t8中

值(「jerry」,28,「nsd1907」,30088);

//非空的创建表内容

mysql>从t8选择*;//查看t8表的内容

mysql>创建表t9(

->名称char(10)不为null,

-> homeaddr char(30)不为null,默认为””);

mysql \ gt; dest9;

mysql \ gt;插入t9值(“null”,“null”);

mysql \ gt;从t9中选择*;

mysql \ gt;在t9(名称)中插入值(“tom”);

修改表结构:

添加表格字段

更改表库名称。表名称添加字段名称类型[约束|第一]:

mysql>更改表db1.t1

->添加学校字符(15)不为空默认为” tarena”;

mysql \ gt; desc t1;

mysql>更改表db1.t1

->在名称后添加age tinyint无符号默认值19;

mysql \ gt; desc t1;

mysql>更改表db1.t1

->首先添加stu_num int;

mysql \ gt; desc t1;

mysql \ gt;从t1选择*;

更改表格字段类型

更改表库名称。表名修改字段名类型[约束条件|第一];

mysql \ gt;从db1.t1中删除;

mysql>更改表db1.t1

->修改名称varchar(15)不为null默认值””;

mysql>更改表db1.t1

->修改名称varchar(15)不为null stu_num之后为默认””;

mysql \ gt; desc t1;

更改表字段名称

更改表更改源字段名称新字段名称

mysql \ gt;更改表db1.t1更改

-> stu_num stu_id int;

mysql \ gt;更改表db1.t1更改

-> school xuexiao varchar(30)默认为” tedu”;

mysql \ gt; desc t1;

删除表格字段

更改表库名称。表名称放置字段名称;

mysql \ gt;修改表db1.t1删除电子邮件;

mysql \ gt;修改表db1.t5删除csnf;

更改主表名称

更改表的表名重命名新指示;

mysql \ gt;修改表t9重命名学校;

mysql \ gt;显示表格;

批量修改表结构

mysql>更改表db1.t1

->添加qq字符(11),

->添加电话字符(11),

->修改class char(9),

->更改名称用户varchar(15)不为null默认值””,

->放学潇

mysql \ gt; desc t1;

键值:

键值类型:

索引一般索引:

一个表中可以有多个索引字段

允许重复字段值,并且可以分配空值

索引字段标志为MUL

唯一唯一索引

全文索引

主键:

一个表中只能有一个主键。

多个字段用作主键,称为复合主键,并且必须一起创建。

字段值不允许重复,并且不允许使用空值。

主键徽标PRI

主键通常与auto_increment结合使用

通常将表中唯一标识的记录的字段设置为主键

外键外键

常规索引:

在表名(字段名)上创建索引索引名;/创

在表名上删除索引索引名;/删除

显示表名\\\\ G的索引;检查索引

mysql> desc t3;//查看t3表结构

mysql \ gt;在t3上创建索引名称(名称);

//为名称设置公共索引MUL

mysql \ gt;在t3(年龄)上创建索引年龄;

//为年龄设置公共索引MUL

mysql \ gt;显示从t3 \\\\ G开始的索引;

//显示设置索引的详细信息

mysql \ gt; desc t3;

mysql>在t3上删除索引年龄;//删除年龄索引

mysql \ gt;显示从t3 \\\\ G开始的索引;

↓创建一个新数据库

mysql \ gt;创建数据库db2;

mysql>创建表db2.t1(

->名称char(10),

->年龄int,

->性枚举(”男孩”,”女孩”),

->索引(名称),索引(性别));

//创建一个新的t1表并将名称和性别设置为通用索引

mysql> desc db2.t1;//查看t1表的结构

2)唯一##唯一索引,重复不允许使用e值,例如身份证,银行帐号

3)全文##全文索引,适用于模糊查询

主键:

alter table表名字段主键(字段名列表);

mysql>创建表t8(

->名称char(10)主键,

->年龄int,

->类char(7));

//创建一个t8表并将名称设置为主键索引

mysql> desc t8;//查看t8表结构

mysql>创建表t9(

->名称char(10),age int,class char(7),主键(name));//相当于t8表

mysql \ gt;插入t9值(null,19,” nsd1907″);

错误1048(23000):”名称”列不能为空

//验证主键索引不能为空

mysql \ gt;插入t9值(“bob”,19,” nsd1907″);

//在t9写入表内容

mysql \ gt;插入t9值(“bob”,20,” nsd1908″);

错误1062(23000):键” PRIMARY”的条目” bob”重复出现

//验证主键索引名称一定不能重复

主键复合主键:

alter table表名字段的主键(多字段名列表);

mysql \ gt;创建表格付款(

->名称char(10),类char(7),

->支付枚举(”是”,”否”),

->主键(名称,类别,工资));

//创建一个薪水表并设置复合主键(名称,类别和薪水),验证不能在三段中重复,仍然可以编写。

mysql> desc支付;//查看付款表结构

mysql>插入db2.pay值(

-> ” bob”,” nsd1907″,”是”);

mysql>插入db2.pay值(

-> ” bob”,” nsd1907″,” no”);

mysql>插入db2.pay值(

-> ” bob”,” nsd1908″,”是”);

mysql \>从薪水中选择*;//查看付款表的内容

mysql>插入db2.pay

值(「bob」,「nsd1908」,「是」);

错误1062(23000):键” PRIMARY”的重复条目” bob-nsd1908-yes”

//验证同时建立三个字段并报告错误

主键与auto_increment一起使用:

mysql>创建表db2.t3(

-> id int主键auto_increment,

->名称char(10),年龄tinyint无符号,

->类char(7)默认为” nsd1907″);

mysql \ gt; desc t3;

mysql \ gt;将值插入t3(名称,年龄)(“bob”,19);

mysql \ gt;从t3中选择*;

mysql \ gt;将值插入t3(名称,年龄)(“tom”,16);

mysql \ gt;将值插入t3(名称,年龄)(“john”,27);

mysql \ gt;从t3中选择*;

mysql \ gt;从t3中选择*,其中id = 2;

mysql>插入t3值(6,” lili”,18,” nsd1906″);

mysql>插入t3值(null,” hanmem”,28,” nsd1906″);

mysql \ gt;从t3中选择*;

删除主键

mysql> alter table库名称。表名删除主键;

mysql \ gt;修改表t3修改id int不为null;

//更改自我成长并将其删除

mysql \ gt;修改表t3删除主键;

//删除主键

添加主键

将主键添加到现有表

更改表的表名添加主键(字段名);

创建复合主键

更改表的表名添加主键(字段名列表);

mysql \ gt;修改表db2.pay添加主键(名称,类,工资);

mysql \ gt;更改表t1首先添加stu_num tinyint主键auto_increment

使用外键

创建表表名(字段名列表,外键(字段名)引用表名(字段名)#在更新级联上指定外键#在删除级联上同步更新#同步删除)engine = innodb; #指定存储引擎

;

mysql>创建表db2.yg(yg_id int主键为auto_increment,yg_name为char(10)

->引擎= innodb;

mysql>插入db2.yg(yg_name)

->值((” bob”),(” bob”),(” tom”),(” lili”);

mysql \ gt;从db2.yg中选择*;

mysql>创建表db2.gz(

-> gz_id int,gz浮点数(7,2),

->外键(gz_id)引用yg(yg_id)

->在更新级联上在删除级联上

->引擎= innodb;

mysql \ gt;显示创建表gz \\\\ G;

mysql \ gt;插入gz值(1,25000);

mysql \ gt;插入gz值(2,35000);

mysql \ gt;插入gz值(3,45000);

mysql \ gt;插入gz值(4,55000);

mysql \ gt;从gz选择*;

mysql \ gt;更新db2.yg设置yg_id = 8,其中yg_id = 1;

//分别更改字段的单个内容

mysql \ gt;从yg删除,其中yg_id = 2;

删除外键

mysql \ gt;显示创建表gz \\\\ G;

mysql \ gt;修改表gz删除外键gz_ibfk_1;

数据库的第三天

搜索路径

显示类似” secure_file_priv”的变量;//查看

目录:/var/lib/mysql-files/

数据库导入

在文件”目录名/文件名”中加载数据

进入表库名称。表名

由”分隔符”终止的字段

行以” \\\\ n”结尾;

注意:字段分隔符必须与文件
一致

表的字段类型和字段编号应与文件匹配

导入数据时指定文件的绝对路径。

#mkdir/myload

#chown mysql/myload

#vim/etc/my.cnf

[mysqld]

Secure_file_priv =”/myload”

#systemctl重新启动mysqld

mysql \ gt;系统cp/etc/passwd/myload/

//将passwd复制到myload目录

mysql \ gt;系统ls/myload

//检查myload目录

mysql \ gt;创建数据库db3;

mysql \ gt;使用db3;

mysql \ gt;创建表用户(

->名称char(50),密码char(1),

-> uid int,gid int,注释字符(150),

-> homedir char(150),shell char(100));

//创建用户表

mysql> desc用户;//查看表格结构

mysql \ gt;将文件”/myload/passwd”中的数据加载到表db3中。用户字段以”:”终止,行以” \\\\ n”终止;

mysql \ gt;更改表db3.user,首先添加id int主键auto_increment;

mysql \ gt;从用户选择*;

mysql \ gt;从id = 1的用户中选择*;

数据导出

选择命令进入outfile”目录名/文件名”;

//清楚显示多行数据

选择命令进入outfile”目录名/文件名”

由”分隔符”终止的字段; (任何符号都可以用作分隔符)

//用分隔符显示多行数据

选择命令进入outfile”目录名/文件名”

由”定界符”(任何符号都可以用作定界符)终止的字段

由”中断行”终止的行多条数据合并为一行

注意事项:

导出数据的行数由SQL查询确定。

表记录已导出,不包括字段名称。

自动创建文件以存储数据。

存储数据文件的唯一性。

管理表记录

插入

插入表名称值(字段值列表);//添加一条记录

在表名称值中插入(字段值列表),(字段值列表);

查询表格记录:

从库名称中选择字段1…,字段N。表名;

从库名称中选择字段1…,字段N。有条件的表名;

更新表记录:

批量更新:

更新库名称。表名设置字段名=值,字段名=值,…;

有条件的比赛更新:

更新库名称。表名称设置字段名称=值,字段名称=值,…,如有条件;

mysql \ gt;更新用户设置密码=” a”,评论=”学生”;

mysql \ gt;选择密码,用户评论;

mysql \ gt;更新用户设置的密码=” x”,注释=” root”,其中id = 1;

mysql \ gt;选择用户的ID,密码,评论;

删除表记录

从库名称中删除。表名所在的条件格式;

mysql \ gt;从db2.yg中删除;

mysql \ gt;从db3.user中删除,其中id \\ u> = 22;

匹配条件

基本匹配条件:(适用于选择/更新/删除)

数值比较:=! = \ Gt; \ gt; = \ lt; \ lt; =

mysql \ gt;从uid = 2的用户中选择*;

mysql \ gt;从用户那里选择名称,uid,gid,其中uid = gid;

mysql \ gt;从ID为\\ lt00的用户中选择; = 10;

字符比较:=! =

mysql \ gt;从用户那里选择名称,其中名称=” mysql”

mysql \ gt;选择名字,从用户那里shell shell! =”/bin/bash”;

范围内的比较:

在(in)中

mysql>从wg.t3选择*,其中shell

在(”/bin/bash”,”/sbin/nologin”)中;

不在(不在)中

从wg.t3选择*,其中shell

不在(”/bin/bash”,”/sbin/nologin”)中;

数字之间和数字之间(之间)

从wg.t3中选择*,其中id在1到10之间;

不同的字段名称

从wg.t3中选择不同的shell;

为null空不为空不为空

mysql \ gt;从用户那里选择id,name,其中name为null;

mysql \ gt;从用户那里选择id,name,其中name不为null;

逻辑匹配:或逻辑或,逻辑与!还是不合逻辑NOT

mysql>从用户
选择名称,uid,gid,shell

->其中name =” root”,uid = 100,gid = 100;

mysql \ gt;从用户那里选择名称,uid,gid,shell,其中name =” root”或uid = 100或gid = 100;

mysql \ gt;从用户那里选择名称,uid,其中uid在(1,10,25)中;

mysql \ gt;从用户
选择名称

->其中的名称(” mysql”,” bin”,” httpd”,” root”);

mysql \ gt;选择名称,用户
的外壳

-> shell不在其中(”/bin/bash”,”/sbin/nologin”);

mysql \ gt;从用户中选择*,其中id在10到20之间;

mysql \ gt;选择与用户不同的向导;

mysql \ gt;从用户中选择不同的外壳;

高级匹配条件:(适用于选择/更新/删除)

1.模糊查询,例如”通配符”

2._表示字符

3.%表示0n个字符

mysql \ gt;从用户中选择名称,其中

名称,例如” ____”;

mysql \ gt;从用户中选择名称,其中

名称,例如”%a%”;

mysql \ gt;从用户中选择名称,其中

名称,例如”%_____%”;

正则表达式:^以

<语义> 尾巴 一个 一个 [ ] Fan Wai 更多 一个 W h e r e 单词 段落 名字 r e g e x p 然后> 样式 m y s q l \ gt; 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 以.one []范围*多个|结尾。要么

字段名称regexp”正则表达式”

mysql \ gt;从用户那里选择名字

名称regexp” ^ a | t

“;//以a开头并以t结尾的常规

mysql \ gt;从用户中选择名称,其中

名称regexp‘ 1 “;//以任意范围abc开始的常规

mysql \ gt;从用户中选择名称,其中

名称regexp” ^…

<语义> ; / / 三个 单词 字符 的mathvariant =” normal”> 然后 m y s q l \ gt; 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 \ gt;从用户那里选择名字

名称regexp” ^.. “;//两位常客

四个操作:+-*/%balance()增加优先级

mysql \ gt;从用户那里选择名称,uid,其中uid%2 = 0;

mysql \ gt;更新用户集uid = uid +1,其中id \\ ult26; = 5;

mysql \ gt;从用户那里选择名称uid,其中id \ lt; = 5;

mysql \ gt;更新用户集uid = uid-1,其中id \ lt; = 5;

mysql \ gt;从用户那里选择名称uid,其中id \ lt; = 5;

mysql \ gt;显示数据库;

mysql \ gt;使用db3;

mysql \ gt;从用户
中选择名称,2019年年龄csnf

->其中name =” root”;

mysql \ gt;从用户选择名称,2019-age csnf;

mysql \ gt;从用户那里选择name,uid,gid,uid + gid he,(uid + gid)/2 pjz,其中name =” bin”;

汇总功能:

平均(字段名称)//统计字段平均值

总和(字段名称)//统计字段的总和

Min(字段名称)//统计字段的最小值

最大值(字段名称)//统计字段的最大值

Count(字段名称)//计算字段值的数量

mysql \ gt;从用户中选择计数();

mysql \ gt;从用户shell那里选择计数(名称)! =”/sbin/nologin”;

mysql \ gt;从用户选择avg(uid);

mysql \ gt;从用户中选择总和(uid);

mysql \ gt;从用户中选择min(uid);

mysql \ gt;从用户选择最大(uid);

mysql \ gt;从其中id为的用户中选择max(uid); = 10;

排序查询结果:

从库名称中选择字段。表名按字段名顺序排序[asc |描述];//asc升序desc降序

mysql \ gt;从用户那里选择名称uid,其中id \ lt; = 15个由uid排序;//默认升序排序

mysql \ gt;从用户那里选择名称uid,其中id \ lt; = 15个由uid desc排序;//查询结果按降序排序

查询结果分组:

从库名称中选择字段。表名按字段名分组;

mysql \ gt;从用户组中依次选择gid;

查询结果过滤:再次检查找到的记录

从库名称中选择字段。条件的表名

有条件的表达;

mysql \ gt;从用户那里选择名称,其中uid 5

->名称为” root”;

mysql \ gt;从用户那里选择名称,其中uid 5具有名称=” mysql”;

mysql \ gt;从用户那里选择名称,其中uid 5

->在(” mysql”,” shutdown”)中有名字;

限制查询结果中显示的行数:

从用户限制号中选择字段名称;

从用户限制编号1,编号2中选择字段名称;

mysql \ gt;从用户限制3中选择名称,uid,gid;

mysql \ gt;从用户限制3,3中选择名称,uid,gid;

MySQL管理工具

常见的mysql管理工具:

MySQL命令行跨平台

Mysql-workbench图形跨平台

Mysql前端图形窗口

Navicat图形窗口

phpMyAdmin浏览器跨平台

[root @ 1]#yum-y install httpd php php-mysql

[root @ 1]#systemctl启动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

数据库的第四天

用户授权:在数据库服务器上添加新的链接用户。

将库名称上的权限列表授予用户名@”客户端地址”

通过”密码”标识//具有授权选项的授权用户密码;//授权,可选

[root @ 1]#mysql-uroot-p123456

mysql \ gt;在db4上全部授予。 *到yaya @以” 123qqq…A”标识的”%”;

[root @ 2]#mysql-h192.168.4.50-uyaya-p123qqq…A;

mysql>选择用户(); 51个虚拟机

mysql>选择用户(); 50个虚拟机

授予授权:

权限列表:

  • 所有/所有权限

    -usage//没有权限

  • 选择,更新,插入//个人权限
  • 选择,更新(字段1,…字段N)//指定字段

    图书馆名称:

  • 。 //所有库中的所有表
  • 库名称。 *//一个库
  • 库名称。表名称//表

    客户地址:

    %//所有主机

    192.168.4。%//网段中的主机

    192.168.4.X///一台主机

    Localhost//数据库服务器本地

    mysql \ gt;授予上的所有权限。 到mydba @”%”标识

    通过带有授予选项的” 123qqq…A”;

    //所有表对所有表都具有完全权限

    mysql \ gt;将db3.user上的select授予admin @” 192.168.4。%”,由” 123qqq…A”标识

    //Grant授权对相应网段的相应权限

    mysql \ gt;将db3.user上的select授予admin2 @” localhost”(由” 123qqq…A”标识)

    //验证,更新,插入和删除本地db3库表

    选择用户();//显示登录用户名和客户地址

    显示赠款;//用户显示其访问权限

    显示对用户名@”客户地址”的授权

    //查看现有的授权用户权限

    设置密码=密码(”密码”)

    授权用户连接后更改连接密码

    为用户名@”客户地址”设置密码=密码(”密码”);//管理员重置授权用户链接的密码

    删除用户名@”客户地址”;//删除授权用户

    授权图书馆:

    用户表记录现有的授权用户和权限

    db表记录了现有授权用户对数据库的访问权限

    Tables_priv表记录了现有授权用户对该表的访问权限

    Columns_priv表记录现有授权用户对字段
    的访问权限

    撤消权限:

    撤消库名称上的权限列表。表名来自用户名@

    “客户地址”;

    mysql \ gt;显示admin2 @ localhost的授权;

    //检查admin2具有什么权限

    mysql \ gt;撤消更新,在db3上删除。 *来自admin2 @ localhost;

    //使用权限admin2撤消db3表的更新和删除权限

    mysql \ gt;显示admin2 @ localhost的授权;

    //检查吊销结果是否成功

    mysql \ gt;从mysql.db中选择*,其中user =” admin2″ \\\\ G;

    //检查表记录是否已更新

    根密码:

    重置根密码:

还原root密码:

1.停止mysql服务程序

2.跳过授权表并启动mysql服务程序

3.修改root密码

4.以正常方式重新启动mysql服务程序

[root @ mysql51]#systemctl停止mysqld.service

[root @ mysql51]#vim/etc/my.cnf

[mysqld]

跳过授予表

[root @ mysql51]#systemctl重新启动mysqld

[root @ mysql51]#mysql

mysql>更新mysql.user设置authentication_string =密码(” 123abc…A”)

->其中

->用户=”根”和主机=”本地主机”;

mysql \ gt;同花顺特权;

mysql>退出

重置root密码

[root @ mysql51] #mysqladmin-uroot-p

密码”新密码”

输入密码://输入旧密码

数据备份:

物理备份和恢复:

cp-r/var/lib/mysql备份目录/mysql.bak

scp-r/var/lib/mysql根@ @”客户端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停止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启动mysqld

[root @ mysql51]#systemctl状态mysqld.service

[root @ mysql51]#mysql-uroot-p123456

完整备份:

Mysqldump-uroot-p密码库名\\ ugt26;目录/xxx.sql

备份期间的库名称标识方法:

–All-databases或-A//所有库

-数据库名称//单个库

-数据库名称表名称//单个表

-B数据库1数据库2//多个库

[root @ mysql50]#mkdir/mybak//存储备份文件

[root @ mysql50]#mysqldump-uroot

-p123456-A \ gt;/mybak/all.sql//所有表的完整备份

[root @ mysql50]#mysqldump-uroot

-p123456 db2 \ gt;/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 \ gt;删除数据库db2;

mysql \ gt;创建数据库db2;//模拟错误删除

完全还原:

mysql-uroot-p密码[库名] \ lt;目录/xxx.sql

[root @ mysql51]#mysql-uroot-p123456 db2 \ lt;/root/db2.sql//db2表已完全还原

[root @ mysql50 mybak]#scp all.sql root@192.168.4.51:/根/

[root @ mysql51]#mysql-uroot-p123456 \ lt;/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重新启动mysqld

]#mysql-uroot-p123456

mysql \ gt;显示主人身份;

mysql \ gt;创建数据库db5;

mysql \ gt;创建表db5.t1(id);

mysql>插入db5.t1值(100);

mysql \ gt;插入db5.t1值(200);

mysql \ gt;插入db5.t1值(300);

mysql \ gt;显示主人身份;

mysql \ gt;从db5.t1选择*;

手动生成新的日志文件

1.systemctl重新启动mysqld

2.mysqldump-uroot-p123456

–刷新日志db5 \ gt;/root/db5.sql

3.mysql-uroot-p123456-e”刷新日志”

4.mysql>刷新日志

删除现有的日志文件

mysql \ gt;将主日志清除到” plj.000004″;

mysql \ gt;重置主机;

使用日志恢复数据

差异备份:

完全备份后,所有新生成的数据

分析日志:

查看日志的当前记录格式

mysql \ gt;显示类似” binlog_format”的变量;

三种录制方法:

1.Statement//报告模式

2.行//行模式

3.混合//混合模式

修改日志记录格式:

[mysqld]

binlog_format =”混合”

mysql \>显示类似” binlog_format”的变量

分析日志:

Mysqlbinlog [选项] binloh日志文件名

–开始日期时间=” yyyy-mm-dd hh:mm:ss”开始时间

–Stop-datetime =” yyyy-mm-dd hh:mm:ss”结束时间

-起始位置=数字起始偏移量

-停止位置=数字停止偏移量

恢复数据:

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

#cd/var/lib/mysql

#mysqlbinlog mysql-bin.000001 | mysql-uroot-p123456

数据库的第五天

MySQL备份工具

物理备份的缺点:

跨平台不佳

备份时间长。冗余备份。浪费存储空间

Mysqldump备份的缺点

效率低,备份和还原速度慢,锁定表

备份期间,数据插入和更新操作被阻止

1安装percona软件

innobackupex命令的常见选项

–User用户名–host主机名

–Password密码-没有时间轴的无时间戳

–Apply-log准备恢复数据–export导出表信息

-导入导入表空间-回写复制数据

-仅重做日志合并

完整备份和还原:

Innobackupex–user用户名–password密码备份目录名称–no-timestamp

[root @ host50] #innobackupex–user

root–password 123456/allbak–no-timestamp

[root @ host50]#ls/allbak

Innobackupex–apply-log目录名称//准备恢复数据

Innobackupex-复制目录名称//恢复数据

增量备份:

Innobackupex-用户名–password密码

–Incremental增量目录–incremental-basedir =

目录名称–no-timestamp

增量恢复:

Innobackupex–apply-log-仅重做目录名称

–Incremental-dir =目录名称//正在准备还原数据

Innobackupex-复制目录名称//恢复数据

首先必须有一个备份,通常是完整备份。在星期一进行完整备份,从星期二至星期日进行增量备份。

[root @ mysql50]#innobackupex–user root–password 123456/zhouyi–no-timestamp

//在星期一进行完整备份

[root @ mysql50]#ls/zhouyi

添加记录

[root @ mysql50]#mysql-uroot-p123456

mysql \ gt;插入db5.a值(301);

mysql \ gt;插入db5.a值(302);

mysql \ gt;插入db5.a值(908);

[root @ mysql50]#innobackupex–user root–password 123456–incremental/new1dir–incremental-basedir =/zhouyi–no-timestamp

//在星期二进行增量备份

[root @ mysql50]#ls/new1dir

添加记录

mysql \ gt;插入db5.a值(401);

mysql \ gt;插入db5.a值(888);

[root @ mysql50]#innobackupex–user root–password 123456–incremental/new2dir–incremental-basedir =/new1dir–no-timestamp

//在星期三进行增量备份

[root @ mysql50]#ls/new2dir

恢复数据

完全还原:

[root @ mysql51]#systemctl停止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启动mysqld

[root @ mysql51]#mysql-uroot-p123456

删除单张纸:

删除表空间

mysql \ gt;修改表db5.b丢弃表空间;

导出表信息

]#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 \ gt;更改表db5.b导入表空间;

删除数据库目录下的表信息文件

mysql>系统rm-rf/var/lib/mysql/db5/b.cfg

mysql>系统rm-rf/var/lib/mysql/db5/b.exp

查看表记录

mysql \ gt;从db5.b中选择*;

一日高级数据库

主从同步:

实现自动数据同步的服务结构

主服务器:接受客户端访问链接

从服务器:自动同步主服务器数据

主从同步原理:

主服务器主

启用Binlog日志记录

从服务器从属

设置server_id

确保数据与主服务器一致

指定主库信息

启动从属程序

始终读取状态信息

配置主服务器

#vim/etc/my.cnf

[mysqld]

Log_bin =日志名称启用binlog日志记录

Server_id = id值指定服务器ID号

#sysetmctl重新启动mysqld

授权用户:

mysql \ gt;授予上的复制从属。 到Repluser

@”%”,以” 123qqq…A”标识;

51:

] #mysqldump-uroot-p123456–master-data db5 \ gt;/root/db5.sql

] #scp/root/db5.sql root@192.168.4.52:/根/

52:

mysql \ gt;创建数据库db5;

]#mysql-uroot-p123qqq…db5 \ lt;/root/db5.sql

mysql \ gt;从db5.a中选择count();

mysql \ gt;从db5.b中选择count();

]#grep master51/root/db5.sql

mysql \>将master更改为master_host =” 192.168.4.51″,

master_user =” repluser”,

master_password =” 123qqq…A”,

master_log_file =” master51.000001″,master_log_pos = 441;

mysql \ gt;启动奴隶;

mysql \ gt;显示从站状态\\\\ G;

Master_Host:192.168.4.51

Slave_IO_Running:是

Slave_SQL_Running:是

Slave_IO_Running:正在连接

Last_IO_Error:连接至主服务器” repluser@192.168.4.51:3306″时出错-重试时间:60次重试:49

Slave_SQL_Running:否

Last_SQL_Error:

停止从属;

更改主数据以选择项目=值,选择项目=值;

启动奴隶;

显示从站状态\\\\ G;

3验证配置

4个主从同步扩展

配置一个主服务器和多个从属服务器

配置主从服务器

[root @ 53]#mysql-uroot-p123qqq…A-e’将全部授予gamedb。 *到yaya88 @”%”由” 123qqq…A”’

标识

[root @ 50]#mysql-h192.168.4.53-uyaya88-p123qqq…A

mysql \ gt;创建数据库gamedb;

mysql \ gt;创建表gamedb.t1(id int);

mysql \ gt;插入gamedb.t1值(100);

mysql \ gt;从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’

 

从服务器修改为半同步复制模式

1命令行加载模块

mysql \ gt;显示诸如” have_dynamic_loading”之类的变量;查看

mysql \ gt;安装插件rpl_semi_sync_master SONAME” semisync_master.so”;

mysql \ gt;安装插件rpl_semi_sync_slave SONAME” semisync_slave.so”;

mysql \ gt;从information_schema.plugins中选择plugin_name,plugin_status,其中plugin_name如”%semi%”;

2命令行启用模块

mysql \ gt;设置全局rpl_semi_sync_slave_enabled = 1;

mysql \ gt;设置全局rpl_semi_sync_master_enabled = 1;

mysql \ gt;显示类似” 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写请求后,将其移交给主服务器进行处理

收到sql写请求时,将其交给从属服务器进行处理

施工思路:

1.确保主从结构

2.部署mysql代理服务器

打包,修改配置文件,启动服务

3.测试配置

客户端链接代理服务访问数据

最大规模服务:

部署maxscale服务:

[root @ mysql57]#systemctl停止mysqld.service

[root @ mysql57] #systemctl禁用mysqld

修改配置/etc/maxscale.cnf

[maxscale]//定义线程数

线程= 1

[server1]//定义数据库服务器

类型=服务器

地址= 192.168.4.51//主主机IP地址

端口= 3306

协议= mysqlbackend

[server2]

类型=服务器

地址= 192.168.4.52//从属主机IP地址

端口= 3306

协议= mysqlbackend

[MySQL Monitor]//定义要监视的数据库节点

类型=监视器

模块= mysqlmon

服务器=服务器1,服务器2//主数据库和从数据库的主机名

user = maxscalemon//监视用户(自定义)

passwd = 123qqq…A

monitor_interval = 10000

[读写服务]//定义用于读取和写入的单独的数据库节点

类型=服务

路由器= readwritesplit

服务器=服务器1,服务器2//主从数据库的主机名

user = maxscalerouter//路由用户(自定义)

passwd = 123qqq…A//密码

max_slave_connections = 100%

[读写侦听器]//定义读写分离服务的端口号

类型=监听器

服务=读写服务

协议= MySQLClient

端口= 4006

[MaxAdmin Listener]//定义管理服务端口号

类型=监听器

服务= MaxAdmin服务

协议= maxscaled

套接字=默认

端口= 4016

部署maxscale服务

在主/从服务器上创建授权用户

mysql \ gt;授予复制从属,上的复制客户端。 表示由” 123qqq…A”标识的maxscalemon @”%”

//创建监视用户

mysql \ gt;授予对mysql的选择。 *到以” 123qqq…A”标识的maxscalerouter @”%”;//创建路由用户

启动服务:

#maxscale-f/etc/maxscale.cnf

#netstat-anput | grep maxscale

#kill-9 PID号

测试配置:

代理服务器访问:

#maxadmin-uadmin-pmariadb-P端口列表服务器

//查看服务器列表

客户端链接代理访问数据

#mysql-h服务地址-P端口-u用户名-p密码

MySQL多实例:

配置多个实例:

修改目录名称:

MV数据目录/usr/local/mysql

#yum-y安装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解析错误:预期为” EOF”,在位置6获得”#”:PATH

#? vim/etc/bashrc…路径

主要配置文件/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//数据库目录,手动创建

套接字=/dir1/mysqld1.sock

//指定袜子文件的路径和名称

pid-file =/dir1/mysqld1.pid//处理pid号文件位置

log-error =/dir1/mysqld1.err//错误日志位置

启动服务

Mysqld_multi启动实例编号

停止服务

Mysqld_multi–user =根–password =密码停止实例编号

连接多个实例

Mysql-uroot-p”密码”-S sock文件

高级数据库的第三天

[root @ mysql56]#tar-xf Mycat-server-1.6-

RELEASE-20161028204710-linux.tar.gz

[root @ mysql56]#mv mycat//usr/本地/

[root @ mysql56]#ls/usr/local/mycat/

子库表:

水平分割,垂直分割,

水平和垂直拆分

分片规则:

Mycat支持10条分片规则

1.枚举方法:sharding-by-intfile

2.固定分片:rule1

3.范围约定:自动分片长

4.调制方式:mod-long

5.日期列分区:按日期分片

6.通配符模式:按模式分片

7.ASCII码模数通配符:按前缀分片模式

8.程序指定:按子字符串分片

9.字符串拆分哈希分析,按字符串哈希分片

10.杂项一致性哈希分片

部署mycat服务:

#yum-y安装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定义用户server.xml
客户端连接到mycat服务的位置

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包

日志//mycat启动日志和运行日志

Wrapper.log//mycat服务启动日志

Mycat.log//执行SQL脚本后记录错误内容

**重要的配置文件描述:

Server.xml//设置连接帐户和逻辑库

Schema.xml//配置数据分片

Rule.xml//分片规则

其他文件//函数调用文件

创建连接的用户:

/usr/local/mycat/conf/server.xml

定义客户端mycat服务的用户

配置数据分片:

定义分片表

…//定义片段信息

…….

//定义表

名称//逻辑库名称或逻辑表名称dataNode//指定数据节点名称规则//指定使用的分片规则

类型=全局//数据未存储在切片中

定义数据节点

\ lt; dataNode选项=值,…/\\ gt;//定义数据节点

名称//数据节点名称

数据主机//数据库服务器主机名

数据库//数据库名称

\ lt; dataNode名称=” dn1″ datahost =” mysql53″数据库=” db1″

\ lt; dataNode名称=” dn2″ datahost =” mysql54″数据库=” db2″

\ lt; dataNode名称=” dn3″ datahost =” mysql55″数据库=” 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

日志箱= master51

#systemctl重新启动mysqld

mysql \ gt;授予上的复制从属。 到由” 123qqq…A”标识的@”%”

mysql \ gt;显示主人身份;

52.53来自

#vim/etc/my.cnf

[mysqld]

Server_id = 52

#systemctl重新启动mysqld

mysql \ gt;将母版更改为

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安装mha4mysql-

节点0.56-0.el6.noarch.rpm

管理群集命令:

#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

[服务器默认设置]//管理服务的默认配置

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服务端口

 

创建故障转移脚本

[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

我的$ vip =” 192.168.6.200/24″;//定义VIP地址

我的$键=” 1″;//定义地址号码

我的

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:

/span> / s b i n / i f c o n f i g e t h 0 : key $ vip”;

//绑定VIP地址

我的

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:

i p = / s b i n / i f c o n f i g e t h 0 : 按下”;

//释放VIP地址

配置数据库服务器

在当前主服务器上手动部署VIP地址51

host51]#ifconfig eth0:1 192.168.6.200/24

host51]#ifconfig eth0:1

在所有数据库服务器上安装mha_node软件包

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

成为所有数据库服务器上的授权用户

mysql \ gt;授予上的所有权限。 根@”%”

用” 123qqq…A”标识;//监视用户

mysql \ gt;授予上的复制从属。 以标识@的”%”作为

按” 123qqq…A”;

配置主服务器并修改数据库服务操作参数

[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//启用从模块

relay_log_purge = 0//禁止自动删除中间日志文件

[root @ host51]#systemctl重新启动mysqld

备用服务器52…53与51保持同步

启动管理服务

[root @ mgm57]#masterha_manager–conf =/etc/mha/app1.cnf–remove_dead_master_conf–ignore_last_failover

 

高级数据库的第五天

MHA

环境准备:安装相关软件perl ssh无需密码即可登录一个主控和多个从属

配置管理主机:安装软件,修改app1.cnf,创建故障转移脚本,指定VIP地址

配置数据库服务器:安装软件用户授权主服务器手动配置VIP地址

启动管理服务:测试ssh配置测试主从同步配置启动服务

测试高可用性:当前主服务器已关闭,客户端仍可以访问VIP地址以连接到数据库服务

将关闭的服务器添加到群集:

使用一致的数据启动服务将主机添加到app1.cnf文件中

测试配置启动管理服务

PXC群集

环境准备:在3台服务器上安装pxc软件

[root @ pxcnode73]#cd PXC/

#yum-y安装percona-xtrabackup-

24-2.4.13-1.el7.x86_64.rpm

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-集群

//群集名称,几个群集必须相同

Wsrep_node_name = pxcnode71

//本地主机名更改为主机名

Wsrep_sst_auth =” sstuser:123qqq…A”

//sst数据同步授权用户,可以修改哪些授权用户和密码

[mysqld]

Server-id = 1//服务器ID不允许重复

#vim/etc/mysqld_safe.cnf//此配置文件可以保留默认配置

#systemctl start mysql@bootstrap.service/启动集群服务

分别修改三个服务器的配置文件

mysqld.cnf//数据库服务操作参数配置文件

Wsrep.cnf//pxc群集配置文件

Mysqld_safe.cnf//percona服务器配置文件

启动服务:

#systemctl启动mysql@bootstrap.service

mysql \>更改由” 123456″标识的用户root @ localhost;

mysql \ gt;授予重新加载,锁定表,复制客户端,在上进行处理。 到sstuser @” localhost”(由” 123qqq…A”标识);

mysql \ gt;显示数据库;

72和73分别启动数据库服务

#systemctl启动mysql

#netstat-anput | grep:3306

#netstat-anput | grep:4567

管理员登录以查看状态:

显示状态,例如”%wsrep%”;

客户端访问群集访问数据:

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启动mysql

]#netstat-utnlp | grep:3306

]#netstat-utnlp | grep:4567

 

mysql配置存储引擎:

列出可用的存储引擎:

mysql \ gt;显示引擎;

格式:alter table指示引擎=存储引擎名称;

mysql \ gt;使用测试;

mysql \ gt;创建表intab(id int(4))engine = innoDB;

mysql \ gt;显示创建表intab \\\\ G;

设置数据库服务(/etc/my.cnf)使用的存储引擎

#vim/etc/my.cnf

[mysqld]

默认存储引擎=存储引擎

#systemctl重新启动mysqld

Myisam存储引擎:支持表级锁,不支持事务。事务回滚。外键

表文件:表名.frm//表结构表名.MYI//索引表名.MYD//数据

Innodb存储引擎:仅支持事务级别的行级锁定。事务回滚。外部检查

表文件:表名:frm//表结构表名.ibd

事务日志文件:ibdata1 ib_logfile0 ib_logfile1

Mysql锁定机制

锁粒度

表级锁定:锁定整个表

行级锁定:仅单独锁定访问的行

锁类型

读取锁定:支持并发读取

写锁:这是排他锁。在锁定期间,其他线程无法读取或写入表。

查看当前锁定状态

显示状态,如” table_lock%”;

交易特征(ACID):

原子:原子性

一致性:一致性

隔离:隔离

耐久性:耐久性

mysql \ gt;显示变量,例如” autocommit”;//检查提交状态

mysql \ gt;设置自动提交=关闭

mysql \ gt;回滚//数据回滚(还原已删除的内容=撤消)

mysql \ gt;承诺;//提交数据(确保撤消生成)

数据库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

#https://blog.csdn.net/hchaolinux/article/details/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

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

127.0.0.1:6379\\u0026gt; ping

傍\\\ //PONG表示服务正常

127.0.0.1:6379> set name bob//保存数据

127.0.0.1:6379>获取名称//获取数据

常用命令:

设置名称数据//存储1个数据

Mset名称列表//存储多个数据

获取名称//获取单个数据

Mget//获取多个数据

选择数据库编号0-15//切换库

键*//显示所有数据

钥匙一个?//显示指定的名称

存在名称//测试名称是否存在

Ttl名称//查看密钥生存时间

类型名称//查看名称类型

移动名称库编号//将名称移动到指定的库

过期名称编号//设置名称的有效时间

Del name//删除指定的名称

Flushall//删除所有名称

Flushdb//删除所有库的所有名称

保存//将所有名称保存到硬盘

关机//停止服务

配置分类:

常用配置:

优化设置:

Maxmemory//最大内存

Maxmemory-policy//定义使用策略

Maxmemory-samples//选择模块数

(适用于LRU和TTL策略)

连接密码:

#vim/etc/redis/6379.conf

Requirepass 123456////请勿在未更改密码的情况下使用

绑定192.168.4.50////redis访问-h IP地址

端口6350////Redis访问-p设置端口

示例:

#redis-cli-h192.168.4.50-p 6350//连接服务

192.168.4.50:6350\\u0026gt;auth123456//输入密码

确定

192.168.4.50:6350\\u0026gt; ping

#redis-cli-h 192.168.4.50-p 6350-a 123456

//设置密码的连接方法

#redis-cli-h 192.168.4.50-p 6350关闭

//没有密码就停止服务(使用密码加-a 123456关机)

部署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//输入源代码目录

] #https://blog.csdn.net/hchaolinux/article/details/configure//配置

] #make \ \ make install

] #yum-y install php-fpm//安装php-fpm

]#vim +65/usr/local/nginx/conf/nginx.con

]#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

]#cd phpredis-2.2.4/

]#phpize//生成配置文件php-config并配置命令

]#https://blog.csdn.net/hchaolinux/article/details/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

\ lt ;的PHP

$ redis =新的redis();

$ redis-\\ u>连接(” 192.168.4.50″,” 6350″);

$ redis-\\ u> auth(” 123456″);

$ redis-\\ u>设置(” linux”,” redhat”);

回声$ redis-\获得(” Linux”);

? \ gt;

脚本访问网站

] #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>键*//查看变量

第二天数据库NOSQL

Redis-trib脚本用法:

#redis-trib.rb \ lt;命令\ \ lt;选项 \ lt;参数>

创建创建群集检查检查群集

信息查看群集信息重新分片

Del-node删除主机add-node–slave添加从属主机

添加节点添加主控主机

重新平衡均匀分配哈希槽

创建集群:

1.部署管理主机:

[root @ mgm57] #yum-y安装rubygems

[root @ mgm57]#哪个宝石

[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帮助

//查看命令帮助

3.启动服务器192.168.4.51的群集功能:

[root @ redisA]#/etc/init.d/redis_6379停止

//停止redis服务

停止…

等待Redis关闭…

Redis已停止

[root @ redisA]#vim/etc/redis/6379.conf

//修改配置文件

绑定192.168.4.51//修改ip

端口6351//修改端口(可选配置)

cluster-enabled是//启用集群功能

群集配置文件节点6379.conf

//用于存储集群信息的配置文件

群集节点超时5000

//群集节点通信超时时间

[root @ redisA]#vim +43/etc/init.d/redis_6379

$ CLIEXEC-h 192.168.4.51-p 6351关闭

//更改脚本下的输入方法(需要设置不同的端口)

[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

我可以设置以上配置吗? (输入”是”以接受):是//同意上述配置

[确定]所有节点都同意插槽配置。

检查是否有空插槽…

检查插槽覆盖范围…

[确定]覆盖所有16384个插槽。

//提示已分配16384个插槽

查看群集信息:

1)查看管理主机上的群集信息

[root @ mgm57]#redis-trib.rb信息192.168.4.51:6351

//查看集群信息

2)在管理主机上检测群集

[root @ mgm57]#redis-trib.rb检查192.168.4.51:6351//检查群集

3)在任何Redis服务器上查看集群信息

[root @ redisA]#redis-cli-h 192.168.4.51-p 6351

192.168.4.51:6351>群集信息//查看群集信息

192.168.4.51:6351>群集节点////查看群集节点信息

访问集群

1)客户端连接到任何服务器以存储数据

[root @ client50]#redis-cli-c-h 192.168.4.51-p 6351//连接到服务器51

192.168.4.51:6351\\u0026gt;

192.168.4.51:6351>设置x 100//存储

->重定向到位于192.168.4.53:6353的插槽[16287]//提示要存储在53个主机中

192.168.4.53:6353> set y 200//存储

192.168.4.53:6353>键*//查看所有

192.168.4.53:6353> set z 300//存储

->重定向到位于192.168.4.52:6352的插槽[8157]//提示存储在52个主机中

4.添加服务器

1)打包,初始化,启用集群功能,重新启动服务

] #yum-y安装gcc

] #tar-zxvf redis-4.0.8.tar.gz

] #cd redis-4.0.8/

] #make \ \ make install

] #https://blog.csdn.net/hchaolinux/article/details/utils/install_server.sh

]#/etc/init.d/redis_6379停止

vim/etc/redis/6379.conf

绑定192.168.4.58

端口6358

启用群集的是//启用群集

群集配置文件节点6379.conf

//存储集群信息文件

群集节点超时5000

]#vim +43/etc/init.d/redis_6379

$ CLIEXEC-h 192.168.4.58-p 6358关闭

:wq

]#/etc/init.d/redis_6379开始

]#netstat-utnlp | grep redis-server

2)将主角色主机添加到群集

[root @ mgm57]#redis-trib.rb添加节点192.168.4.58:6358 192.168.4.53:6353

//执行添加命令

[确定]正确添加了新节点。//提示添加完成的

在管理主机上,查看集群的新消息

[root @ mgm57]#redis-trib.rb info 192.168.4.53:6353//查看集群信息

[确定] 4个主机中的8个键。

平均每个插槽0.00个键。

3)在管理主机上,检查群集

[root @ mgm57]#redis-trib.rb检查192.168。

4.53:6353//检测群集

[确定]所有节点都同意插槽配置。

检查是否有空插槽…

检查插槽覆盖范围…

[确定]覆盖所有16384个插槽。

4)管理主机并重新分配哈希槽

[root @ mgm57]#redis-trib.rb reshard 192.168.4.53:6353

您要移动多少个插槽(从1到16384)? 4096//将4096个哈希槽拉出到主机192.168.4.58(平均)

什么是接收VING节点ID? C5e0da48f335c46a2ec199faa99b830f537dd8a0

//主机192.168.4.58的ID值

源节点1:全部

//从当前所有主服务器获取哈希槽

您是否要继续执行建议的分片计划(是/否)?是//同意上述配置

5.将从属角色主机添加到群集

1)部署新的Redis服务器4.59

] #yum-y安装gcc

] #tar-zxvf redis-4.0.8.tar.gz

] #cd redis-4.0.8/

] #make \ \ make install

] #https://blog.csdn.net/hchaolinux/article/details/utils/install_server.sh

]#/etc/init.d/redis_6379停止

vim/etc/redis/6379.conf

绑定192.168.4.59

端口6359

启用群集的是//启用群集

cluster-config-file nodes-6379.conf//存储集群信息文件

群集节点超时5000

]#vim +43/etc/init.d/redis_6379

$ CLIEXEC-h 192.168.4.59-p 6359关闭

]#/etc/init.d/redis_6379开始

]#netstat-utnlp | grep redis-server

在管理主机中,添加从属角色主机

[root @ mgm57]#redis-trib.rb add-node–slave 192.168.4.59:6359 192.168.4.51:6351//执行添加命令

将节点配置为192.168.4.58:6358的副本。//提示添加

[确定]正确添加了新节点。

2)在管理主机上,查看新的群集新闻

[root @ mgm57]#redis-trib.rb info 192.168.4.51:6351//查看信息

删除服务器

1)删除从属服务器,服务器上没有插槽,只需直接将其删除

[root @ mgm57]#redis-trib.rb del-node 192.168.4.51:6351 f6649ea99b2f01faca26217691222c17a3854381//执行删除命令

2)删除主服务器占用的哈希槽

[root @ mgm57]#redis-trib.rb reshard 192.168.4.53:6353

您要移动多少个插槽(从1到16384)? 4096//删除4096个号码槽

接收节点ID是什么? Bc5c4e082a5a3391b634cf433a6486c867cfc44b

//要移动到的ID是目标主机(在这里您可以将主ID哈希槽随机写入该ip

源节点1:c5e0da48f335c46a2ec199faa99b830f537dd8a0

//来自谁的主机是源主机(在此处输入ID为4.58////删除主机号

源节点2:完成//设置了第二个主机号

数据库NOSQL的第三天

主从复制:一个主机一个从机,一个主机多个从机,主从机

配置主从复制:

配置从属库:redis服务运行后,默认为主服务器

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

角色:从服务器//从服务器

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

奴隶192.168.4.51 6351

//可以将其添加到文件末尾,也可以在原始配置项中进行修改

配置要验证的主从复制:

配置母版

#sed-n’501p’/etc/redis/6379.conf

需求通行证123456

配置从属

#vim +289/etc/redis/6379.conf

Masterauth 123456

Sentinel Service:发现主服务器已关闭后,从服务器将升级为主服务器

主要配置文件sentinel.conf

配置Sentinel服务:

#vim/etc/sentinel.conf//新的主配置文件

前哨监控服务器51 192.168.4.52 6352 1

绑定0.0.0.0//服务地址

端口26379//Sentinel服务端口

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////恢复备份数据

优化设置:

数据从内存保存到硬盘的频率

保存900 1//15分钟和1个密钥更改

保存300 10//5分钟,更改10个键

保存60 10000//1分钟,更改10000个键

手动保存:

保存//块写入以保存磁盘

Bgsave//请勿阻止写入和保存

AOF

AOF:追加到写入操作文件,记录redis服务写入操作,新的写入操作追加到文件末尾。默认情况下未启用,请使用cat查看文件。

\ gt; config set appendonly yes//启用

\ gt; config get appendonly//检查状态

\ gt; 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开始

优化配置:

定义文件名:

Appendonly是//启用aof,默认为否

Appendfilename” appendonly.aof”//指定文件名

AOF文件记录写操作方法

Appendfsync始终////不时记录,并完成磁盘同步

Appendfsync everysec//每秒记录1次并完成磁盘同步

Appendfsync否//写aof,不执行磁盘同步

修复AOF文件:将文件还原到上次的正确操作

#redis-check-aof–fix appendonly.aof

继续吗?:是

(启动此服务)

AOF的优势:可以灵活设置持久性方法。如果发生意外停机,则可能只会丢失1秒的数据

AOF的缺点:持久文件的大小通常大于RDB。 fsync策略的速度可能比RDB慢

数据类型分类

数据类型:字符串,列表列表,哈希表

字符串

设置键值

清单清单

哈希表


  1. abc

相关推荐

 
QQ在线咨询
售前咨询热线
QQ1922638