MySQL烂笔头记忆3

6.2.    Mysql主服务器配置
第一步:修改my.conf文件:
在[mysqld]段下添加:
binlog-do-db=db1
binlog-ignore-db=mysql
#启用二进制日志
log-bin=mysql-bin
#服务器唯一ID,一般取IP最后一段
server-id=134
第二步:重启mysql服务
service mysqld restart
第三步:建立帐户并授权slave
mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; 
#一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

刷新权限
mysql> FLUSH PRIVILEGES;

查看mysql现在有哪些用户
mysql>select user,host from mysql.user;

第四步:查询master的状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      120 | db1          | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set




6.3.    Mysql从服务器配置
第一步:修改my.conf文件
[mysqld]
server-id=166

第二步:配置从服务器
mysql>change master to master_host='192.168.25.134',master_port=3306,master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120 

注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。

第二步:启动从服务器复制功能
Mysql>start slave; 

第三步:检查从服务器复制功能状态:
mysql> show slave status

……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

错误处理:
如果出现此错误:
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
因为是mysql是克隆的系统所以mysql的uuid是一样的,所以需要修改。
解决方法:
删除/var/lib/mysql/auto.cnf文件,重新启动服务。

根据已有表创建新表:create table + 表名 + like + [数据库名.]表名;
数据复制:insert into + 表名 + select + 字段列表/* + from + 表名;

select + [all/distinct(去重)] + 字段列表[字段别名]/* + from + 数据源 +

后加选择:[where 条件] +[group by 子句]+[order by 子句]+ [limit 数量]+having

cout():统计分组后,每组的总记录数;
max():统计每组中的最大值;
min():统计每组中的最小值;
avg():统计每组中的平均值;
sum():统计每组中的数据总和。

在 SQL 中将连接查询分为四类,分别为内连接、外链接、自然连接和交叉连接。
内连:左表 + [inner] + join + 右表 + on + 左表.字段 = 右表.字段;
内连接的时候可以使用where关键字代替on,但不建议这么做,因为where没有on的效率高。

外连接:left\right join,以某张表为主表,取出里面的所有记录,然后让主表中的每条记录都与另外一张表进行连接,不管能否匹配成功,其最终结果都会保留,匹配成功,则正确保留;匹配失败,则将另外一张表的字段都置为NULL.
外连接:左表 + left\right + join + 右表 + on + 左表.字段 = 右表.字段;
left join:左外连接(左连接),以左表为主表;
right join:右外连接(右连接),以右表为主表。

自然连接:nature join,自然连接其实就是自动匹配连接条件,系统以两表中同名字段作为匹配条件,如果两表有多个同名字段,那就都作为匹配条件。在这里,自然连接可以分为自然内连接和自然外连接。
左表 + nature + join + 右表;
自然连接自动使用同名字段作为连接条件,而且在连接完成之后合并同名字段。
自然外连接
基本语法:左表 + nature + left/right + join + 右表;

创建表之后,增加外键
基本语法:alter table + 表名 + add[constraint + 外键名字] + foreign key(外键字段) + references + 外部表名(主键字段);

alter table + 表名 + drop foreign key + 外键名字;

联合查询:
select 语句1 + union + [union选项] + select 语句2

联合查询,字段数相同,类型不同,联合查询只保留了第一张表的字段,而不保留第二张表的字段。
联合查询中使order by生效,必须将其与limit搭配使用,而limit的限定数,我们设置为一个非常大的数即可。语句要单独()来。

列子查询
select * from 表名where c_id in (select id from 表名2);
select * from 表名 where c_id = any (select id from 表名2);
select * from 表名 where c_id = some (select id from 表名2);
select * from 表名 where c_id = all (select id from 表名2);

undefined:未定义(默认的),这不是一种实际使用的算法,而是一个“推卸责任”的算法。在未定义的情况下,告诉系统,视图没有定义算法,请自己选择。
temptable:临时表算法,系统先执行视图的select语句,后执行外部查询语句。
merge:合并算法,系统先将视图对应的select语句与外部查询视图的select语句进行合并,然后再执行。此算法比较高效,且在未定义算法的时候,经常会默认选择此算法。

create + [algorithm = temptable/merge/undefined] + view + 视图名 + as + select语句;
drop view + 视图名;
select * from 视图名;
可以认为:创建视图,就是给一条select语句起别名,或者说是封装select语句。
视图最重要的功能就是查询,其他如增、删、改的操作一般不会使用,也不建议通过视图来操作基表的数据。

视图意义
视图可以节省 SQL 语句,将一条复杂的查询语句用视图来进行封装,以后可以直接对视图进行操作;
数据安全,视图操作主要是针对查询的,如果对视图结构进行处理,例如删除,并不会影响基表的数据;
视图往往在大型项目中使用,而且是多系统使用,可以对外提供有用的数据,但是隐藏关键(或无用)的数据;
视图是对外提供友好型的,不同的视图提供不同的数据,就如专门对外设计的一样;
视图可以更好(或者说,容易)的进行权限控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值